/** * Convert Tarjonta koodi uri and version string to KoodiUriAndVersioType * object. * * @param koodiUriWithVersion * @return */ public static KoodiUriAndVersioType getKoodiUriAndVersioTypeByKoodiUriAndVersion(final String koodiUriWithVersion) { KoodiUriAndVersioType type = new KoodiUriAndVersioType(); type.setKoodiUri(getKoodiURIFromVersionedUri(koodiUriWithVersion)); type.setVersio(getKoodiVersionFromVersionedUri(koodiUriWithVersion)); return type; }
protected KoodiType getSisaltyvaKoodi(KoodiType sourcekoodi, String targetKoodisto) { KoodiUriAndVersioType uriAndVersio = new KoodiUriAndVersioType(); uriAndVersio.setKoodiUri(sourcekoodi.getKoodiUri()); uriAndVersio.setVersio(sourcekoodi.getVersio()); List<KoodiType> relatedKoodis = koodiService.listKoodiByRelation(uriAndVersio, false, SuhteenTyyppiType.SISALTYY); for (KoodiType curKoodi : relatedKoodis) { if (curKoodi.getKoodisto().getKoodistoUri().equals(targetKoodisto)) { return curKoodi; } } return null; }
@Override public KoodiValue searchKoodiRelation(final String uri) { VersionedUri parse = VersionedUri.parse(uri); KoodiType lookupKoodiType = lookupKoodiType(parse.getUri(), parse.getVersio()); KoodiUriAndVersioType koodiVersionType = new KoodiUriAndVersioType(); final String koodiUri = lookupKoodiType.getKoodiUri(); final int koodiVersion = lookupKoodiType.getVersio(); koodiVersionType.setKoodiUri(koodiUri); koodiVersionType.setVersio(koodiVersion); List<KoodiType> koodis = null; try { koodis = koodiService.listKoodiByRelation(koodiVersionType, true, SuhteenTyyppiType.SISALTYY); } catch (Exception e) { log.warn("{}, version uri :'{}'", e.getMessage(), koodiUri + "#" + koodiVersion); } if (koodis == null || koodis.isEmpty()) { return null; } else if (koodis.size() > 1) { throw new IllegalStateException("multiple koodis returned for uri: " + koodiUri + ", koodiVersion: " + koodiVersion); } KoodiType koodi = koodis.get(0); if (koodi.getTila() != TilaType.HYVAKSYTTY) { throw new IllegalStateException("koodi has invalid state, uri: " + koodiUri + ", koodiVersion: " + koodiVersion + ", state: " + koodi.getTila()); } return new KoodiValueImpl(lookupKoodiType(koodiUri, koodiVersion)); }
protected KoodiType getRinnasteinenKoodi(KoodiType koulutuskoodi, String targetKoodisto) { KoodiUriAndVersioType uriAndVersio = new KoodiUriAndVersioType(); uriAndVersio.setKoodiUri(koulutuskoodi.getKoodiUri()); uriAndVersio.setVersio(koulutuskoodi.getVersio()); List<KoodiType> relatedKoodis = koodiService.listKoodiByRelation(uriAndVersio, false, SuhteenTyyppiType.RINNASTEINEN); KoodiType targetKoodi = null; for (KoodiType curKoodi : relatedKoodis) { if (curKoodi.getKoodisto().getKoodistoUri().equals(targetKoodisto)) { targetKoodi = curKoodi; } } if (targetKoodi == null) { relatedKoodis = koodiService.listKoodiByRelation(uriAndVersio, true, SuhteenTyyppiType.RINNASTEINEN); for (KoodiType curKoodi : relatedKoodis) { if (curKoodi.getKoodisto().getKoodistoUri().equals(targetKoodisto)) { targetKoodi = curKoodi; } } } return targetKoodi; }
@Override public SubjectRow apply(final KoodiType koodiType) { Map<String, String> translationsMap = TranslationsUtil.createTranslationsMap(koodiType); String koodiArvo = koodiType.getKoodiArvo(); boolean optional = false; boolean highSchool = false; boolean comprehensiveSchool = false; boolean language = false; KoodiUriAndVersioType koodi = new KoodiUriAndVersioType(); koodi.setKoodiUri(koodiType.getKoodiUri()); koodi.setVersio(koodiType.getVersio()); if (koodiService != null) { List<KoodiType> koodiTypes = koodiService.getAlakoodis(koodi.getKoodiUri()); for (KoodiType type : koodiTypes) { String koodistoUri = type.getKoodisto().getKoodistoUri(); if (CODE_OPPIAINEENVALINNAISUUS.equals(koodistoUri)) { optional = isTrue(type); } else if (CODE_ONLUKIONOPPIAINE.equals(koodistoUri)) { highSchool = isTrue(type); } else if (CODE_ONPERUSASTEENOPPIAINE.equals(koodistoUri)) { comprehensiveSchool = isTrue(type); } else if (CODE_OPPIAINEENKIELISYYS.equals(koodistoUri)) { language = isTrue(type); } } } SubjectRow subjectRow = new SubjectRow(koodiArvo, new I18nText(translationsMap), optional, highSchool, comprehensiveSchool, language); subjectRow.toString(); return subjectRow; }