From 2c9492938e67c93ba8a866d66548504207a5cacb Mon Sep 17 00:00:00 2001 From: LukasJuraczka Date: Wed, 22 Oct 2025 15:15:47 +0200 Subject: [PATCH] =?UTF-8?q?Risikoobjekte=20werden=20auch=20mit=20RDF=20ver?= =?UTF-8?q?arbeitet.=20Plausi=20art=20hinzugef=C3=BCgt.=20H=C3=A4ufigere?= =?UTF-8?q?=20pr=C3=BCfung=20von=20Plausis.=20Attribute=20k=C3=B6nnen=20?= =?UTF-8?q?=C3=A4nderbar=20oder=20nicht=20=C3=A4nderbar=20gesetzt=20werden?= =?UTF-8?q?.=20Sortieren=20angepasst.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OMDSServiceDefinition/pom.xml | 2 +- .../at/vvo/omds/client/gui/ItemAttribute.java | 38 +-- .../gui/{AllinOneView.java => MainView.java} | 94 ++++--- .../java/at/vvo/omds/client/gui/Plausi.java | 9 +- .../at/vvo/omds/client/gui/RDFHelper.java | 235 +++++++++++++++--- .../vvo/omds/client/gui/RisikoobjektView.java | 4 + .../at/vvo/omds/client/gui/TreeHelper.java | 114 +++------ .../calc/BuildCalculateRequestAuskunft.java | 12 +- .../calc/CalculateRequestAuskunftService.java | 2 - 9 files changed, 334 insertions(+), 176 deletions(-) rename OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/{AllinOneView.java => MainView.java} (90%) diff --git a/OMDSServiceDefinition/pom.xml b/OMDSServiceDefinition/pom.xml index 31b0300a..1109a0b2 100644 --- a/OMDSServiceDefinition/pom.xml +++ b/OMDSServiceDefinition/pom.xml @@ -209,7 +209,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs javafx-maven-plugin 0.0.8 - at.vvo.omds.client.gui.AllinOneView + at.vvo.omds.client.gui.MainView diff --git a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/ItemAttribute.java b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/ItemAttribute.java index ceefab5a..5198a416 100644 --- a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/ItemAttribute.java +++ b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/ItemAttribute.java @@ -88,9 +88,9 @@ public class ItemAttribute { && infoBoxFromItem.get(newSelection).get(stringAttribut) != null && !infoBoxFromItem.get(newSelection).get(stringAttribut).isEmpty()){ textField.setText(infoBoxFromItem.get(newSelection).get(stringAttribut)); - } else if (stringAttribut.getValue() != null) { + } else if (stringAttribut.getValue() != null && !stringAttribut.getValue().equals("null")) { textField.setText(stringAttribut.getValue()); - } else if (stringAttribut.getValue() == null && stringAttribut.getDefault() != null) { + } else if (stringAttribut.getDefault() != null) { textField.setText(stringAttribut.getDefault()); } textField.setPromptText("Text eingeben"); @@ -113,9 +113,9 @@ public class ItemAttribute { && infoBoxFromItem.get(newSelection).get(attributDezimal) != null && !infoBoxFromItem.get(newSelection).get(attributDezimal).isEmpty()){ textField.setText(infoBoxFromItem.get(newSelection).get(attributDezimal)); - } else if (attributDezimal.getValue() != null) { + } else if (attributDezimal.getValue() != null && !(attributDezimal.getValue().toString().equals("-1"))) { textField.setText(attributDezimal.getValue().toString()); - } else if (attributDezimal.getValue() == null && attributDezimal.getDefault() != null) { + } else if (attributDezimal.getDefault() != null) { textField.setText(attributDezimal.getDefault().toString()); } textField.setPromptText("Dezimalzahl eingeben"); @@ -136,9 +136,9 @@ public class ItemAttribute { && infoBoxFromItem.get(newSelection).get(attributInt) != null && !infoBoxFromItem.get(newSelection).get(attributInt).isEmpty()){ textField.setText(infoBoxFromItem.get(newSelection).get(attributInt)); - } else if (attributInt.getValue() != null) { + } else if (attributInt.getValue() != null && !attributInt.getValue().equals(-1)) { textField.setText(attributInt.getValue().toString()); - } else if (attributInt.getValue() == null && attributInt.getDefault() != null) { + } else if (attributInt.getDefault() != null) { textField.setText(attributInt.getDefault().toString()); } textField.setPromptText("Ganzzahl eingeben"); @@ -309,16 +309,18 @@ public class ItemAttribute { + ((FahrzeugType) risikoobjekte.get(i)).getBaujahr() + ")"); int finalI = i; - if (((ProduktbausteinType) newSelection.getValue().getProdukt()).getVersicherteObjekte().stream().anyMatch(v -> ((FahrzeugType) v).getHandelsbez().equals(((FahrzeugType) risikoobjekte.get(finalI)).getHandelsbez()))) { + + if (((ProduktbausteinType) newSelection.getValue().getProdukt()).getVersicherteObjekte() + .stream().anyMatch(v -> ((FahrzeugType) v).getHandelsbez() + .equals(((FahrzeugType) risikoobjekte.get(finalI)).getHandelsbez()))) { checkBox.setSelected(true); } checkBox.selectedProperty().addListener((observableValue, oldValue, newValue) -> { if (newValue) { ((ProduktbausteinType) newSelection.getValue().getProdukt()).getVersicherteObjekte().add(risikoobjekte.get(finalI)); - } else { - ((ProduktbausteinType) newSelection.getValue().getProdukt()).getVersicherteObjekte().remove(risikoobjekte.get(finalI)); + ((ProduktbausteinType) newSelection.getValue().getProdukt()).getVersicherteObjekte().remove(finalI); } }); } @@ -340,6 +342,7 @@ public class ItemAttribute { if (produktbaustein.getMeldungen() != null && !produktbaustein.getMeldungen().isEmpty()) { attributBox.getChildren().removeIf(n -> n.getId() != null && n.getId().equals("faultsbox")); VBox faultsBox = new VBox(); + faultsBox.setId("faultsbox"); for (ServiceFault sf : produktbaustein.getMeldungen()) { HBox singleFaultBox = new HBox(); @@ -357,7 +360,7 @@ public class ItemAttribute { singleFaultBox.getChildren().addAll(symbole, errorText); singleFaultBox.setId("singleFaultBox"); - faultsBox.getChildren().add(singleFaultBox); + faultsBox.getChildren().add(singleFaultBox); } if (!faultsBox.getChildren().isEmpty()) { @@ -405,16 +408,17 @@ public class ItemAttribute { vpLabel.setPadding(new Insets(10)); attributBox.getChildren().addFirst(vpLabel); - VBox vpMeldungenTexts = new VBox(); - vp.getMeldungen().forEach( m -> { - Label vpMeldungText = new Label(m.getErrorMsg() + System.lineSeparator()); - vpMeldungText.setPadding(new Insets(10)); - vpMeldungenTexts.getChildren().add(vpMeldungText); - }); +// VBox vpMeldungenTexts = new VBox(); +// vp.getMeldungen().forEach( m -> { +// Label vpMeldungText = new Label(m.getErrorMsg() + System.lineSeparator()); +// vpMeldungText.setPadding(new Insets(10)); +// +// vpMeldungenTexts.getChildren().add(vpMeldungText); +// }); attributBox.getChildren().removeIf(c -> c.getId() != null && c.getId().equals("vpMeldungenTexts")); - attributBox.getChildren().addAll(vpMeldungenTexts); +// attributBox.getChildren().addAll(vpMeldungenTexts); return attributBox; } diff --git a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/AllinOneView.java b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/MainView.java similarity index 90% rename from OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/AllinOneView.java rename to OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/MainView.java index dfc28ff4..aace2e23 100644 --- a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/AllinOneView.java +++ b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/MainView.java @@ -40,7 +40,7 @@ import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; -public class AllinOneView extends Application { +public class MainView extends Application { Map timesItemisIncludedById = new HashMap<>(); Map, Map> infoBoxFromItem = new HashMap<>(); @@ -58,7 +58,7 @@ public class AllinOneView extends Application { public void start(Stage stage) { stage.setTitle("OMDS Client"); - stage.getIcons().add(new Image(AllinOneView.class.getResourceAsStream("/logo/VVO_Logo_2024.png"))); + stage.getIcons().add(new Image(MainView.class.getResourceAsStream("/logo/VVO_Logo_2024.png"))); TabPane tabPane = new TabPane(); Tab baumView = new Tab("Deckungsbaum"); @@ -285,11 +285,13 @@ public class AllinOneView extends Application { tv.getSelectionModel().selectedItemProperty().addListener((obs, oldSelection, newSelection) -> { if (newSelection != null) { - if (!infoBox.getChildren().isEmpty()) { infoBox.getChildren().removeAll(infoBox.getChildren()); } + if (isMeldungVorhanden((ProduktbausteinType) newSelection.getValue().getProdukt(), tv)){ + ((ProduktbausteinType) newSelection.getValue().getProdukt()).getAttribute().removeIf(a -> a.getBezeichnung().equals("Praemie")); + } ItemAttribute itemAttribute = new ItemAttribute(); itemAttribute.setRisikoobjekte(risikoobjektView.getRisikoobjekte()); if (!infoBoxFromItem.isEmpty()) itemAttribute.setInfoBoxFromItem(infoBoxFromItem); @@ -389,7 +391,7 @@ public class AllinOneView extends Application { TreeItem clone = null; try { clone = treeHelper.cloneTreeItem( - treeHelper.findTreeItem((ProduktbausteinType) item.getProdukt(), originalRoot)); + treeHelper.findTreeItem((ProduktbausteinType) item.getProdukt(), tv.getRoot())); } catch (Exception ex) { throw new RuntimeException(ex); } @@ -402,22 +404,11 @@ public class AllinOneView extends Application { tv.refresh(); } - VerkaufsproduktType neuRoot = checkPlausis(plausiList, tv.getRoot()); - TreeItem newRoot = new TreeItem<>(new GuiProdukt(neuRoot)); - newRoot.setExpanded(true); - - try { - treeHelper.produktToTree(neuRoot, newRoot); - - TreeItem abc = new TreeItem<>(); - - treeHelper.aprioriProduktToTree(verkaufsprodukt, abc); - - tv.setRoot(treeHelper.sortTree(treeHelper.addAprioriToCalc(newRoot, abc))); -// tv.setRoot(treeHelper.sortTree(newRoot)); + TreeItem newRoot = checkPlausis(plausiList, tv.getRoot(), verkaufsprodukt); + if (newRoot != null) { + newRoot.setExpanded(true); + tv.setRoot(newRoot); tv.refresh(); - } catch (Exception ex) { - throw new RuntimeException(ex); } }); @@ -445,6 +436,15 @@ public class AllinOneView extends Application { } else { getTreeItem().getParent().getChildren().remove((getTreeItem())); } + + TreeItem newRoot = checkPlausis(plausiList, tv.getRoot(), verkaufsprodukt); + if (newRoot != null) { + newRoot.setExpanded(true); + + tv.setRoot(newRoot); + tv.refresh(); + } + timesItemisIncludedById.clear(); refreshTimesItemisIncludedById(tv.getRoot()); }); @@ -486,19 +486,29 @@ public class AllinOneView extends Application { treeHelper.setTimesItemisIncludedById(timesItemisIncludedById); if (serverBtn.isSelected()) { VerkaufsproduktType calcResponse = s.calculateRDFAuskunft(new TreeView<>(cleanedRoot), stichtag.get()); + newRoot.getValue().setProdukt(calcResponse); treeHelper.produktToTree(calcResponse, newRoot); - }else { CalculateResponse calcResponse = s.calculateAuskunft(new TreeView<>(cleanedRoot), stichtag.get()); + newRoot.getValue().setProdukt(calcResponse.getBerechnungsantwort().getVerkaufsprodukt()); treeHelper.produktToTree(calcResponse.getBerechnungsantwort().getVerkaufsprodukt(), newRoot); } timesItemisIncludedById = treeHelper.getTimesItemisIncludedById(); newRoot.setExpanded(true); - newRoot = treeHelper.addAprioriToCalc(newRoot, originalRoot); - newRoot = treeHelper.sortTree(newRoot); - tv.setRoot(newRoot); + TreeItem finalRoot = checkPlausis(plausiList, newRoot, verkaufsprodukt); + if (finalRoot != null) { + finalRoot.setExpanded(true); + tv.setRoot(finalRoot); + } else { + newRoot = treeHelper.addAprioriToCalc(newRoot, originalRoot); + newRoot = treeHelper.sortTree(newRoot); + tv.setRoot(newRoot); + } + + + timesItemisIncludedById.clear(); refreshTimesItemisIncludedById(tv.getRoot()); @@ -574,7 +584,7 @@ public class AllinOneView extends Application { } } - private boolean shouldBeIncluded(TreeItem treeItem) { + public boolean shouldBeIncluded(TreeItem treeItem) { return !(((treeItem.getParent() != null && treeItem.getParent().getValue().isNotIncluded()) || treeItem.getValue().isNotIncluded() || (((ProduktbausteinType) treeItem.getValue().getProdukt()).getMinVorkommen() != null && ((ProduktbausteinType) treeItem.getValue().getProdukt()).getMinVorkommen() == 0 && (timesItemisIncludedById.get(((ProduktbausteinType) treeItem.getValue().getProdukt()).getId()) == null || @@ -634,7 +644,7 @@ public class AllinOneView extends Application { return erg; } - private boolean isMeldungVorhanden(ProduktbausteinType produkt, TreeView tv) { + public boolean isMeldungVorhanden(ProduktbausteinType produkt, TreeView tv) { TreeHelper treeHelper = new TreeHelper(); TreeItem actual = treeHelper.findTreeItem(produkt, tv.getRoot()); @@ -647,7 +657,7 @@ public class AllinOneView extends Application { return false; } - public VerkaufsproduktType checkPlausis(List plausiList, TreeItem vp){ + public TreeItem checkPlausis(List plausiList, TreeItem vp, APrioriProduktbausteinType verkaufsprodukt){ Repository repo = new SailRepository(new MemoryStore()); repo.init(); @@ -656,19 +666,43 @@ public class AllinOneView extends Application { conn.add(model); - for (Plausi plausi : plausiList) { - String sparql = plausi.getQuery(); + plausiList.stream().filter(p -> p.getArt().equals("update")).forEach(p -> { + String query = p.getQuery(); + + conn.prepareUpdate(query).execute(); + }); + + model.clear(); + conn.getStatements(null, null, null).forEach(model::add); + + plausiList.stream().filter(p -> p.getArt().equals("graph")).forEach(p -> { + String sparql = p.getQuery(); GraphQuery q = conn.prepareGraphQuery(sparql); Model validatedModel = QueryResults.asModel(q.evaluate()); model.addAll(validatedModel); + }); - } ByteArrayOutputStream baos = new ByteArrayOutputStream(); Rio.write(model, baos, RDFFormat.JSONLD); - return rdfHelper.calculateRequestToVerkaufsprodukt(baos.toString()); + + VerkaufsproduktType neuRoot = rdfHelper.calculateRequestToVerkaufsprodukt(baos.toString()); + TreeItem newRoot = new TreeItem<>(new GuiProdukt(neuRoot)); + newRoot.setExpanded(true); + + try { + treeHelper.produktToTree(neuRoot, newRoot); + + TreeItem aprioriTree = new TreeItem<>(); + treeHelper.aprioriProduktToTree(verkaufsprodukt, aprioriTree); + + return (treeHelper.sortTree(treeHelper.addAprioriToCalc(newRoot, aprioriTree))); + } catch (Exception ex) { + throw new RuntimeException(ex); + } } catch(Exception ignored) { + ignored.printStackTrace(); System.out.println("CheckPlausi: " + ignored.getMessage()); return null; } diff --git a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/Plausi.java b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/Plausi.java index 2c2256a5..b1081dfa 100644 --- a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/Plausi.java +++ b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/Plausi.java @@ -3,11 +3,14 @@ package at.vvo.omds.client.gui; public class Plausi { String id; String beschreibung; + String art; String query; - public Plausi(String name, String beschreibung, String query) { + + public Plausi(String name, String beschreibung,String art, String query) { this.id = name; this.beschreibung = beschreibung; + this.art = art; this.query = query; } @@ -34,4 +37,8 @@ public class Plausi { public void setQuery(String query) { this.query = query; } + + public String getArt() { return art; } + + public void setArt(String art) { this.art = art; } } 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 a415148f..4ed9fc7f 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 @@ -1,6 +1,9 @@ package at.vvo.omds.client.gui; import at.vvo.omds.types.omds3.r2025_05.common.*; +import at.vvo.omds.types.omds3.r2025_05.on2antrag.sachPrivat.RisikoGebaeudeType; +import at.vvo.omds.types.omds3.r2025_05.on2antrag.sachPrivat.RisikoHaushaltType; +import at.vvo.omds.types.omds3.r2025_05.on2antrag.sachPrivat.VersichertesObjektSachPrivatType; import jakarta.xml.bind.JAXBElement; import javafx.scene.control.TreeItem; import javafx.util.Pair; @@ -49,7 +52,6 @@ public class RDFHelper { private List> getAttributesFromRequest(String response) throws IOException { Model model = Rio.parse(new StringReader(response), "", RDFFormat.JSONLD); - Rio.write(model, System.out, RDFFormat.TURTLE); List> erg = new ArrayList<>(); String baseIri = "http://vvo.pisanoapi.at/"; @@ -61,12 +63,15 @@ public class RDFHelper { IRI minIri = iri(baseIri + "min"); IRI defaultIri = iri(baseIri + "default"); IRI valueIri = iri(baseIri + "value"); + IRI aenderbarIri = iri(baseIri + "aenderbar"); for (Resource iri : Models.subjectIRIs(model)) { String bez = Models.objectLiteral(model.filter(iri, bezIri, null)).map(Literal::getLabel).orElse(null); String prodId = Models.objectResource(model.filter(iri, produktIri, null)).map(Resource::stringValue).orElse(null); Boolean required = Boolean.valueOf(Models.objectLiteral(model.filter(iri, requiredIri, null)).map(Literal::getLabel).orElse(null)); + Boolean aenderbar = Boolean.valueOf(Models.objectLiteral(model.filter(iri, aenderbarIri, null)).map(Literal::getLabel).orElse("true")); + if (iri.stringValue().contains("ElemBoolean")) { AttributBooleanType ab = new AttributBooleanType(); @@ -81,6 +86,7 @@ public class RDFHelper { ab.setDefault(def); ab.setPflichtfeld(required); ab.setValue(val); + ab.setAenderbar(aenderbar); Pair atPair = new Pair<>(prodId, ab); erg.add(atPair); @@ -100,7 +106,8 @@ public class RDFHelper { ai.setPflichtfeld(required); ai.setMax(max); ai.setMin(min); - ai.setValue(val); + if (!val.equals(-1))ai.setValue(val); + ai.setAenderbar(aenderbar); Pair atPair = new Pair<>(prodId, ai); erg.add(atPair); @@ -120,7 +127,8 @@ public class RDFHelper { ad.setPflichtfeld(required); ad.setMax(max); ad.setMin(min); - ad.setValue(val); + if (!val.equals(BigDecimal.valueOf(-1)))ad.setValue(val); + ad.setAenderbar(aenderbar); Pair atPair = new Pair<>(prodId, ad); erg.add(atPair); @@ -137,6 +145,7 @@ public class RDFHelper { as.setDefault(def); as.setPflichtfeld(required); as.setValue(val); + as.setAenderbar(aenderbar); Pair atPair = new Pair<>(prodId, as); erg.add(atPair); @@ -151,8 +160,8 @@ public class RDFHelper { Model model = Rio.parse(new StringReader(response), "", RDFFormat.JSONLD); for (Resource iri : Models.subjectIRIs(model)) { - if (iri.stringValue().contains("plausi")) { - String id = iri.stringValue().replace("http://vvo.pisanoapi.at/plausi", ""); + if (iri.stringValue().contains("Plausi")) { + String id = iri.stringValue().replace("http://vvo.pisanoapi.at/Plausi", ""); ValueFactory vf = SimpleValueFactory.getInstance(); String beschreibung = Models.objectLiteral(model.filter(iri, vf.createIRI( @@ -161,7 +170,10 @@ public class RDFHelper { String query = Models.objectLiteral(model.filter(iri, vf.createIRI( "http://vvo.pisanoapi.at/query"), null)).map(Literal::getLabel).orElse(null); - result.add(new Plausi(id, beschreibung, query)); + String art = Models.objectLiteral(model.filter(iri, vf.createIRI( + "http://vvo.pisanoapi.at/art"), null)).map(Literal::getLabel).orElse(null); + + result.add(new Plausi(id, beschreibung, art, query)); } } return result; @@ -177,8 +189,6 @@ public class RDFHelper { if (iri.stringValue().contains("ProdElement")) { String id = iri.stringValue(); - - System.out.println(iri.stringValue()); ValueFactory vf = SimpleValueFactory.getInstance(); int insId = Integer.parseInt(Models.objectLiteral(model.filter(iri, vf.createIRI( @@ -205,7 +215,7 @@ public class RDFHelper { .map(Literal::getLabel).orElse(null)) : null; Optional parentId = Models.objectResource(model.filter(iri, vf.createIRI( - "http://vvo.pisanoapi.at/parent"), null)).map(Resource::stringValue); + "http://vvo.pisanoapi.at/Parent"), null)).map(Resource::stringValue); APrioriProduktbausteinType verkaufsproduktType; if (parentId.isPresent()) { @@ -241,8 +251,6 @@ public class RDFHelper { Object baustein = entry.getValue(); String parentId = parents.get(id); - System.out.println(id + " " + baustein.getClass().getName()); - if (parentId != null && bausteine.containsKey(parentId)){ bausteine.get(parentId).getBausteine().add((APrioriUnterbausteinType) baustein); }else { @@ -254,7 +262,6 @@ public class RDFHelper { } public VerkaufsproduktType getCalculateRDF(String r) throws DatatypeConfigurationException, IOException { - return calculateRequestToVerkaufsprodukt(restClient.post() .uri("http://localhost:9090/CalculateRequest") .contentType(MediaType.APPLICATION_JSON) @@ -271,8 +278,12 @@ public class RDFHelper { Map parents = new HashMap<>(); List> attListe = getAttributesFromRequest(calculateRequest); - for (Resource iri : Models.subjectIRIs(model)) { + List> risikoObjektListe = getRisikoObjekteFromRequest(calculateRequest); + List subjects = new ArrayList<>(Models.subjectIRIs(model)); + Collections.reverse(subjects); + + for (Resource iri : subjects) { if (iri.stringValue().contains("Prod")) { String id = iri.stringValue(); @@ -290,8 +301,21 @@ 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 meldung = Models.objectLiteral(model.filter(iri, vf.createIRI( - "http://vvo.pisanoapi.at/meldung"), 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 -> { + IRI spezMeldung = (IRI) s; + + String msg = Models.objectLiteral(model.filter(spezMeldung, vf.createIRI("http://vvo.pisanoapi.at/errorMsg"), null)).map(Literal::getLabel).orElse(null); + String errorType = Models.objectLiteral(model.filter(spezMeldung, vf.createIRI("http://vvo.pisanoapi.at/errorType"), null)).map(Literal::getLabel).orElse(null); + + ServiceFault serviceFault = new ServiceFault(); + + serviceFault.setErrorMsg(msg); + serviceFault.setErrorType(BigInteger.valueOf(Integer.parseInt("1"))); + + return serviceFault; + }).toList(); 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(iri, vf.createIRI( @@ -300,12 +324,16 @@ public class RDFHelper { "http://vvo.pisanoapi.at/salesTo"), null)).map(Literal::getLabel).isPresent() ? DatatypeFactory.newInstance().newXMLGregorianCalendar( Models.objectLiteral(model.filter(iri, vf.createIRI( "http://vvo.pisanoapi.at/salesTo"), null)).map(Literal::getLabel).orElse(null)) : null; + List fahrzeuge = model.filter(iri, vf.createIRI( + "http://vvo.pisanoapi.at/VersichertesInteresseType"), null).objects().stream() + .filter(s -> s instanceof IRI).map(Value::stringValue).toList(); Optional parentId = Models.objectResource(model.filter(iri, vf.createIRI( - "http://vvo.pisanoapi.at/parent"), null)).map(Resource::stringValue); + "http://vvo.pisanoapi.at/Parent"), null)).map(Resource::stringValue); ObjectFactoryFactory off = new ObjectFactoryFactory(); - ProduktbausteinType verkaufsproduktType = (ProduktbausteinType) off.create(type); + + ProduktbausteinType verkaufsproduktType = off.create(type); verkaufsproduktType.setId(iri.stringValue().substring("http://vvo.pisanoapi.at/ProdElement".length(), iri.stringValue().indexOf("-") > 0 ? iri.stringValue().indexOf("-") : iri.stringValue().length())); verkaufsproduktType.setBezeichnung(bez); @@ -316,11 +344,21 @@ public class RDFHelper { verkaufsproduktType.setMinVorkommen(minOccurrence); verkaufsproduktType.setRisikoobjektErforderlich(risikoobjektType != null); - if (meldung != null) { - ServiceFault tmp = new ServiceFault(); - tmp.setErrorMsg(meldung); - tmp.setErrorType(BigInteger.ONE); - verkaufsproduktType.getMeldungen().add(tmp); + for (ServiceFault meldung : meldungen) { + if (meldung != null) { + ServiceFault tmp = new ServiceFault(); + tmp.setErrorMsg(meldung.getErrorMsg()); + tmp.setErrorType(meldung.getErrorType()); + verkaufsproduktType.getMeldungen().add(tmp); + } + } + + for (Pair pair : risikoObjektListe) { + for (String fahrzeugId : fahrzeuge) { + if (pair.getKey().equals(fahrzeugId)) { + verkaufsproduktType.getVersicherteObjekte().add(pair.getValue()); + } + } } for (Pair pair : attListe) { @@ -336,6 +374,7 @@ public class RDFHelper { List verkaufsprodukteList = new ArrayList<>(); + for (Map.Entry entry : bausteine.entrySet()){ String id = entry.getKey(); ProduktbausteinType baustein = entry.getValue(); @@ -351,17 +390,86 @@ public class RDFHelper { return verkaufsprodukteList.getFirst(); } + private List> getRisikoObjekteFromRequest(String calculateRequest) throws IOException, DatatypeConfigurationException { + Model model = Rio.parse(new StringReader(calculateRequest), "", RDFFormat.JSONLD); + List> erg = new ArrayList<>(); + + String baseIri = "http://vvo.pisanoapi.at/"; + + IRI bezIri = iri(baseIri + "bez"); + IRI baujahrIri = iri(baseIri + "baujahr"); + IRI erstzulassungIri = iri(baseIri + "erstzulassung"); + + 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; + + FahrzeugType fahrzeug = new FahrzeugType(); + + fahrzeug.setErstzulassdat(erstzulassung); + fahrzeug.setBaujahr(baujahr); + fahrzeug.setHandelsbez(bez); + + erg.add(new Pair<>(id, fahrzeug)); + } + } + return erg; + } + public Model createRdfModel(TreeItem vp) { Model erg = new LinkedHashModel(); String baseIri = "http://vvo.pisanoapi.at/"; - Map occCounter = new HashMap<>(); - addProduktToModel(vp, erg, baseIri, null, occCounter); + Map idCount = new LinkedHashMap<>(); + createIdCount(idCount, vp); + + Map, IRI> iriMap = new LinkedHashMap<>(); + createIriMap(vp, baseIri, idCount, iriMap); + + addProduktToModel(vp, erg, baseIri, null, iriMap); + + Rio.write(erg, System.out, RDFFormat.TURTLE); return erg; } - public void addProduktToModel(TreeItem guiProdukt, Model model, String baseIri, String parentId, Map occCounter) { + private void createIdCount(Map idCount, TreeItem vp) { + if (!idCount.containsKey(((ProduktbausteinType) vp.getValue().getProdukt()).getId())) { + idCount.put(((ProduktbausteinType) vp.getValue().getProdukt()).getId(), 1); + }else { + idCount.put(((ProduktbausteinType) vp.getValue().getProdukt()).getId(), idCount.get(((ProduktbausteinType) vp.getValue().getProdukt()).getId()) + 1); + } + + for (TreeItem child : vp.getChildren()){ + createIdCount(idCount, child); + } + + } + + private void createIriMap(TreeItem produkt, String baseIri, Map idCount, Map, IRI> iriMap) { + IRI baseElemIri = iri(baseIri + "ProdElement"); + + for (int i = 1; i < idCount.get(((ProduktbausteinType)produkt.getValue().getProdukt()).getId())+1; i++) { + IRI tmpIri = iri(baseElemIri + ((ProduktbausteinType) produkt.getValue().getProdukt()).getId() + "-" + i); + + if (!iriMap.containsValue(tmpIri)) { + iriMap.put(produkt, tmpIri); + break; + } + } + + for (TreeItem child : produkt.getChildren()){ + createIriMap(child, baseIri, idCount, iriMap); + } + + } + + public void addProduktToModel(TreeItem guiProdukt, Model model, String baseIri, String parentId, Map, IRI> iriMap) { ProduktbausteinType produkt = (ProduktbausteinType) guiProdukt.getValue().getProdukt(); IRI prodelemIri = iri(baseIri + "ProdElement"); @@ -374,21 +482,24 @@ public class RDFHelper { IRI maxOccurrenceIri = iri(baseIri + "maxOccurrence"); IRI typeIri = iri(baseIri + "type"); IRI risikoobjektTypeIri = iri(baseIri + "risikoobjektType"); - IRI bausteinIri = iri(baseIri + "baustein"); - IRI parentIri = iri(baseIri + "parent"); + IRI bausteinIri = iri(baseIri + "Baustein"); + IRI parentIri = iri(baseIri + "Parent"); - int occ = occCounter.merge(String.valueOf(produkt.getId()), 1, Integer::sum); - IRI vpIri = iri(baseIri + "ProdElement" + produkt.getId() + "-" + occ); + IRI vpIri = iriMap.get(guiProdukt); if (!guiProdukt.getValue().isNotIncluded()) { model.add(vpIri, RDF.TYPE, prodelemIri); model.add(vpIri, bezIri, Values.literal(produkt.getBezeichnung())); - model.add(vpIri, salesFromIri, Values.literal(produkt.getVerkaufsoffenVon())); + if (produkt.getVerkaufsoffenVon() != null) + model.add(vpIri, salesFromIri, Values.literal(produkt.getVerkaufsoffenVon())); if (produkt.getVerkaufsoffenBis() != null) model.add(vpIri, salesToIri, Values.literal(produkt.getVerkaufsoffenBis())); - model.add(vpIri, minOccurrenceIri, Values.literal(produkt.getMinVorkommen())); - model.add(vpIri, maxOccurrenceIri, Values.literal(produkt.getMaxVorkommen())); + if (produkt.getMinVorkommen() != null) + model.add(vpIri, minOccurrenceIri, Values.literal(produkt.getMinVorkommen())); + if (produkt.getMaxVorkommen() != null) + 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 (parentId != null) model.add(vpIri, parentIri, Values.iri(parentId)); @@ -402,6 +513,7 @@ public class RDFHelper { IRI atMax = iri(baseIri + "max"); IRI atMin = iri(baseIri + "min"); IRI atDefault = iri(baseIri + "default"); + IRI atAenderbar = iri(baseIri + "aenderbar"); if (attribut instanceof AttributIntType){ IRI specificAt = iri(baseIri + "ElemInt" + attribut.getId()); @@ -414,6 +526,7 @@ public class RDFHelper { model.add(specificAt, atMax, Values.literal(((AttributIntType) attribut).getMax())); model.add(specificAt, atMin, Values.literal(((AttributIntType) attribut).getMin())); model.add(specificAt, atDefault, Values.literal(((AttributIntType) attribut).getDefault())); + model.add(specificAt, atAenderbar, Values.literal(attribut.isAenderbar() != null ? attribut.isAenderbar().toString() : true)); } else if (attribut instanceof AttributBooleanType) { IRI specificAt = iri(baseIri + "ElemBoolean" + attribut.getId()); @@ -444,24 +557,64 @@ public class RDFHelper { if (((AttributDezimalType) attribut).getValue() != null) model.add(specificAt, atValue, Values.literal(((AttributDezimalType) attribut).getValue())); model.add(specificAt, atProd, vpIri); if (((AttributDezimalType) attribut).getMax() != null) model.add(specificAt, atMax, Values.literal(((AttributDezimalType) attribut).getMax())); - if (((AttributDezimalType) attribut).getMin() != null)model.add(specificAt, atMin, Values.literal(((AttributDezimalType) attribut).getMin())); - if (((AttributDezimalType) attribut).getDefault() != null)model.add(specificAt, atDefault, Values.literal(((AttributDezimalType) attribut).getDefault())); + if (((AttributDezimalType) attribut).getMin() != null) model.add(specificAt, atMin, Values.literal(((AttributDezimalType) attribut).getMin())); + if (((AttributDezimalType) attribut).getDefault() != null) model.add(specificAt, atDefault, Values.literal(((AttributDezimalType) attribut).getDefault())); + } + } + + int meldungId = 1; + for (ServiceFault sf : produkt.getMeldungen()){ + IRI meldung = iri(baseIri + "Meldung"); + IRI spezMeldung = iri(baseIri + "Meldung" + meldungId); + IRI meldungMsg = iri(baseIri + "errorMsg"); + IRI meldungType = iri(baseIri + "errorType"); + + model.add(vpIri, meldung, spezMeldung); + model.add(spezMeldung, meldungMsg, Values.literal(sf.getErrorMsg())); + model.add(spezMeldung, meldungType, Values.literal(sf.getErrorType())); + + meldungId++; + } + + int fahrzeugId = 1; + for (VersichertesInteresseType ro : produkt.getVersicherteObjekte()){ + if (ro instanceof FahrzeugType fa){ + IRI fahrzeugIri = iri(baseIri + "FahrzeugType"); + IRI faIri = iri(fahrzeugIri.stringValue() + fahrzeugId); + IRI faBaujahrIri = iri(baseIri + "baujahr"); + IRI faBezIri = iri(baseIri + "bez"); + IRI faErstZuIri = iri(baseIri + "erstzulassung"); + 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(vpIri, prodRoIri, faIri); + + fahrzeugId++; + } else if (ro instanceof VersicherteLiegenschaftType) { + //To-Do + } else if (ro instanceof RisikoGebaeudeType) { + //To-Do + }else if (ro instanceof RisikoHaushaltType) { + //To-Do + }else if (ro instanceof VersichertePersonType) { + //To-Do + }else if (ro instanceof VersichertesObjektSachPrivatType) { + //To-Do } } -// for (int i = 0; i < vp.getVersicherteObjekte().size(); i++) { -// erg.add(vpIri, risikoobjektTypeIri, Values.literal(vp.getVersicherteObjekte().get(i))); -// } for (int i = 0; i < guiProdukt.getChildren().size(); i++) { - IRI unterbausteinIri = iri(baseIri + "ProdElement" + ((ProduktbausteinType)guiProdukt.getChildren().get(i).getValue().getProdukt()).getId() + - "-" + occCounter.getOrDefault(((ProduktbausteinType)guiProdukt.getChildren().get(i).getValue() - .getProdukt()).getId(), 1)); + IRI unterbausteinIri = iriMap.get(guiProdukt.getChildren().get(i)); if (!guiProdukt.getValue().isNotIncluded()) { model.add(vpIri, bausteinIri, unterbausteinIri); } String newParentId = vpIri.stringValue(); - addProduktToModel(guiProdukt.getChildren().get(i), model, baseIri, newParentId, occCounter); + addProduktToModel(guiProdukt.getChildren().get(i), model, baseIri, newParentId, iriMap); } } } diff --git a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/RisikoobjektView.java b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/RisikoobjektView.java index 63ac73d6..f7ebcfc6 100644 --- a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/RisikoobjektView.java +++ b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/RisikoobjektView.java @@ -119,6 +119,10 @@ public class RisikoobjektView { choiceBox.getSelectionModel().selectedItemProperty().addListener((obs, oldVal, newVal) -> { if (newVal != null) { + int a = createForm.getChildren().size(); + for (int i = 1; i < a; i++) { + createForm.getChildren().remove(i); + } switch (newVal) { case "Versichertes objekt SachPrivat": { System.out.println("formular sach Privat"); 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 a56370d0..e7615e18 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 @@ -2,6 +2,7 @@ package at.vvo.omds.client.gui; import at.vvo.omds.types.omds3.r2025_05.common.APrioriProduktbausteinType; import at.vvo.omds.types.omds3.r2025_05.common.ProduktbausteinType; +import javafx.collections.FXCollections; import javafx.scene.control.TreeItem; import java.util.*; @@ -87,6 +88,7 @@ public class TreeHelper { if (!produkt.getBausteine().isEmpty()) { for (int i = 0; i < produkt.getBausteine().size(); i++) { TreeItem up = aprioriItemToCalcItem(new TreeItem<>(new GuiProdukt(produkt.getBausteine().get(i)))); + up.getValue().setNotIncluded(true); up.setExpanded(true); if (!produkt.getBausteine().get(i).getBausteine().isEmpty()) { aprioriProduktToTree(produkt.getBausteine().get(i), up); @@ -101,6 +103,7 @@ public class TreeHelper { for (int i = 0; i < produkt.getBausteine().size(); i++) { TreeItem up = new TreeItem<>(new GuiProdukt(produkt.getBausteine().get(i))); up.setExpanded(true); + if (!produkt.getBausteine().get(i).getBausteine().isEmpty()) { produktToTree(produkt.getBausteine().get(i), up); } @@ -115,36 +118,34 @@ public class TreeHelper { public TreeItem aprioriItemToCalcItem(TreeItem produkt) throws Exception { TreeItem ergItem = new TreeItem<>(); - Object erg = new ObjectFactoryFactory().create( + ProduktbausteinType erg = new ObjectFactoryFactory().create( ((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getType()); if (erg != null) { if (ProduktbausteinType.class.isAssignableFrom(erg.getClass())) { - ((ProduktbausteinType) erg).setId( + erg.setId( ((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getId()); - ((ProduktbausteinType) erg).setBezeichnung( + erg.setBezeichnung( ((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getName()); - ((ProduktbausteinType) erg).setVerkaufsoffenVon( + erg.setVerkaufsoffenVon( ((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getFrom()); - ((ProduktbausteinType) erg).setVerkaufsoffenBis( + erg.setVerkaufsoffenBis( ((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getTo()); - ((ProduktbausteinType) erg).getMeldungen().addAll( + erg.getMeldungen().addAll( ((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getMeldungen()); - ((ProduktbausteinType) erg).getAttribute().addAll( + erg.getAttribute().addAll( ((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getAttribute()); - ((ProduktbausteinType) erg).setMinVorkommen( + erg.setMinVorkommen( ((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getMinOccurrences()); - ((ProduktbausteinType) erg).setMaxVorkommen( + erg.setMaxVorkommen( ((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getMaxOccurrences()); - ((ProduktbausteinType) erg).setTyp( + erg.setTyp( ((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getType()); - - if (((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getRisikoobjektType() != null) { - ((ProduktbausteinType) erg).setRisikoobjektErforderlich(true); - } + erg.setRisikoobjektErforderlich( + ((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getRisikoobjektType() != null); for (int i = 0; i < ((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getBausteine().size(); i++) { - ((ProduktbausteinType) erg).getBausteine().add((ProduktbausteinType) aprioriItemToCalcItem( + erg.getBausteine().add((ProduktbausteinType) aprioriItemToCalcItem( new TreeItem<>(new GuiProdukt(((APrioriProduktbausteinType) produkt.getValue().getProdukt()) .getBausteine().get(i)))).getValue().getProdukt()); } @@ -161,76 +162,37 @@ public class TreeHelper { return ergItem; } -// public TreeItem addAprioriToCalc(TreeItem calcItem, TreeItem aprioriItem) { -// for (TreeItem aprioriChild : aprioriItem.getChildren()) { -// boolean isInCalc = false; -// int i = 0; -// for (TreeItem calcChild : calcItem.getChildren()) { -// if (((ProduktbausteinType) calcChild.getValue().getProdukt()).getId().equals( -// ((ProduktbausteinType) aprioriChild.getValue().getProdukt()).getId()) -// && !calcChild.getValue().isNotIncluded()) { -// isInCalc = true; -// if (!aprioriChild.getChildren().isEmpty()) { -// addAprioriToCalc(calcChild, aprioriChild); -//// calcItem.getChildren().set(i, calcChild); -// } -// } -// i++; -// } -// if (!isInCalc) { -// TreeItem missingCalcItem = cloneTreeItem(aprioriChild); -// calcItem.getChildren().add(missingCalcItem); -// missingCalcItem.getValue().setNotIncluded(true); -// } -// } -// return calcItem; -// } - public TreeItem addAprioriToCalc(TreeItem calcItem, TreeItem aprioriItem) { - for (TreeItem aprioriChild : aprioriItem.getChildren()) { - ProduktbausteinType aprioriProd = (ProduktbausteinType) aprioriChild.getValue().getProdukt(); - String aprioriId = aprioriProd.getId(); - - TreeItem matchingCalcChild = calcItem.getChildren().stream() - .filter(c -> { - ProduktbausteinType calcProd = (ProduktbausteinType) c.getValue().getProdukt(); - return calcProd.getId().equals(aprioriId) && !c.getValue().isNotIncluded(); - }) - .findFirst() - .orElse(null); - - if (matchingCalcChild != null) { - if (!aprioriChild.getChildren().isEmpty()) { - addAprioriToCalc(matchingCalcChild, aprioriChild); + boolean isInCalc = false; + int i = 0; + for (TreeItem calcChild : calcItem.getChildren()) { + if (((ProduktbausteinType) calcChild.getValue().getProdukt()).getId().equals( + ((ProduktbausteinType) aprioriChild.getValue().getProdukt()).getId()) + && !calcChild.getValue().isNotIncluded()) { + isInCalc = true; + if (!aprioriChild.getChildren().isEmpty()) { + addAprioriToCalc(calcChild, aprioriChild); + } } - } else { - TreeItem cloned = cloneTreeItem(aprioriChild); - cloned.getValue().setNotIncluded(true); - - calcItem.getChildren().add(cloned); + i++; + } + if (!isInCalc) { + TreeItem missingCalcItem = cloneTreeItem(aprioriChild); + calcItem.getChildren().add(missingCalcItem); } } - return calcItem; } public TreeItem sortTree(TreeItem parent) { -// FXCollections.sort(parent.getChildren(), Comparator.comparing( -// item -> ((ProduktbausteinType)((TreeItem)item).getValue().getProdukt()).getBezeichnung() -// )); -// -// Comparator> compareBez = (s1, s2) -> { -// int erg = ((ProduktbausteinType)s1.getValue().getProdukt()).getBezeichnung().compareTo(((ProduktbausteinType)s2.getValue().getProdukt()).getBezeichnung()); -// if (erg == 0) { -// return 1; -// }else { -// return erg; -// } -// }; -// for (TreeItem child : parent.getChildren()) { -// sortTree(child); -// } + FXCollections.sort(parent.getChildren(), Comparator.comparing( + item -> ((ProduktbausteinType)item.getValue().getProdukt()).getBezeichnung() + )); + + for (TreeItem child : parent.getChildren()) { + sortTree(child); + } return parent; } } 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 2dd02307..21cef5f9 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 @@ -38,13 +38,8 @@ public class BuildCalculateRequestAuskunft { } static public String buildRDFRequestFromTreeView(TreeView treeView, XMLGregorianCalendar vtBeg) { - VerkaufsproduktType verkaufsprodukt = TreeViewToVerkaufsprodukt(treeView, vtBeg); - verkaufsprodukt.setVtgBeg(vtBeg); - verkaufsprodukt.setTyp(((ProduktbausteinType)treeView.getRoot().getValue().getProdukt()).getTyp()); - RDFHelper rdf = new RDFHelper(); - - Model requestModel = rdf.createRdfModel(new TreeItem<>(new GuiProdukt(verkaufsprodukt, true))); + Model requestModel = rdf.createRdfModel(treeView.getRoot()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); Rio.write(requestModel, baos, RDFFormat.JSONLD); @@ -58,7 +53,7 @@ public class BuildCalculateRequestAuskunft { } public static ProduktbausteinType TreeItemToBaustein(TreeItem treeItem) { - ProduktbausteinType baustein = (ProduktbausteinType) new ObjectFactoryFactory().create( + ProduktbausteinType baustein = new ObjectFactoryFactory().create( ((ProduktbausteinType)treeItem.getValue().getProdukt()).getTyp()); baustein.setBezeichnung(((ProduktbausteinType)treeItem.getValue().getProdukt()).getBezeichnung()); @@ -69,6 +64,7 @@ public class BuildCalculateRequestAuskunft { baustein.setTyp(((ProduktbausteinType)treeItem.getValue().getProdukt()).getTyp()); baustein.setMinVorkommen(((ProduktbausteinType)treeItem.getValue().getProdukt()).getMinVorkommen()); baustein.setMaxVorkommen(((ProduktbausteinType)treeItem.getValue().getProdukt()).getMaxVorkommen()); + baustein.getVersicherteObjekte().addAll(((ProduktbausteinType) treeItem.getValue().getProdukt()).getVersicherteObjekte()); return baustein; } @@ -87,7 +83,7 @@ public class BuildCalculateRequestAuskunft { } public static ProduktbausteinType addUpFromTreeItem(TreeItem treeItem) { - ProduktbausteinType baustein = (ProduktbausteinType) TreeItemToBaustein(treeItem); + ProduktbausteinType baustein = TreeItemToBaustein(treeItem); if (!treeItem.getChildren().isEmpty()) { for (int i = 0; i < treeItem.getChildren().size(); i++) { diff --git a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/api/calc/CalculateRequestAuskunftService.java b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/api/calc/CalculateRequestAuskunftService.java index aebc65dc..fb115a06 100644 --- a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/api/calc/CalculateRequestAuskunftService.java +++ b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/api/calc/CalculateRequestAuskunftService.java @@ -43,8 +43,6 @@ public class CalculateRequestAuskunftService { String request = BuildCalculateRequestAuskunft.buildRDFRequestFromTreeView(treeView, vtBeg); - System.out.println(request); - RDFHelper rdfHelper = new RDFHelper(); VerkaufsproduktType response = rdfHelper.getCalculateRDF(request); log.info("Got Response As below ========= : ");