Search in sources :

Example 1 with OppiaineenSuoritusWithSubject

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;
}
Also used : HashMap(java.util.HashMap) CreditStub(fi.otavanopisto.pyramus.koski.CreditStub) ArviointiasteikkoYleissivistava(fi.otavanopisto.pyramus.koski.koodisto.ArviointiasteikkoYleissivistava) Date(java.util.Date) OppiaineenSuoritusWithSubject(fi.otavanopisto.pyramus.koski.OppiaineenSuoritusWithSubject) HashSet(java.util.HashSet)

Example 2 with OppiaineenSuoritusWithSubject

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);
    }
}
Also used : HashMap(java.util.HashMap) CreditStub(fi.otavanopisto.pyramus.koski.CreditStub) ArviointiasteikkoYleissivistava(fi.otavanopisto.pyramus.koski.koodisto.ArviointiasteikkoYleissivistava) Date(java.util.Date) KurssinArviointiSanallinen(fi.otavanopisto.pyramus.koski.model.KurssinArviointiSanallinen) OppiaineenSuoritusWithSubject(fi.otavanopisto.pyramus.koski.OppiaineenSuoritusWithSubject) KurssinArviointi(fi.otavanopisto.pyramus.koski.model.KurssinArviointi) HashSet(java.util.HashSet) KurssinArviointiNumeerinen(fi.otavanopisto.pyramus.koski.model.KurssinArviointiNumeerinen)

Example 3 with OppiaineenSuoritusWithSubject

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;
}
Also used : HashMap(java.util.HashMap) CreditStub(fi.otavanopisto.pyramus.koski.CreditStub) ArviointiasteikkoYleissivistava(fi.otavanopisto.pyramus.koski.koodisto.ArviointiasteikkoYleissivistava) Date(java.util.Date) KurssinArviointiSanallinen(fi.otavanopisto.pyramus.koski.model.KurssinArviointiSanallinen) OppiaineenSuoritusWithSubject(fi.otavanopisto.pyramus.koski.OppiaineenSuoritusWithSubject) KurssinArviointi(fi.otavanopisto.pyramus.koski.model.KurssinArviointi) HashSet(java.util.HashSet) KurssinArviointiNumeerinen(fi.otavanopisto.pyramus.koski.model.KurssinArviointiNumeerinen)

Example 4 with OppiaineenSuoritusWithSubject

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;
}
Also used : HashMap(java.util.HashMap) CreditStub(fi.otavanopisto.pyramus.koski.CreditStub) LukionOppiaineenArviointi(fi.otavanopisto.pyramus.koski.model.lukio.LukionOppiaineenArviointi) ArviointiasteikkoYleissivistava(fi.otavanopisto.pyramus.koski.koodisto.ArviointiasteikkoYleissivistava) Date(java.util.Date) OppiaineenSuoritusWithSubject(fi.otavanopisto.pyramus.koski.OppiaineenSuoritusWithSubject) HashSet(java.util.HashSet)

Example 5 with OppiaineenSuoritusWithSubject

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);
    }
}
Also used : KoskiOppiaineetYleissivistava(fi.otavanopisto.pyramus.koski.koodisto.KoskiOppiaineetYleissivistava) Kielivalikoima(fi.otavanopisto.pyramus.koski.koodisto.Kielivalikoima) Date(java.util.Date) OppiaineenSuoritusWithSubject(fi.otavanopisto.pyramus.koski.OppiaineenSuoritusWithSubject) PaikallinenKoodi(fi.otavanopisto.pyramus.koski.model.PaikallinenKoodi)

Aggregations

OppiaineenSuoritusWithSubject (fi.otavanopisto.pyramus.koski.OppiaineenSuoritusWithSubject)5 Date (java.util.Date)5 CreditStub (fi.otavanopisto.pyramus.koski.CreditStub)4 ArviointiasteikkoYleissivistava (fi.otavanopisto.pyramus.koski.koodisto.ArviointiasteikkoYleissivistava)4 HashMap (java.util.HashMap)4 HashSet (java.util.HashSet)4 KurssinArviointi (fi.otavanopisto.pyramus.koski.model.KurssinArviointi)2 KurssinArviointiNumeerinen (fi.otavanopisto.pyramus.koski.model.KurssinArviointiNumeerinen)2 KurssinArviointiSanallinen (fi.otavanopisto.pyramus.koski.model.KurssinArviointiSanallinen)2 Kielivalikoima (fi.otavanopisto.pyramus.koski.koodisto.Kielivalikoima)1 KoskiOppiaineetYleissivistava (fi.otavanopisto.pyramus.koski.koodisto.KoskiOppiaineetYleissivistava)1 PaikallinenKoodi (fi.otavanopisto.pyramus.koski.model.PaikallinenKoodi)1 LukionOppiaineenArviointi (fi.otavanopisto.pyramus.koski.model.lukio.LukionOppiaineenArviointi)1