diff --git a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/RDFHelper.java b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/RDFHelper.java index 72e130ef..daf3a640 100644 --- a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/RDFHelper.java +++ b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/RDFHelper.java @@ -100,7 +100,7 @@ public class RDFHelper { Integer max = Integer.parseInt(Models.objectLiteral(model.filter(iri, maxIri, null)).map(Literal::getLabel).orElse("-1")); int start = iri.stringValue().lastIndexOf("ElemInt"); - ai.setId(BigInteger.valueOf(Long.valueOf(iri.stringValue().substring(start + "ElemInt".length())))); + ai.setId(BigInteger.valueOf(Long.parseLong(iri.stringValue().substring(start + "ElemInt".length())))); ai.setBezeichnung(bez); ai.setDefault(def); @@ -204,6 +204,8 @@ public class RDFHelper { "http://vvo.pisanoapi.at/type"), null)).map(Literal::getLabel).orElse(null); String risikoobjektType = Models.objectLiteral(model.filter(iri, vf.createIRI( "http://vvo.pisanoapi.at/risikoobjektType"), null)).map(Literal::getLabel).orElse(null); + String praemie = Models.objectLiteral(model.filter(iri, vf.createIRI( + "http://vvo.pisanoapi.at/praemienfaktor"), null)).map(Literal::getLabel).orElse(null); XMLGregorianCalendar verkaufsoffenVon = Models.objectLiteral(model.filter(iri, vf.createIRI( "http://vvo.pisanoapi.at/salesFrom"), null)).map(Literal::getLabel).isPresent() ? DatatypeFactory.newInstance().newXMLGregorianCalendar( Models.objectLiteral(model.filter( @@ -239,6 +241,7 @@ public class RDFHelper { verkaufsproduktType.setMaxOccurrences(maxOccurrence); verkaufsproduktType.setMinOccurrences(minOccurrence); verkaufsproduktType.setRisikoobjektType(risikoobjektType); + verkaufsproduktType.setPraemienfaktor(praemie); parentId.ifPresent(p -> parents.put(id, p)); bausteine.put(id, verkaufsproduktType); @@ -302,6 +305,8 @@ public class RDFHelper { "http://vvo.pisanoapi.at/type"), null)).map(Literal::getLabel).orElse(null); String risikoobjektType = Models.objectLiteral(model.filter(iri, vf.createIRI( "http://vvo.pisanoapi.at/risikoobjektType"), null)).map(Literal::getLabel).orElse(null); + String praemie = Models.objectLiteral(model.filter(iri, vf.createIRI( + "http://vvo.pisanoapi.at/praemienfaktor"), null)).map(Literal::getLabel).orElse(null); List meldungen = model.filter(iri, vf.createIRI( "http://vvo.pisanoapi.at/Meldung"), null).objects().stream() .filter(s -> s instanceof IRI).map(s -> { @@ -348,6 +353,7 @@ public class RDFHelper { verkaufsproduktType.setMaxVorkommen(maxOccurrence); verkaufsproduktType.setMinVorkommen(minOccurrence); verkaufsproduktType.setRisikoobjektErforderlich(risikoobjektType != null); + verkaufsproduktType.setPraemienfaktor(praemie); for (ServiceFault meldung : meldungen) { if (meldung != null) { @@ -403,21 +409,47 @@ public class RDFHelper { IRI bezIri = iri(baseIri + "bez"); IRI baujahrIri = iri(baseIri + "baujahr"); IRI erstzulassungIri = iri(baseIri + "erstzulassung"); + IRI kenIri = iri(baseIri + "kennzeichen"); + IRI leistungIri = iri(baseIri + "leistung"); + IRI sonderIri = iri(baseIri + "sonderausstattung"); + IRI listenpreisIri = iri(baseIri + "listenpreis"); + for (Resource iri : Models.subjectIRIs(model)) { if (iri.stringValue().contains("Fahrzeug")) { String id = iri.stringValue(); - String bez = Models.objectLiteral(model.filter(iri, bezIri, null)).map(Literal::getLabel).orElse(null); - int baujahr = Integer.parseInt(Models.objectLiteral(model.filter(iri, baujahrIri, null)).map(Literal::getLabel).orElse("-1")); - XMLGregorianCalendar erstzulassung = Models.objectLiteral(model.filter(iri, erstzulassungIri, null)).map(Literal::getLabel).isPresent() ? DatatypeFactory.newInstance().newXMLGregorianCalendar( - Models.objectLiteral(model.filter(iri, erstzulassungIri, null)).map(Literal::getLabel).orElse(null)) : null; + String bez = Models.objectLiteral( + model.filter(iri, bezIri, null)).map(Literal::getLabel).orElse(null); + String ken = Models.objectLiteral( + model.filter(iri, kenIri, null)).map(Literal::getLabel).orElse(null); + BigDecimal listenpreis = BigDecimal.valueOf( + Double.parseDouble(Models.objectLiteral(model.filter(iri, listenpreisIri, null)) + .map(Literal::getLabel).orElse("-1"))); + BigDecimal sonderausstattung = BigDecimal.valueOf( + Double.parseDouble(Models.objectLiteral(model.filter(iri, sonderIri, null)) + .map(Literal::getLabel).orElse("-1"))); + + int leistung = Integer.parseInt(Models.objectLiteral( + model.filter(iri, leistungIri, null)).map(Literal::getLabel).orElse("-1")); + int baujahr = Integer.parseInt(Models.objectLiteral( + model.filter(iri, baujahrIri, null)).map(Literal::getLabel).orElse("-1")); + + XMLGregorianCalendar erstzulassung = Models.objectLiteral(model.filter( + iri, erstzulassungIri, null)).map(Literal::getLabel).isPresent() ? + DatatypeFactory.newInstance().newXMLGregorianCalendar( + Models.objectLiteral(model.filter(iri, erstzulassungIri, null)) + .map(Literal::getLabel).orElse(null)) : null; FahrzeugType fahrzeug = new FahrzeugType(); fahrzeug.setErstzulassdat(erstzulassung); fahrzeug.setBaujahr(baujahr); fahrzeug.setHandelsbez(bez); + fahrzeug.setPolKennz(ken); + fahrzeug.setLeistung(leistung); + fahrzeug.setListenpreis(listenpreis); + fahrzeug.setSonderausstattung(sonderausstattung); erg.add(new Pair<>(id, fahrzeug)); } @@ -486,6 +518,7 @@ public class RDFHelper { IRI risikoobjektTypeIri = iri(baseIri + "risikoobjektType"); IRI bausteinIri = iri(baseIri + "Baustein"); IRI parentIri = iri(baseIri + "Parent"); + IRI praemieIri = iri(baseIri + "praemienfaktor"); IRI vpIri = iriMap.get(guiProdukt); @@ -502,7 +535,7 @@ public class RDFHelper { model.add(vpIri, maxOccurrenceIri, Values.literal(produkt.getMaxVorkommen())); model.add(vpIri, typeIri, Values.literal(produkt.getTyp())); if (produkt.isRisikoobjektErforderlich()) model.add(vpIri, risikoobjektTypeIri, Values.literal("FahrzeugType")); - + if (produkt.getPraemienfaktor() != null) model.add(vpIri, praemieIri, Values.literal(produkt.getPraemienfaktor())); if (parentId != null) model.add(vpIri, parentIri, Values.iri(parentId)); } @@ -578,7 +611,6 @@ public class RDFHelper { meldungId++; } - int fahrzeugId = 1; for (VersichertesInteresseType ro : produkt.getVersicherteObjekte()){ if (ro instanceof FahrzeugType fa){ IRI fahrzeugIri = iri(baseIri + "FahrzeugType"); @@ -586,16 +618,23 @@ public class RDFHelper { IRI faBaujahrIri = iri(baseIri + "baujahr"); IRI faBezIri = iri(baseIri + "bez"); IRI faErstZuIri = iri(baseIri + "erstzulassung"); + IRI faKennIri = iri(baseIri + "kennzeichen"); + IRI faLpreisIri = iri(baseIri + "listenpreis"); + IRI faSonderIri = iri(baseIri + "sonderausstattung"); + IRI faLeistungIri = iri(baseIri + "leistung"); IRI prodRoIri = iri(baseIri + "VersichertesInteresseType"); model.add(faIri, RDF.TYPE, fahrzeugIri); model.add(faIri, faBaujahrIri, Values.literal(fa.getBaujahr())); model.add(faIri, faBezIri, Values.literal(fa.getHandelsbez())); model.add(faIri, faErstZuIri, Values.literal(fa.getErstzulassdat())); + model.add(faIri, faKennIri, Values.literal(fa.getPolKennz())); + model.add(faIri, faLpreisIri, Values.literal(fa.getListenpreis())); + model.add(faIri, faSonderIri, Values.literal(fa.getSonderausstattung())); + model.add(faIri, faLeistungIri, Values.literal(fa.getLeistung())); model.add(vpIri, prodRoIri, faIri); - fahrzeugId++; } else if (ro instanceof VersicherteLiegenschaftType) { //To-Do } else if (ro instanceof RisikoGebaeudeType) { diff --git a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/TreeHelper.java b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/TreeHelper.java index e7615e18..9e8211c7 100644 --- a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/TreeHelper.java +++ b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/TreeHelper.java @@ -60,6 +60,8 @@ public class TreeHelper { ((ProduktbausteinType) original.getValue().getProdukt()).isRisikoobjektErforderlich()); cloneOriginalValue.getVersicherteObjekte().addAll( ((ProduktbausteinType) original.getValue().getProdukt()).getVersicherteObjekte()); + cloneOriginalValue.setPraemienfaktor( + ((ProduktbausteinType) original.getValue().getProdukt()).getPraemienfaktor()); TreeItem clonedItem = new TreeItem<>(new GuiProdukt(cloneOriginalValue)); @@ -143,6 +145,8 @@ public class TreeHelper { ((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getType()); erg.setRisikoobjektErforderlich( ((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getRisikoobjektType() != null); + erg.setPraemienfaktor( + ((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getPraemienfaktor()); for (int i = 0; i < ((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getBausteine().size(); i++) { erg.getBausteine().add((ProduktbausteinType) aprioriItemToCalcItem( diff --git a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/api/calc/BuildCalculateRequestAuskunft.java b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/api/calc/BuildCalculateRequestAuskunft.java index 21cef5f9..c0bae11f 100644 --- a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/api/calc/BuildCalculateRequestAuskunft.java +++ b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/api/calc/BuildCalculateRequestAuskunft.java @@ -65,6 +65,7 @@ public class BuildCalculateRequestAuskunft { baustein.setMinVorkommen(((ProduktbausteinType)treeItem.getValue().getProdukt()).getMinVorkommen()); baustein.setMaxVorkommen(((ProduktbausteinType)treeItem.getValue().getProdukt()).getMaxVorkommen()); baustein.getVersicherteObjekte().addAll(((ProduktbausteinType) treeItem.getValue().getProdukt()).getVersicherteObjekte()); + baustein.setPraemienfaktor(((ProduktbausteinType)treeItem.getValue().getProdukt()).getPraemienfaktor()); return baustein; } diff --git a/OMDSServiceDefinition/src/main/resources/def/r2025_27/omds3CommonServiceTypes.xsd b/OMDSServiceDefinition/src/main/resources/def/r2025_27/omds3CommonServiceTypes.xsd index a1f1a192..49992ec6 100644 --- a/OMDSServiceDefinition/src/main/resources/def/r2025_27/omds3CommonServiceTypes.xsd +++ b/OMDSServiceDefinition/src/main/resources/def/r2025_27/omds3CommonServiceTypes.xsd @@ -1729,7 +1729,8 @@ Verkaufsoffen bis - + + @@ -5065,7 +5066,8 @@ - + + Es gibt zwei Implementierungen für a priori: Verkaufsprodukt und Unterbaustein