Risikoobjekte werden auch mit RDF verarbeitet. Plausi art hinzugefügt. Häufigere prüfung von Plausis. Attribute können änderbar oder nicht änderbar gesetzt werden. Sortieren angepasst.
This commit is contained in:
@@ -209,7 +209,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs
|
||||
<artifactId>javafx-maven-plugin</artifactId>
|
||||
<version>0.0.8</version>
|
||||
<configuration>
|
||||
<mainClass>at.vvo.omds.client.gui.AllinOneView</mainClass>
|
||||
<mainClass>at.vvo.omds.client.gui.MainView</mainClass>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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<String, Integer> timesItemisIncludedById = new HashMap<>();
|
||||
Map<TreeItem<GuiProdukt>, Map<AttributType, String>> 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<GuiProdukt> 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<GuiProdukt> newRoot = new TreeItem<>(new GuiProdukt(neuRoot));
|
||||
newRoot.setExpanded(true);
|
||||
|
||||
try {
|
||||
treeHelper.produktToTree(neuRoot, newRoot);
|
||||
|
||||
TreeItem<GuiProdukt> abc = new TreeItem<>();
|
||||
|
||||
treeHelper.aprioriProduktToTree(verkaufsprodukt, abc);
|
||||
|
||||
tv.setRoot(treeHelper.sortTree(treeHelper.addAprioriToCalc(newRoot, abc)));
|
||||
// tv.setRoot(treeHelper.sortTree(newRoot));
|
||||
TreeItem<GuiProdukt> 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<GuiProdukt> 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<GuiProdukt> 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<GuiProdukt> treeItem) {
|
||||
public boolean shouldBeIncluded(TreeItem<GuiProdukt> 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<GuiProdukt> tv) {
|
||||
public boolean isMeldungVorhanden(ProduktbausteinType produkt, TreeView<GuiProdukt> tv) {
|
||||
TreeHelper treeHelper = new TreeHelper();
|
||||
TreeItem<GuiProdukt> actual = treeHelper.findTreeItem(produkt, tv.getRoot());
|
||||
|
||||
@@ -647,7 +657,7 @@ public class AllinOneView extends Application {
|
||||
return false;
|
||||
}
|
||||
|
||||
public VerkaufsproduktType checkPlausis(List<Plausi> plausiList, TreeItem<GuiProdukt> vp){
|
||||
public TreeItem<GuiProdukt> checkPlausis(List<Plausi> plausiList, TreeItem<GuiProdukt> 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<GuiProdukt> newRoot = new TreeItem<>(new GuiProdukt(neuRoot));
|
||||
newRoot.setExpanded(true);
|
||||
|
||||
try {
|
||||
treeHelper.produktToTree(neuRoot, newRoot);
|
||||
|
||||
TreeItem<GuiProdukt> 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;
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
|
||||
@@ -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<Pair<String, AttributType>> getAttributesFromRequest(String response) throws IOException {
|
||||
Model model = Rio.parse(new StringReader(response), "", RDFFormat.JSONLD);
|
||||
Rio.write(model, System.out, RDFFormat.TURTLE);
|
||||
List<Pair<String, AttributType>> 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<String, AttributType> 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<String, AttributType> 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<String, AttributType> 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<String, AttributType> 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<String> 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<String, String> parents = new HashMap<>();
|
||||
|
||||
List<Pair<String, AttributType>> attListe = getAttributesFromRequest(calculateRequest);
|
||||
for (Resource iri : Models.subjectIRIs(model)) {
|
||||
List<Pair<String, FahrzeugType>> risikoObjektListe = getRisikoObjekteFromRequest(calculateRequest);
|
||||
|
||||
List<Resource> 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<ServiceFault> 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<String> fahrzeuge = model.filter(iri, vf.createIRI(
|
||||
"http://vvo.pisanoapi.at/VersichertesInteresseType"), null).objects().stream()
|
||||
.filter(s -> s instanceof IRI).map(Value::stringValue).toList();
|
||||
|
||||
Optional<String> 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<String, FahrzeugType> pair : risikoObjektListe) {
|
||||
for (String fahrzeugId : fahrzeuge) {
|
||||
if (pair.getKey().equals(fahrzeugId)) {
|
||||
verkaufsproduktType.getVersicherteObjekte().add(pair.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (Pair<String, AttributType> pair : attListe) {
|
||||
@@ -336,6 +374,7 @@ public class RDFHelper {
|
||||
|
||||
List<VerkaufsproduktType> verkaufsprodukteList = new ArrayList<>();
|
||||
|
||||
|
||||
for (Map.Entry<String, ProduktbausteinType> entry : bausteine.entrySet()){
|
||||
String id = entry.getKey();
|
||||
ProduktbausteinType baustein = entry.getValue();
|
||||
@@ -351,17 +390,86 @@ public class RDFHelper {
|
||||
return verkaufsprodukteList.getFirst();
|
||||
}
|
||||
|
||||
private List<Pair<String, FahrzeugType>> getRisikoObjekteFromRequest(String calculateRequest) throws IOException, DatatypeConfigurationException {
|
||||
Model model = Rio.parse(new StringReader(calculateRequest), "", RDFFormat.JSONLD);
|
||||
List<Pair<String, FahrzeugType>> 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<GuiProdukt> vp) {
|
||||
Model erg = new LinkedHashModel();
|
||||
String baseIri = "http://vvo.pisanoapi.at/";
|
||||
|
||||
Map<String,Integer> occCounter = new HashMap<>();
|
||||
addProduktToModel(vp, erg, baseIri, null, occCounter);
|
||||
Map<String, Integer> idCount = new LinkedHashMap<>();
|
||||
createIdCount(idCount, vp);
|
||||
|
||||
Map<TreeItem<GuiProdukt>, 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> guiProdukt, Model model, String baseIri, String parentId, Map<String,Integer> occCounter) {
|
||||
private void createIdCount(Map<String, Integer> idCount, TreeItem<GuiProdukt> 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<GuiProdukt> child : vp.getChildren()){
|
||||
createIdCount(idCount, child);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void createIriMap(TreeItem<GuiProdukt> produkt, String baseIri, Map<String, Integer> idCount, Map<TreeItem<GuiProdukt>, 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<GuiProdukt> child : produkt.getChildren()){
|
||||
createIriMap(child, baseIri, idCount, iriMap);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void addProduktToModel(TreeItem<GuiProdukt> guiProdukt, Model model, String baseIri, String parentId, Map<TreeItem<GuiProdukt>, 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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<GuiProdukt> 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<GuiProdukt> 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<GuiProdukt> aprioriItemToCalcItem(TreeItem<GuiProdukt> produkt) throws Exception {
|
||||
|
||||
TreeItem<GuiProdukt> 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<GuiProdukt> addAprioriToCalc(TreeItem<GuiProdukt> calcItem, TreeItem<GuiProdukt> aprioriItem) {
|
||||
// for (TreeItem<GuiProdukt> aprioriChild : aprioriItem.getChildren()) {
|
||||
// boolean isInCalc = false;
|
||||
// int i = 0;
|
||||
// for (TreeItem<GuiProdukt> 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<GuiProdukt> missingCalcItem = cloneTreeItem(aprioriChild);
|
||||
// calcItem.getChildren().add(missingCalcItem);
|
||||
// missingCalcItem.getValue().setNotIncluded(true);
|
||||
// }
|
||||
// }
|
||||
// return calcItem;
|
||||
// }
|
||||
|
||||
public TreeItem<GuiProdukt> addAprioriToCalc(TreeItem<GuiProdukt> calcItem, TreeItem<GuiProdukt> aprioriItem) {
|
||||
|
||||
for (TreeItem<GuiProdukt> aprioriChild : aprioriItem.getChildren()) {
|
||||
ProduktbausteinType aprioriProd = (ProduktbausteinType) aprioriChild.getValue().getProdukt();
|
||||
String aprioriId = aprioriProd.getId();
|
||||
|
||||
TreeItem<GuiProdukt> 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<GuiProdukt> 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<GuiProdukt> cloned = cloneTreeItem(aprioriChild);
|
||||
cloned.getValue().setNotIncluded(true);
|
||||
|
||||
calcItem.getChildren().add(cloned);
|
||||
i++;
|
||||
}
|
||||
if (!isInCalc) {
|
||||
TreeItem<GuiProdukt> missingCalcItem = cloneTreeItem(aprioriChild);
|
||||
calcItem.getChildren().add(missingCalcItem);
|
||||
}
|
||||
}
|
||||
|
||||
return calcItem;
|
||||
}
|
||||
|
||||
public TreeItem<GuiProdukt> sortTree(TreeItem<GuiProdukt> parent) {
|
||||
// FXCollections.sort(parent.getChildren(), Comparator.comparing(
|
||||
// item -> ((ProduktbausteinType)((TreeItem<GuiProdukt>)item).getValue().getProdukt()).getBezeichnung()
|
||||
// ));
|
||||
//
|
||||
// Comparator<TreeItem<GuiProdukt>> 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<GuiProdukt> child : parent.getChildren()) {
|
||||
// sortTree(child);
|
||||
// }
|
||||
FXCollections.sort(parent.getChildren(), Comparator.comparing(
|
||||
item -> ((ProduktbausteinType)item.getValue().getProdukt()).getBezeichnung()
|
||||
));
|
||||
|
||||
for (TreeItem<GuiProdukt> child : parent.getChildren()) {
|
||||
sortTree(child);
|
||||
}
|
||||
return parent;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,13 +38,8 @@ public class BuildCalculateRequestAuskunft {
|
||||
}
|
||||
|
||||
static public String buildRDFRequestFromTreeView(TreeView<GuiProdukt> 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<GuiProdukt> 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<GuiProdukt> treeItem) {
|
||||
ProduktbausteinType baustein = (ProduktbausteinType) TreeItemToBaustein(treeItem);
|
||||
ProduktbausteinType baustein = TreeItemToBaustein(treeItem);
|
||||
|
||||
if (!treeItem.getChildren().isEmpty()) {
|
||||
for (int i = 0; i < treeItem.getChildren().size(); i++) {
|
||||
|
||||
@@ -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 ========= : ");
|
||||
|
||||
Reference in New Issue
Block a user