Search in sources :

Example 1 with KoskiOppiaineetYleissivistava

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

the class LukionOppiaineenTunnisteDeserializer2019 method deserialize.

@Override
public LukionOppiaineenTunniste2019 deserialize(JsonParser parser, DeserializationContext ctx) throws IOException, JsonProcessingException {
    ObjectCodec codec = parser.getCodec();
    JsonNode tree = codec.readTree(parser);
    if (tree.get("tunniste").has("koodistoUri")) {
        String koodistoUri = tree.get("tunniste").get("koodistoUri").asText();
        if (StringUtils.equals(koodistoUri, "koskioppiaineetyleissivistava")) {
            // National subject
            String subjectStr = tree.get("tunniste").get("koodiarvo").asText();
            KoskiOppiaineetYleissivistava subject = KoskiOppiaineetYleissivistava.valueOf(subjectStr);
            switch(subject) {
                case MA:
                    return codec.treeToValue(tree, LukionOppiaineenSuoritusMatematiikka2019.class);
                case AI:
                    return codec.treeToValue(tree, LukionOppiaineenSuoritusAidinkieli2019.class);
                case A1:
                case A2:
                case B1:
                case B2:
                case B3:
                    return codec.treeToValue(tree, LukionOppiaineenSuoritusVierasKieli2019.class);
                default:
                    return codec.treeToValue(tree, LukionOppiaineenSuoritusMuuValtakunnallinen2019.class);
            }
        } else {
            // Local subject
            return codec.treeToValue(tree, LukionOppiaineenSuoritusPaikallinen2019.class);
        }
    } else {
        // Local subject (koodistoUri not mandatory)
        return codec.treeToValue(tree, LukionOppiaineenSuoritusPaikallinen2019.class);
    }
}
Also used : KoskiOppiaineetYleissivistava(fi.otavanopisto.pyramus.koski.koodisto.KoskiOppiaineetYleissivistava) JsonNode(com.fasterxml.jackson.databind.JsonNode) ObjectCodec(com.fasterxml.jackson.core.ObjectCodec)

Example 2 with KoskiOppiaineetYleissivistava

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

the class KoskiInternetixPkStudentHandler method getSubject.

private OppiaineenSuoritusWithCurriculum<AikuistenPerusopetuksenOppiaineenSuoritus> getSubject(OpiskelijanOPS creditOPS, Student student, List<Long> educationTypes, StudentSubjectSelections studentSubjects, Subject subject, Map<String, OppiaineenSuoritusWithCurriculum<AikuistenPerusopetuksenOppiaineenSuoritus>> map) {
    String subjectCode = subjectCode(subject);
    String mapKey = String.valueOf(creditOPS) + subjectCode;
    if (map.containsKey(mapKey)) {
        return map.get(mapKey);
    }
    boolean matchingEducationType = educationTypes != null && subject.getEducationType() != null && educationTypes.contains(subject.getEducationType().getId());
    if (matchingEducationType && (StringUtils.equals(subjectCode, "äi") || StringUtils.equals(subjectCode, "s2"))) {
        if (StringUtils.equals(subjectCode, studentSubjects.getPrimaryLanguage())) {
            OppiaineAidinkieliJaKirjallisuus aine = StringUtils.equals(subjectCode, "s2") ? // s2
            OppiaineAidinkieliJaKirjallisuus.AI7 : // äi
            OppiaineAidinkieliJaKirjallisuus.AI1;
            AikuistenPerusopetuksenOppiaineenSuoritusAidinkieli tunniste = new AikuistenPerusopetuksenOppiaineenSuoritusAidinkieli(aine, isPakollinenOppiaine(student, KoskiOppiaineetYleissivistava.AI));
            return map(map, mapKey, creditOPS, tunniste, subject);
        } 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.isALanguage(subjectCode) ? KoskiOppiaineetYleissivistava.A1 : studentSubjects.isA1Language(subjectCode) ? KoskiOppiaineetYleissivistava.A1 : studentSubjects.isA2Language(subjectCode) ? KoskiOppiaineetYleissivistava.A2 : studentSubjects.isB1Language(subjectCode) ? KoskiOppiaineetYleissivistava.B1 : studentSubjects.isB2Language(subjectCode) ? KoskiOppiaineetYleissivistava.B2 : studentSubjects.isB3Language(subjectCode) ? KoskiOppiaineetYleissivistava.B3 : null;
                AikuistenPerusopetuksenOppiaineenSuoritusVierasKieli tunniste = new AikuistenPerusopetuksenOppiaineenSuoritusVierasKieli(valinta, kieli, isPakollinenOppiaine(student, valinta));
                return map(map, mapKey, creditOPS, tunniste, subject);
            } 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())) {
            mapKey = String.valueOf(creditOPS) + "KT";
            if (map.containsKey(mapKey))
                return map.get(mapKey);
            KoskiOppiaineetYleissivistava kansallinenAine = KoskiOppiaineetYleissivistava.KT;
            AikuistenPerusopetuksenOppiaineenTunniste tunniste = new AikuistenPerusopetuksenOppiaineenSuoritusMuu(kansallinenAine, isPakollinenOppiaine(student, KoskiOppiaineetYleissivistava.KT));
            return map(map, mapKey, creditOPS, tunniste, subject);
        } else
            return null;
    }
    if (matchingEducationType && EnumUtils.isValidEnum(KoskiOppiaineetYleissivistava.class, StringUtils.upperCase(subjectCode))) {
        // Common national subject
        KoskiOppiaineetYleissivistava kansallinenAine = KoskiOppiaineetYleissivistava.valueOf(StringUtils.upperCase(subjectCode));
        AikuistenPerusopetuksenOppiaineenTunniste tunniste = new AikuistenPerusopetuksenOppiaineenSuoritusMuu(kansallinenAine, isPakollinenOppiaine(student, kansallinenAine));
        return map(map, mapKey, creditOPS, tunniste, subject);
    } else {
        // Other local subject
        // TODO Skipped subjects ?? (MUU)
        PaikallinenKoodi paikallinenKoodi = new PaikallinenKoodi(subjectCode, kuvaus(subject.getName()));
        AikuistenPerusopetuksenOppiaineenSuoritusPaikallinen tunniste = new AikuistenPerusopetuksenOppiaineenSuoritusPaikallinen(paikallinenKoodi, false, kuvaus(subject.getName()));
        return map(map, mapKey, creditOPS, tunniste, subject);
    }
}
Also used : KoskiOppiaineetYleissivistava(fi.otavanopisto.pyramus.koski.koodisto.KoskiOppiaineetYleissivistava) Kielivalikoima(fi.otavanopisto.pyramus.koski.koodisto.Kielivalikoima) AikuistenPerusopetuksenOppiaineenSuoritusPaikallinen(fi.otavanopisto.pyramus.koski.model.aikuistenperusopetus.AikuistenPerusopetuksenOppiaineenSuoritusPaikallinen) Date(java.util.Date) AikuistenPerusopetuksenOppiaineenSuoritusMuu(fi.otavanopisto.pyramus.koski.model.aikuistenperusopetus.AikuistenPerusopetuksenOppiaineenSuoritusMuu) AikuistenPerusopetuksenOppiaineenSuoritusVierasKieli(fi.otavanopisto.pyramus.koski.model.aikuistenperusopetus.AikuistenPerusopetuksenOppiaineenSuoritusVierasKieli) AikuistenPerusopetuksenOppiaineenSuoritusAidinkieli(fi.otavanopisto.pyramus.koski.model.aikuistenperusopetus.AikuistenPerusopetuksenOppiaineenSuoritusAidinkieli) PaikallinenKoodi(fi.otavanopisto.pyramus.koski.model.PaikallinenKoodi) OppiaineAidinkieliJaKirjallisuus(fi.otavanopisto.pyramus.koski.koodisto.OppiaineAidinkieliJaKirjallisuus) AikuistenPerusopetuksenOppiaineenTunniste(fi.otavanopisto.pyramus.koski.model.aikuistenperusopetus.AikuistenPerusopetuksenOppiaineenTunniste)

Example 3 with KoskiOppiaineetYleissivistava

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

the class KoskiLukioStudentHandler method getSubject.

private OppiaineenSuoritusWithSubject<LukionOppiaineenSuoritus> getSubject(Student student, OpiskelijanOPS ops, EducationType studentEducationType, Subject subject, StudentSubjectSelections studentSubjects, Map<String, OppiaineenSuoritusWithSubject<LukionOppiaineenSuoritus>> 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());
    // 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())) {
            LukionOppiaineenTunniste tunniste = new LukionOppiaineenSuoritusMatematiikka(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())) {
            LukionOppiaineenTunniste tunniste = new LukionOppiaineenSuoritusAidinkieli(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())) {
            LukionOppiaineenTunniste tunniste = new LukionOppiaineenSuoritusAidinkieli(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);
                LukionOppiaineenTunniste tunniste = new LukionOppiaineenSuoritusVierasKieli(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;
            LukionOppiaineenTunniste tunniste = new LukionOppiaineenSuoritusMuuValtakunnallinen(kansallinenAine, isPakollinenOppiaine(student, kansallinenAine));
            return mapSubject(subject, "KT", false, tunniste, map);
        } else
            return null;
    }
    if (matchingEducationType && EnumUtils.isValidEnum(KoskiOppiaineetYleissivistava.class, StringUtils.upperCase(subjectCode))) {
        // Common national subject
        KoskiOppiaineetYleissivistava kansallinenAine = KoskiOppiaineetYleissivistava.valueOf(StringUtils.upperCase(subjectCode));
        LukionOppiaineenTunniste tunniste = new LukionOppiaineenSuoritusMuuValtakunnallinen(kansallinenAine, isPakollinenOppiaine(student, kansallinenAine));
        return mapSubject(subject, subjectCode, false, tunniste, map);
    } else {
        // Other local subject
        PaikallinenKoodi paikallinenKoodi = new PaikallinenKoodi(subjectCode, kuvaus(subject.getName()));
        LukionOppiaineenSuoritusPaikallinen tunniste = new LukionOppiaineenSuoritusPaikallinen(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) PaikallinenKoodi(fi.otavanopisto.pyramus.koski.model.PaikallinenKoodi)

Example 4 with KoskiOppiaineetYleissivistava

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

the class LukionOppiaineenTunnisteDeserializer method deserialize.

@Override
public LukionOppiaineenTunniste deserialize(JsonParser parser, DeserializationContext ctx) throws IOException, JsonProcessingException {
    ObjectCodec codec = parser.getCodec();
    JsonNode tree = codec.readTree(parser);
    if (tree.get("tunniste").has("koodistoUri")) {
        String koodistoUri = tree.get("tunniste").get("koodistoUri").asText();
        if (StringUtils.equals(koodistoUri, "koskioppiaineetyleissivistava")) {
            // National subject
            String subjectStr = tree.get("tunniste").get("koodiarvo").asText();
            KoskiOppiaineetYleissivistava subject = KoskiOppiaineetYleissivistava.valueOf(subjectStr);
            switch(subject) {
                case XX:
                    return codec.treeToValue(tree, LukionOppiaineenSuoritusEiTiedossa.class);
                case MA:
                    return codec.treeToValue(tree, LukionOppiaineenSuoritusMatematiikka.class);
                case AI:
                    return codec.treeToValue(tree, LukionOppiaineenSuoritusAidinkieli.class);
                case A1:
                case A2:
                case B1:
                case B2:
                case B3:
                    return codec.treeToValue(tree, LukionOppiaineenSuoritusVierasKieli.class);
                default:
                    return codec.treeToValue(tree, LukionOppiaineenSuoritusMuuValtakunnallinen.class);
            }
        } else {
            // Local subject
            return codec.treeToValue(tree, LukionOppiaineenSuoritusPaikallinen.class);
        }
    } else {
        // Local subject (koodistoUri not mandatory)
        return codec.treeToValue(tree, LukionOppiaineenSuoritusPaikallinen.class);
    }
}
Also used : KoskiOppiaineetYleissivistava(fi.otavanopisto.pyramus.koski.koodisto.KoskiOppiaineetYleissivistava) JsonNode(com.fasterxml.jackson.databind.JsonNode) ObjectCodec(com.fasterxml.jackson.core.ObjectCodec)

Example 5 with KoskiOppiaineetYleissivistava

use of fi.otavanopisto.pyramus.koski.koodisto.KoskiOppiaineetYleissivistava 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)

Aggregations

KoskiOppiaineetYleissivistava (fi.otavanopisto.pyramus.koski.koodisto.KoskiOppiaineetYleissivistava)9 Kielivalikoima (fi.otavanopisto.pyramus.koski.koodisto.Kielivalikoima)5 PaikallinenKoodi (fi.otavanopisto.pyramus.koski.model.PaikallinenKoodi)5 Date (java.util.Date)5 ObjectCodec (com.fasterxml.jackson.core.ObjectCodec)3 JsonNode (com.fasterxml.jackson.databind.JsonNode)3 OppiaineAidinkieliJaKirjallisuus (fi.otavanopisto.pyramus.koski.koodisto.OppiaineAidinkieliJaKirjallisuus)2 OppiaineenSuoritusWithSubject (fi.otavanopisto.pyramus.koski.OppiaineenSuoritusWithSubject)1 OpintojenRahoitus (fi.otavanopisto.pyramus.koski.koodisto.OpintojenRahoitus)1 PerusopetuksenSuoritusTapa (fi.otavanopisto.pyramus.koski.koodisto.PerusopetuksenSuoritusTapa)1 AikuistenPerusopetuksenOppiaineenSuoritusAidinkieli (fi.otavanopisto.pyramus.koski.model.aikuistenperusopetus.AikuistenPerusopetuksenOppiaineenSuoritusAidinkieli)1 AikuistenPerusopetuksenOppiaineenSuoritusMuu (fi.otavanopisto.pyramus.koski.model.aikuistenperusopetus.AikuistenPerusopetuksenOppiaineenSuoritusMuu)1 AikuistenPerusopetuksenOppiaineenSuoritusPaikallinen (fi.otavanopisto.pyramus.koski.model.aikuistenperusopetus.AikuistenPerusopetuksenOppiaineenSuoritusPaikallinen)1 AikuistenPerusopetuksenOppiaineenSuoritusVierasKieli (fi.otavanopisto.pyramus.koski.model.aikuistenperusopetus.AikuistenPerusopetuksenOppiaineenSuoritusVierasKieli)1 AikuistenPerusopetuksenOppiaineenTunniste (fi.otavanopisto.pyramus.koski.model.aikuistenperusopetus.AikuistenPerusopetuksenOppiaineenTunniste)1 LukionOppiaineenSuoritusAidinkieli (fi.otavanopisto.pyramus.koski.model.lukio.LukionOppiaineenSuoritusAidinkieli)1 LukionOppiaineenSuoritusMatematiikka (fi.otavanopisto.pyramus.koski.model.lukio.LukionOppiaineenSuoritusMatematiikka)1 LukionOppiaineenSuoritusMuuValtakunnallinen (fi.otavanopisto.pyramus.koski.model.lukio.LukionOppiaineenSuoritusMuuValtakunnallinen)1 LukionOppiaineenSuoritusPaikallinen (fi.otavanopisto.pyramus.koski.model.lukio.LukionOppiaineenSuoritusPaikallinen)1 LukionOppiaineenSuoritusVierasKieli (fi.otavanopisto.pyramus.koski.model.lukio.LukionOppiaineenSuoritusVierasKieli)1