use of fi.otavanopisto.pyramus.koski.OppiaineenSuoritusWithSubject in project pyramus by otavanopisto.
the class KoskiLukioStudentHandler method assessmentsToModel.
private Set<LukionOppiaineenSuoritus> assessmentsToModel(KoskiStudyProgrammeHandler handler, OpiskelijanOPS ops, Student student, EducationType studentEducationType, StudentSubjectSelections studentSubjects, boolean calculateMeanGrades) {
Collection<CreditStub> credits = listCredits(student, true, true, ops, credit -> matchingCurriculumFilter(student, credit));
Set<LukionOppiaineenSuoritus> results = new HashSet<>();
Map<String, OppiaineenSuoritusWithSubject<LukionOppiaineenSuoritus>> map = new HashMap<>();
Set<OppiaineenSuoritusWithSubject<LukionOppiaineenSuoritus>> accomplished = new HashSet<>();
for (CreditStub credit : credits) {
OppiaineenSuoritusWithSubject<LukionOppiaineenSuoritus> oppiaineenSuoritusWSubject = getSubject(student, ops, studentEducationType, credit.getSubject(), studentSubjects, map);
collectAccomplishedMarks(credit.getSubject(), oppiaineenSuoritusWSubject, studentSubjects, accomplished);
if (settings.isReportedCredit(credit) && oppiaineenSuoritusWSubject != null) {
LukionKurssinSuoritus kurssiSuoritus = createKurssiSuoritus(student, ops, credit);
if (kurssiSuoritus != null) {
oppiaineenSuoritusWSubject.getOppiaineenSuoritus().addOsasuoritus(kurssiSuoritus);
} else {
logger.warning(String.format("Course %s not reported for student %d due to unresolvable credit.", credit.getCourseCode(), student.getId()));
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.UNREPORTED_CREDIT, new Date(), credit.getCourseCode());
}
}
}
for (OppiaineenSuoritusWithSubject<LukionOppiaineenSuoritus> lukionOppiaineenSuoritusWSubject : map.values()) {
LukionOppiaineenSuoritus lukionOppiaineenSuoritus = lukionOppiaineenSuoritusWSubject.getOppiaineenSuoritus();
if (CollectionUtils.isEmpty(lukionOppiaineenSuoritus.getOsasuoritukset())) {
// Skip empty subjects
continue;
}
// Valmiille oppiaineelle on rustattava kokonaisarviointi
if (calculateMeanGrades) {
ArviointiasteikkoYleissivistava aineKeskiarvo = accomplished.contains(lukionOppiaineenSuoritusWSubject) ? ArviointiasteikkoYleissivistava.GRADE_S : getSubjectMeanGrade(student, lukionOppiaineenSuoritusWSubject.getSubject(), lukionOppiaineenSuoritus);
if (aineKeskiarvo != null) {
LukionOppiaineenArviointi arviointi = new LukionOppiaineenArviointi(aineKeskiarvo, student.getStudyEndDate());
lukionOppiaineenSuoritus.addArviointi(arviointi);
} else {
logger.warning(String.format("Unresolved mean grade for person %d.", student.getPerson().getId()));
}
}
results.add(lukionOppiaineenSuoritus);
}
return results;
}
use of fi.otavanopisto.pyramus.koski.OppiaineenSuoritusWithSubject in project pyramus by otavanopisto.
the class KoskiAPAStudentHandler method assessmentsToModel.
private void assessmentsToModel(OpiskelijanOPS ops, Student student, EducationType studentEducationType, StudentSubjectSelections studentSubjects, APASuoritus oppimaaranSuoritus, boolean calculateMeanGrades) {
Collection<CreditStub> credits = listCredits(student, true, true, ops, credit -> matchingCurriculumFilter(student, credit));
Map<String, OppiaineenSuoritusWithSubject<APAOppiaineenSuoritus>> map = new HashMap<>();
Set<OppiaineenSuoritusWithSubject<APAOppiaineenSuoritus>> accomplished = new HashSet<>();
for (CreditStub credit : credits) {
OppiaineenSuoritusWithSubject<APAOppiaineenSuoritus> oppiaineenSuoritusWSubject = getSubject(student, studentEducationType, studentSubjects, credit.getSubject(), map);
collectAccomplishedMarks(credit.getSubject(), oppiaineenSuoritusWSubject, studentSubjects, accomplished);
if (settings.isReportedCredit(credit) && oppiaineenSuoritusWSubject != null) {
APAKurssinSuoritus kurssiSuoritus = createKurssiSuoritus(ops, credit);
if (kurssiSuoritus != null) {
oppiaineenSuoritusWSubject.getOppiaineenSuoritus().addOsasuoritus(kurssiSuoritus);
} else {
logger.warning(String.format("Course %s not reported for student %d due to unresolvable credit.", credit.getCourseCode(), student.getId()));
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.UNREPORTED_CREDIT, new Date(), credit.getCourseCode());
}
}
}
for (OppiaineenSuoritusWithSubject<APAOppiaineenSuoritus> oppiaineenSuoritusWSubject : map.values()) {
APAOppiaineenSuoritus oppiaineenSuoritus = oppiaineenSuoritusWSubject.getOppiaineenSuoritus();
if (CollectionUtils.isEmpty(oppiaineenSuoritus.getOsasuoritukset())) {
// Skip empty subjects
continue;
}
// Valmiille oppiaineelle on rustattava kokonaisarviointi
if (calculateMeanGrades) {
ArviointiasteikkoYleissivistava aineKeskiarvo = accomplished.contains(oppiaineenSuoritusWSubject) ? ArviointiasteikkoYleissivistava.GRADE_S : getSubjectMeanGrade(student, oppiaineenSuoritusWSubject.getSubject(), oppiaineenSuoritus);
if (ArviointiasteikkoYleissivistava.isNumeric(aineKeskiarvo)) {
KurssinArviointi arviointi = new KurssinArviointiNumeerinen(aineKeskiarvo, student.getStudyEndDate());
oppiaineenSuoritus.addArviointi(arviointi);
} else if (ArviointiasteikkoYleissivistava.isLiteral(aineKeskiarvo)) {
KurssinArviointi arviointi = new KurssinArviointiSanallinen(aineKeskiarvo, student.getStudyEndDate(), kuvaus("Suoritettu/Hylätty"));
oppiaineenSuoritus.addArviointi(arviointi);
}
}
oppimaaranSuoritus.addOsasuoritus(oppiaineenSuoritus);
}
}
use of fi.otavanopisto.pyramus.koski.OppiaineenSuoritusWithSubject in project pyramus by otavanopisto.
the class KoskiAikuistenPerusopetuksenStudentHandler method assessmentsToModel.
private Set<AikuistenPerusopetuksenOppiaineenSuoritus> assessmentsToModel(OpiskelijanOPS ops, Student student, EducationType studentEducationType, StudentSubjectSelections studentSubjects, boolean calculateMeanGrades) {
Collection<CreditStub> credits = listCredits(student, true, true, ops, credit -> matchingCurriculumFilter(student, credit));
Set<AikuistenPerusopetuksenOppiaineenSuoritus> results = new HashSet<>();
Map<String, OppiaineenSuoritusWithSubject<AikuistenPerusopetuksenOppiaineenSuoritus>> map = new HashMap<>();
Set<OppiaineenSuoritusWithSubject<AikuistenPerusopetuksenOppiaineenSuoritus>> accomplished = new HashSet<>();
for (CreditStub credit : credits) {
OppiaineenSuoritusWithSubject<AikuistenPerusopetuksenOppiaineenSuoritus> oppiaineenSuoritusWSubject = getSubject(student, studentEducationType, studentSubjects, credit.getSubject(), map);
collectAccomplishedMarks(credit.getSubject(), oppiaineenSuoritusWSubject, studentSubjects, accomplished);
if (settings.isReportedCredit(credit) && oppiaineenSuoritusWSubject != null) {
AikuistenPerusopetuksenKurssinSuoritus kurssiSuoritus = createKurssiSuoritus(ops, credit);
if (kurssiSuoritus != null) {
oppiaineenSuoritusWSubject.getOppiaineenSuoritus().addOsasuoritus(kurssiSuoritus);
} else {
logger.warning(String.format("Course %s not reported for student %d due to unresolvable credit.", credit.getCourseCode(), student.getId()));
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.UNREPORTED_CREDIT, new Date(), credit.getCourseCode());
}
}
}
for (OppiaineenSuoritusWithSubject<AikuistenPerusopetuksenOppiaineenSuoritus> oppiaineenSuoritusWSubject : map.values()) {
AikuistenPerusopetuksenOppiaineenSuoritus oppiaineenSuoritus = oppiaineenSuoritusWSubject.getOppiaineenSuoritus();
if (CollectionUtils.isEmpty(oppiaineenSuoritus.getOsasuoritukset())) {
// Skip empty subjects
continue;
}
// Valmiille oppiaineelle on rustattava kokonaisarviointi
if (calculateMeanGrades) {
ArviointiasteikkoYleissivistava aineKeskiarvo = accomplished.contains(oppiaineenSuoritusWSubject) ? ArviointiasteikkoYleissivistava.GRADE_S : getSubjectMeanGrade(student, oppiaineenSuoritusWSubject.getSubject(), oppiaineenSuoritus);
if (ArviointiasteikkoYleissivistava.isNumeric(aineKeskiarvo)) {
KurssinArviointi arviointi = new KurssinArviointiNumeerinen(aineKeskiarvo, student.getStudyEndDate());
oppiaineenSuoritus.addArviointi(arviointi);
} else if (ArviointiasteikkoYleissivistava.isLiteral(aineKeskiarvo)) {
KurssinArviointi arviointi = new KurssinArviointiSanallinen(aineKeskiarvo, student.getStudyEndDate(), kuvaus("Suoritettu/Hylätty"));
oppiaineenSuoritus.addArviointi(arviointi);
}
}
results.add(oppiaineenSuoritus);
}
return results;
}
use of fi.otavanopisto.pyramus.koski.OppiaineenSuoritusWithSubject in project pyramus by otavanopisto.
the class AbstractKoskiLukioStudentHandler2019 method assessmentsToModel.
protected Set<LukionOsasuoritus2019> assessmentsToModel(OpiskelijanOPS ops, Student student, EducationType studentEducationType, StudentSubjectSelections studentSubjects, boolean calculateMeanGrades) {
Collection<CreditStub> credits = listCredits(student, true, true, ops, credit -> matchingCurriculumFilter(student, credit));
Set<LukionOsasuoritus2019> results = new HashSet<>();
Map<String, OppiaineenSuoritusWithSubject<LukionOsasuoritus2019>> map = new HashMap<>();
Set<OppiaineenSuoritusWithSubject<LukionOsasuoritus2019>> accomplished = new HashSet<>();
for (CreditStub credit : credits) {
OppiaineenSuoritusWithSubject<LukionOsasuoritus2019> oppiaineenSuoritusWSubject = getSubject(student, ops, studentEducationType, credit.getSubject(), studentSubjects, map);
collectAccomplishedMarks(credit.getSubject(), oppiaineenSuoritusWSubject, studentSubjects, accomplished);
if (settings.isReportedCredit(credit) && oppiaineenSuoritusWSubject != null) {
LukionOpintojaksonSuoritus2019 kurssiSuoritus = createKurssiSuoritus(student, studentSubjects, oppiaineenSuoritusWSubject.isPaikallinenOppiaine(), ops, credit);
if (kurssiSuoritus != null) {
oppiaineenSuoritusWSubject.getOppiaineenSuoritus().addOsasuoritus(kurssiSuoritus);
} else {
logger.warning(String.format("Course %s not reported for student %d due to unresolvable credit.", credit.getCourseCode(), student.getId()));
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.UNREPORTED_CREDIT, new Date(), credit.getCourseCode());
}
}
}
for (OppiaineenSuoritusWithSubject<LukionOsasuoritus2019> lukionOppiaineenSuoritusWSubject : map.values()) {
LukionOsasuoritus2019 lukionOsaSuoritus = lukionOppiaineenSuoritusWSubject.getOppiaineenSuoritus();
if (CollectionUtils.isEmpty(lukionOsaSuoritus.getOsasuoritukset())) {
// Skip empty subjects
continue;
}
if (calculateMeanGrades && (lukionOsaSuoritus instanceof LukionOppiaineenSuoritus2019)) {
LukionOppiaineenSuoritus2019 lukionOppiaineenSuoritus = (LukionOppiaineenSuoritus2019) lukionOsaSuoritus;
ArviointiasteikkoYleissivistava aineKeskiarvo = accomplished.contains(lukionOppiaineenSuoritusWSubject) ? ArviointiasteikkoYleissivistava.GRADE_S : getSubjectMeanGrade(student, lukionOppiaineenSuoritusWSubject.getSubject(), lukionOsaSuoritus);
if (aineKeskiarvo != null) {
LukionOppiaineenArviointi arviointi = new LukionOppiaineenArviointi(aineKeskiarvo, student.getStudyEndDate());
lukionOppiaineenSuoritus.addArviointi(arviointi);
} else {
logger.warning(String.format("Unresolved mean grade for person %d.", student.getPerson().getId()));
}
}
results.add(lukionOsaSuoritus);
}
return results;
}
use of fi.otavanopisto.pyramus.koski.OppiaineenSuoritusWithSubject in project pyramus by otavanopisto.
the class AbstractKoskiLukioStudentHandler2019 method getSubject.
private OppiaineenSuoritusWithSubject<LukionOsasuoritus2019> getSubject(Student student, OpiskelijanOPS ops, EducationType studentEducationType, Subject subject, StudentSubjectSelections studentSubjects, Map<String, OppiaineenSuoritusWithSubject<LukionOsasuoritus2019>> map) {
String subjectCode = subjectCode(subject);
if (map.containsKey(subjectCode))
return map.get(subjectCode);
boolean matchingEducationType = studentEducationType != null && subject.getEducationType() != null && studentEducationType.getId().equals(subject.getEducationType().getId());
// Aineet, joista lukiodiplomit voi suorittaa
List<String> lukioDiplomit = Arrays.asList(new String[] { "KOLD", "KULD", "KÄLD", "LILD", "MELD", "MULD", "TALD", "TELD" });
if (lukioDiplomit.contains(subjectCode)) {
if (map.containsKey("LD")) {
return map.get("LD");
}
LukionMuidenOpintojenTunniste2019 tunniste = new LukionMuidenOpintojenTunniste2019(LukionMuutOpinnot.LD);
LukionOsasuoritus2019 mo = new MuidenLukioOpintojenSuoritus2019(tunniste);
OppiaineenSuoritusWithSubject<LukionOsasuoritus2019> os = new OppiaineenSuoritusWithSubject<>(subject, false, mo);
map.put("LD", os);
return os;
}
// MATHEMATICS
if (matchingEducationType && isMathSubject(subjectCode)) {
if (StringUtils.equals(subjectCode, "MAY") && isMathSubject(studentSubjects.getMath())) {
// MAY is mapped to either MAB/MAA unless neither is specified
subjectCode = studentSubjects.getMath();
if (map.containsKey(subjectCode)) {
return map.get(subjectCode);
}
}
if (StringUtils.equals(subjectCode, studentSubjects.getMath())) {
LukionOppiaineenTunniste2019 tunniste = new LukionOppiaineenSuoritusMatematiikka2019(OppiaineMatematiikka.valueOf(subjectCode), isPakollinenOppiaine(student, KoskiOppiaineetYleissivistava.MA));
return mapSubject(subject, subjectCode, false, tunniste, map);
} else
return null;
}
if (matchingEducationType && StringUtils.equals(subjectCode, "ÄI")) {
if (StringUtils.equals(subjectCode, studentSubjects.getPrimaryLanguage())) {
LukionOppiaineenTunniste2019 tunniste = new LukionOppiaineenSuoritusAidinkieli2019(OppiaineAidinkieliJaKirjallisuus.AI1, isPakollinenOppiaine(student, KoskiOppiaineetYleissivistava.AI));
return mapSubject(subject, subjectCode, false, tunniste, map);
} else
return null;
}
if (matchingEducationType && StringUtils.equals(subjectCode, "S2")) {
if (StringUtils.equals(subjectCode, studentSubjects.getPrimaryLanguage())) {
LukionOppiaineenTunniste2019 tunniste = new LukionOppiaineenSuoritusAidinkieli2019(OppiaineAidinkieliJaKirjallisuus.AI7, isPakollinenOppiaine(student, KoskiOppiaineetYleissivistava.AI));
return mapSubject(subject, subjectCode, false, tunniste, map);
} else
return null;
}
if (matchingEducationType && studentSubjects.isAdditionalLanguage(subjectCode)) {
if (subjectCode.length() > 2) {
String langCode = settings.getSubjectToLanguageMapping(subjectCode.substring(0, 2).toUpperCase());
Kielivalikoima kieli = Kielivalikoima.valueOf(langCode);
if (kieli != null) {
KoskiOppiaineetYleissivistava valinta = studentSubjects.koskiKoodi(ops, subjectCode);
LukionOppiaineenTunniste2019 tunniste = new LukionOppiaineenSuoritusVierasKieli2019(valinta, kieli, isPakollinenOppiaine(student, valinta));
return mapSubject(subject, subjectCode, false, tunniste, map);
} else {
logger.log(Level.SEVERE, String.format("Koski: Language code %s could not be converted to an enum.", langCode));
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.UNKNOWN_LANGUAGE, new Date(), langCode);
return null;
}
}
}
String[] religionSubjects = new String[] { "UE", "UO" };
if (matchingEducationType && ArrayUtils.contains(religionSubjects, subjectCode)) {
// Only the religion that student has selected is reported
if (StringUtils.equals(subjectCode, studentSubjects.getReligion())) {
if (map.containsKey("KT"))
return map.get("KT");
KoskiOppiaineetYleissivistava kansallinenAine = KoskiOppiaineetYleissivistava.KT;
LukionOppiaineenTunniste2019 tunniste = new LukionOppiaineenSuoritusMuuValtakunnallinen2019(kansallinenAine, isPakollinenOppiaine(student, kansallinenAine));
return mapSubject(subject, "KT", false, tunniste, map);
} else
return null;
}
if (matchingEducationType && isValtakunnallinenOppiaine2019(subjectCode)) {
// Common national subject
KoskiOppiaineetYleissivistava kansallinenAine = KoskiOppiaineetYleissivistava.valueOf(StringUtils.upperCase(subjectCode));
LukionOppiaineenTunniste2019 tunniste = new LukionOppiaineenSuoritusMuuValtakunnallinen2019(kansallinenAine, isPakollinenOppiaine(student, kansallinenAine));
return mapSubject(subject, subjectCode, false, tunniste, map);
} else {
// Other local subject
PaikallinenKoodi paikallinenKoodi = new PaikallinenKoodi(subjectCode, kuvaus(subject.getName()));
LukionOppiaineenSuoritusPaikallinen2019 tunniste = new LukionOppiaineenSuoritusPaikallinen2019(paikallinenKoodi, false, kuvaus(subject.getName()));
return mapSubject(subject, subjectCode, true, tunniste, map);
}
}
Aggregations