Search in sources :

Example 1 with PerusopetuksenSuoritusTapa

use of fi.otavanopisto.pyramus.koski.koodisto.PerusopetuksenSuoritusTapa in project pyramus by otavanopisto.

the class KoskiSettings method readSettings.

private void readSettings(JSONObject settings) {
    JSONObject koskiSettings = settings.getJSONObject("koski");
    JSONObject courseTypeMapping = koskiSettings.getJSONObject("courseTypeMapping");
    for (Object courseTypeMappingKey : courseTypeMapping.keySet()) {
        Long courseSubTypeId = Long.parseLong(courseTypeMappingKey.toString());
        this.courseTypeMapping.put(courseSubTypeId, courseTypeMapping.getString(courseSubTypeId.toString()));
    }
    JSONObject courseTypeMapping2019 = koskiSettings.getJSONObject("courseTypeMapping2019");
    for (Object courseTypeMappingKey : courseTypeMapping2019.keySet()) {
        Long courseSubTypeId = Long.parseLong(courseTypeMappingKey.toString());
        this.courseTypeMapping2019.put(courseSubTypeId, courseTypeMapping2019.getString(courseSubTypeId.toString()));
    }
    JSONObject subjectToLanguageMapping = koskiSettings.getJSONObject("subjectToLanguageMapping");
    for (Object key : subjectToLanguageMapping.keySet()) {
        String keyStr = (String) key;
        this.subjectToLanguageMapping.put(keyStr, subjectToLanguageMapping.getString(keyStr));
    }
    JSONObject studyProgrammeMappings = koskiSettings.getJSONObject("studyProgrammes");
    for (Object studyProgrammeKey : studyProgrammeMappings.keySet()) {
        Long studyProgrammeId = Long.parseLong(studyProgrammeKey.toString());
        JSONObject studyProgramme = studyProgrammeMappings.getJSONObject(studyProgrammeId.toString());
        if (studyProgramme.getBoolean("enabled")) {
            enabledStudyProgrammes.add(studyProgrammeId);
        }
        if (studyProgramme.getBoolean("freeLodging")) {
            freeLodgingStudyProgrammes.add(studyProgrammeId);
        }
        if (studyProgramme.has("yksityisopiskelija") && studyProgramme.getBoolean("yksityisopiskelija")) {
            yksityisopiskelijaStudyProgrammes.add(studyProgrammeId);
        }
        if (EnumUtils.isValidEnum(KoskiStudyProgrammeHandler.class, studyProgramme.getString("handler"))) {
            KoskiStudyProgrammeHandler handlerType = KoskiStudyProgrammeHandler.valueOf(studyProgramme.getString("handler"));
            handlerTypes.put(studyProgrammeId, handlerType);
        } else {
            logger.warning(String.format("Unknown handler %s", studyProgramme.getString("handler")));
        }
        if (studyProgramme.has("opintojenRahoitus")) {
            String opintojenRahoitusStr = studyProgramme.getString("opintojenRahoitus");
            if (StringUtils.isNotBlank(opintojenRahoitusStr)) {
                OpintojenRahoitus or = OpintojenRahoitus.reverseLookup(opintojenRahoitusStr);
                if (or != null) {
                    opintojenRahoitus.put(studyProgrammeId, or);
                }
            }
        }
        if (studyProgramme.has("perusopetuksenSuoritusTapa")) {
            String pstString = studyProgramme.getString("perusopetuksenSuoritusTapa");
            if (EnumUtils.isValidEnum(PerusopetuksenSuoritusTapa.class, pstString)) {
                PerusopetuksenSuoritusTapa pst = EnumUtils.getEnum(PerusopetuksenSuoritusTapa.class, pstString);
                if (pst != null) {
                    perusopetuksenSuoritusTapa.put(studyProgrammeId, pst);
                }
            }
        }
        if (studyProgramme.has("toimipisteOID")) {
            String toimipisteOID = studyProgramme.getString("toimipisteOID");
            if (StringUtils.isNotBlank(toimipisteOID)) {
                toimipisteOIDt.put(studyProgrammeId, toimipisteOID);
            }
        }
        JSONObject diaariJSON = studyProgramme.getJSONObject("diaari");
        if (diaariJSON != null) {
            for (Object curriculumIdKey : diaariJSON.keySet()) {
                Long curriculumId = Long.parseLong(curriculumIdKey.toString());
                diaarinumerot.put(String.format("%d.%d", studyProgrammeId, curriculumId), diaariJSON.getString(curriculumIdKey.toString()));
            }
        }
        String pakollisetOppiaineet = studyProgramme.getString("pakollisetOppiaineet");
        if (StringUtils.isNotBlank(pakollisetOppiaineet)) {
            Set<KoskiOppiaineetYleissivistava> set = new HashSet<>();
            for (String s : StringUtils.split(pakollisetOppiaineet, ',')) {
                KoskiOppiaineetYleissivistava oppiaine = KoskiOppiaineetYleissivistava.valueOf(s);
                if (oppiaine != null) {
                    set.add(oppiaine);
                } else {
                    logger.log(Level.WARNING, String.format("No equivalent enum found for value %s of studyprogramme %d.", s, studyProgrammeId));
                }
            }
            this.pakollisetOppiaineet.put(studyProgrammeId, set);
        }
    }
}
Also used : KoskiOppiaineetYleissivistava(fi.otavanopisto.pyramus.koski.koodisto.KoskiOppiaineetYleissivistava) OpintojenRahoitus(fi.otavanopisto.pyramus.koski.koodisto.OpintojenRahoitus) PerusopetuksenSuoritusTapa(fi.otavanopisto.pyramus.koski.koodisto.PerusopetuksenSuoritusTapa) JSONObject(net.sf.json.JSONObject) JSONObject(net.sf.json.JSONObject) HashSet(java.util.HashSet)

Example 2 with PerusopetuksenSuoritusTapa

use of fi.otavanopisto.pyramus.koski.koodisto.PerusopetuksenSuoritusTapa in project pyramus by otavanopisto.

the class KoskiInternetixPkStudentHandler method assessmentsToModel.

private void assessmentsToModel(AikuistenPerusopetuksenOpiskeluoikeus opiskeluoikeus, Student student, StudentSubjectSelections studentSubjects, boolean calculateMeanGrades, boolean sisällytäVahvistus, String toimipisteOID, boolean defaultStudyProgramme) {
    List<OpiskelijanOPS> opsList = new ArrayList<>();
    opsList.add(OpiskelijanOPS.ops2018);
    opsList.add(OpiskelijanOPS.ops2016);
    opsList.add(OpiskelijanOPS.ops2005);
    KoskiStudyProgrammeHandlerParams handlerParams = getHandlerParams(HANDLER_TYPE);
    // If this is default study programme of the student, we exclude the incompatible education type (ie list all other edutypes)
    // Otherwise, only list credits from one education type
    Predicate<Credit> predicate = defaultStudyProgramme ? credit -> !matchingEducationTypeFilter(credit, handlerParams.getExcludedEducationTypes()) : credit -> matchingEducationTypeFilter(credit, handlerParams.getEducationTypes());
    Map<OpiskelijanOPS, List<CreditStub>> opsCredits = listCredits(student, true, true, opsList, OpiskelijanOPS.ops2018, predicate);
    Map<String, OppiaineenSuoritusWithCurriculum<AikuistenPerusopetuksenOppiaineenSuoritus>> map = new HashMap<>();
    Set<OppiaineenSuoritusWithCurriculum<AikuistenPerusopetuksenOppiaineenSuoritus>> accomplished = new HashSet<>();
    for (OpiskelijanOPS ops : opsCredits.keySet()) {
        List<CreditStub> credits = opsCredits.get(ops);
        for (CreditStub credit : credits) {
            OppiaineenSuoritusWithCurriculum<AikuistenPerusopetuksenOppiaineenSuoritus> oppiaineenSuoritus = getSubject(ops, student, handlerParams.getEducationTypes(), studentSubjects, credit.getSubject(), map);
            collectAccomplishedMarks(credit.getSubject(), oppiaineenSuoritus, studentSubjects, accomplished);
            if (settings.isReportedCredit(credit) && oppiaineenSuoritus != null) {
                AikuistenPerusopetuksenKurssinSuoritus kurssiSuoritus = createKurssiSuoritus(ops, credit);
                if (kurssiSuoritus != null) {
                    oppiaineenSuoritus.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());
                }
            }
        }
    }
    PerusopetuksenSuoritusTapa perusopetuksenSuoritusTapa = suoritusTapa(student);
    for (OppiaineenSuoritusWithCurriculum<AikuistenPerusopetuksenOppiaineenSuoritus> oppiaineenSuoritus : map.values()) {
        if (CollectionUtils.isEmpty(oppiaineenSuoritus.getOppiaineenSuoritus().getOsasuoritukset())) {
            // Skip empty subjects
            continue;
        }
        StudentSubjectGrade studentSubjectGrade = findStudentSubjectGrade(student, oppiaineenSuoritus.getSubject());
        boolean hasStudentSubjectGrade = studentSubjectGrade != null;
        // Valmiille oppiaineelle on rustattava kokonaisarviointi
        if (calculateMeanGrades || hasStudentSubjectGrade) {
            ArviointiasteikkoYleissivistava aineKeskiarvo = accomplished.contains(oppiaineenSuoritus) ? ArviointiasteikkoYleissivistava.GRADE_S : getSubjectMeanGrade(student, oppiaineenSuoritus.getSubject(), oppiaineenSuoritus.getOppiaineenSuoritus());
            Date arviointiPvm = (studentSubjectGrade != null && studentSubjectGrade.getGradeDate() != null) ? studentSubjectGrade.getGradeDate() : student.getStudyEndDate();
            if (ArviointiasteikkoYleissivistava.isNumeric(aineKeskiarvo)) {
                KurssinArviointi arviointi = new KurssinArviointiNumeerinen(aineKeskiarvo, arviointiPvm);
                oppiaineenSuoritus.getOppiaineenSuoritus().addArviointi(arviointi);
            } else if (ArviointiasteikkoYleissivistava.isLiteral(aineKeskiarvo)) {
                KurssinArviointi arviointi = new KurssinArviointiSanallinen(aineKeskiarvo, arviointiPvm, kuvaus("Suoritettu/Hylätty"));
                oppiaineenSuoritus.getOppiaineenSuoritus().addArviointi(arviointi);
            }
        }
        PerusopetuksenOppiaineenOppimaaranSuoritus oppiaineenOppimaaranSuoritus = PerusopetuksenOppiaineenOppimaaranSuoritus.from(oppiaineenSuoritus.getOppiaineenSuoritus(), perusopetuksenSuoritusTapa, Kieli.FI, new OrganisaationToimipisteOID(toimipisteOID));
        oppiaineenOppimaaranSuoritus.getKoulutusmoduuli().setPerusteenDiaarinumero(getDiaarinumero(HANDLER_TYPE, oppiaineenSuoritus.getOps()));
        oppiaineenOppimaaranSuoritus.setTodistuksellaNakyvatLisatiedot(getTodistuksellaNakyvatLisatiedot(student));
        if (hasStudentSubjectGrade) {
            oppiaineenOppimaaranSuoritus.setVahvistus(getVahvistus(student, studentSubjectGrade.getGradeApprover(), studentSubjectGrade.getGradeDate(), toimipisteOID));
        } else if (sisällytäVahvistus) {
            oppiaineenOppimaaranSuoritus.setVahvistus(getVahvistus(student, toimipisteOID));
        }
        opiskeluoikeus.addSuoritus(oppiaineenOppimaaranSuoritus);
    }
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) CreditStub(fi.otavanopisto.pyramus.koski.CreditStub) Credit(fi.otavanopisto.pyramus.domainmodel.grading.Credit) List(java.util.List) ArrayList(java.util.ArrayList) KoskiStudyProgrammeHandlerParams(fi.otavanopisto.pyramus.koski.settings.KoskiStudyProgrammeHandlerParams) HashSet(java.util.HashSet) PerusopetuksenOppiaineenOppimaaranSuoritus(fi.otavanopisto.pyramus.koski.model.aikuistenperusopetus.PerusopetuksenOppiaineenOppimaaranSuoritus) AikuistenPerusopetuksenKurssinSuoritus(fi.otavanopisto.pyramus.koski.model.aikuistenperusopetus.AikuistenPerusopetuksenKurssinSuoritus) OppiaineenSuoritusWithCurriculum(fi.otavanopisto.pyramus.koski.OppiaineenSuoritusWithCurriculum) ArviointiasteikkoYleissivistava(fi.otavanopisto.pyramus.koski.koodisto.ArviointiasteikkoYleissivistava) Date(java.util.Date) KurssinArviointiSanallinen(fi.otavanopisto.pyramus.koski.model.KurssinArviointiSanallinen) PerusopetuksenSuoritusTapa(fi.otavanopisto.pyramus.koski.koodisto.PerusopetuksenSuoritusTapa) StudentSubjectGrade(fi.otavanopisto.pyramus.domainmodel.students.StudentSubjectGrade) KurssinArviointi(fi.otavanopisto.pyramus.koski.model.KurssinArviointi) OpiskelijanOPS(fi.otavanopisto.pyramus.koski.OpiskelijanOPS) OrganisaationToimipisteOID(fi.otavanopisto.pyramus.koski.model.OrganisaationToimipisteOID) AikuistenPerusopetuksenOppiaineenSuoritus(fi.otavanopisto.pyramus.koski.model.aikuistenperusopetus.AikuistenPerusopetuksenOppiaineenSuoritus) KurssinArviointiNumeerinen(fi.otavanopisto.pyramus.koski.model.KurssinArviointiNumeerinen)

Aggregations

PerusopetuksenSuoritusTapa (fi.otavanopisto.pyramus.koski.koodisto.PerusopetuksenSuoritusTapa)2 HashSet (java.util.HashSet)2 Credit (fi.otavanopisto.pyramus.domainmodel.grading.Credit)1 StudentSubjectGrade (fi.otavanopisto.pyramus.domainmodel.students.StudentSubjectGrade)1 CreditStub (fi.otavanopisto.pyramus.koski.CreditStub)1 OpiskelijanOPS (fi.otavanopisto.pyramus.koski.OpiskelijanOPS)1 OppiaineenSuoritusWithCurriculum (fi.otavanopisto.pyramus.koski.OppiaineenSuoritusWithCurriculum)1 ArviointiasteikkoYleissivistava (fi.otavanopisto.pyramus.koski.koodisto.ArviointiasteikkoYleissivistava)1 KoskiOppiaineetYleissivistava (fi.otavanopisto.pyramus.koski.koodisto.KoskiOppiaineetYleissivistava)1 OpintojenRahoitus (fi.otavanopisto.pyramus.koski.koodisto.OpintojenRahoitus)1 KurssinArviointi (fi.otavanopisto.pyramus.koski.model.KurssinArviointi)1 KurssinArviointiNumeerinen (fi.otavanopisto.pyramus.koski.model.KurssinArviointiNumeerinen)1 KurssinArviointiSanallinen (fi.otavanopisto.pyramus.koski.model.KurssinArviointiSanallinen)1 OrganisaationToimipisteOID (fi.otavanopisto.pyramus.koski.model.OrganisaationToimipisteOID)1 AikuistenPerusopetuksenKurssinSuoritus (fi.otavanopisto.pyramus.koski.model.aikuistenperusopetus.AikuistenPerusopetuksenKurssinSuoritus)1 AikuistenPerusopetuksenOppiaineenSuoritus (fi.otavanopisto.pyramus.koski.model.aikuistenperusopetus.AikuistenPerusopetuksenOppiaineenSuoritus)1 PerusopetuksenOppiaineenOppimaaranSuoritus (fi.otavanopisto.pyramus.koski.model.aikuistenperusopetus.PerusopetuksenOppiaineenOppimaaranSuoritus)1 KoskiStudyProgrammeHandlerParams (fi.otavanopisto.pyramus.koski.settings.KoskiStudyProgrammeHandlerParams)1 ArrayList (java.util.ArrayList)1 Date (java.util.Date)1