From eeb4576fc19d09b2466f5d125784055cbe447fa6 Mon Sep 17 00:00:00 2001 From: LukasJuraczka Date: Wed, 27 Aug 2025 17:18:34 +0200 Subject: [PATCH] =?UTF-8?q?logFlow=20entfernt.=20Ausgabe=20immer=20=C3=BCb?= =?UTF-8?q?er=20die=20infoBox=20eines=20bestimmten=20Bausteins.=20Datum=20?= =?UTF-8?q?wird=20bei=20start=20der=20App=20auf=20das=20aktuelle=20datum?= =?UTF-8?q?=20gesetzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../at/vvo/omds/client/gui/AllinOneView.java | 270 ++---------------- .../at/vvo/omds/client/gui/ItemAttribute.java | 57 ++-- .../at/vvo/omds/client/gui/TreeHelper.java | 18 +- 3 files changed, 60 insertions(+), 285 deletions(-) diff --git a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/AllinOneView.java b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/AllinOneView.java index fcfb79c6..dc40109c 100644 --- a/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/AllinOneView.java +++ b/OMDSServiceDefinition/src/main/java/at/vvo/omds/client/gui/AllinOneView.java @@ -6,8 +6,9 @@ import at.vvo.omds.client.gui.api.SOAPConnector; import at.vvo.omds.types.omds3.r2025_05.common.*; import at.vvo.omds.types.omds3.r2025_05.on2antrag.common.*; import com.sun.xml.messaging.saaj.SOAPExceptionImpl; -import javafx.animation.PauseTransition; import javafx.application.Application; +import javafx.application.Platform; +import javafx.event.ActionEvent; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; @@ -17,13 +18,12 @@ import javafx.scene.layout.*; import javafx.scene.paint.Paint; import javafx.scene.text.*; import javafx.stage.Stage; -import javafx.util.Duration; import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.XMLGregorianCalendar; import java.math.BigInteger; -import java.time.LocalDateTime; +import java.time.LocalDate; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; @@ -34,7 +34,6 @@ public class AllinOneView extends Application { List> isNotIncluded = new ArrayList<>(); Map, Map> infoBoxFromItem = new HashMap<>(); - TextFlow logFlow = new TextFlow(); TreeHelper treeHelper = new TreeHelper(); public static void main(String[] args) { @@ -74,11 +73,10 @@ public class AllinOneView extends Application { controlBox[0].getChildren().add(dp); vpBox.getItems().clear(); - Text text = new Text("Kein Verkaufsoffenes Produkt an dem Datum: " + + Label label = new Label("Kein Verkaufsoffenes Produkt an dem Datum: " + stichtag.get().toString().substring(0, stichtag.get().toString().length() - 1) + System.lineSeparator()); - text.setFill(Paint.valueOf("#dd0000")); - logFlow.getChildren().add(text); + controlBox[0].getChildren().add(3, label); throw new NoSuchElementException(ex.getMessage()); } catch (SOAPExceptionImpl ex) { HBox errorBox = new HBox(); @@ -133,6 +131,12 @@ public class AllinOneView extends Application { }); + dp.setValue(LocalDate.now()); + + Platform.runLater(() -> { + dp.getOnAction().handle(new ActionEvent(dp, null)); + }); + VBox.setVgrow(newCalcRequestControlBox, Priority.ALWAYS); newCalcRequestControlBox.setAlignment(Pos.BOTTOM_RIGHT); @@ -141,7 +145,7 @@ public class AllinOneView extends Application { aprioriControlBox.getChildren().addAll(dp, vpBox); controlBox[0].getChildren().addAll(aprioriControlBox); - Scene scene = new Scene(controlBox[0], 900, 700); + Scene scene = new Scene(controlBox[0], 900, 600); stage.setScene(scene); stage.show(); @@ -168,16 +172,11 @@ public class AllinOneView extends Application { VBox treeBox = new VBox(); VBox infoBox = new VBox(); - ScrollPane logPane = new ScrollPane(logFlow); - - if (!logFlow.getChildren().isEmpty()) treeHelper.setLogFlow(logFlow); TreeItem vkp = treeHelper.aprioriItemToCalcItem(new TreeItem<>(verkaufsprodukt)); vkp.setExpanded(true); treeHelper.messageToTree(verkaufsprodukt, vkp); - logFlow = treeHelper.getLogFlow(); - TreeView tv = new TreeView<>(vkp); tv.getSelectionModel().selectedItemProperty().addListener((obs, oldSelection, newSelection) -> { @@ -189,12 +188,13 @@ public class AllinOneView extends Application { ItemAttribute itemAttribute = new ItemAttribute(); if (!infoBoxFromItem.isEmpty()) itemAttribute.setInfoBoxFromItem(infoBoxFromItem); itemAttribute.addItemInfo(newSelection, infoBox); + if (newSelection.getValue() instanceof VerkaufsproduktType){ + itemAttribute.addVpInfo(infoBox, isMeldungVorhanden((ProduktbausteinType) newSelection.getValue(), tv), (VerkaufsproduktType) newSelection.getValue()); + } infoBoxFromItem = itemAttribute.getInfoBoxFromItem(); -// addItemInfo(newSelection, infoBox); }else{ infoBox.getChildren().removeAll(infoBox.getChildren()); } - }); final TreeItem originalRoot = treeHelper.cloneTreeItem(tv.getRoot()); @@ -242,22 +242,6 @@ public class AllinOneView extends Application { label.setMaxWidth(Double.MAX_VALUE); - if (!(getTreeItem().getValue() instanceof VerkaufsproduktType)) { - System.out.println(((ProduktbausteinType) getTreeItem().getValue()).getBezeichnung()); - System.out.println(timesItemisIncludedById.get( - ((ProduktbausteinType) getTreeItem().getValue()).getId()) != null); - System.out.println("..."); - System.out.println(((ProduktbausteinType) getTreeItem().getValue()).getMaxVorkommen() != null - && ((ProduktbausteinType) getTreeItem().getValue()).getMaxVorkommen() >= - timeItemIsIncludedByParent(getTreeItem().getParent(), - ((ProduktbausteinType) getTreeItem().getValue()).getId())); - System.out.println("..."); - System.out.println(timeItemIsIncludedByParent(getTreeItem().getParent(), - ((ProduktbausteinType) getTreeItem().getValue()).getId())); - System.out.println("..."); - System.out.println(((ProduktbausteinType) getTreeItem().getValue()).getMaxVorkommen() != null); - System.out.println("-----------------------------------------------------------------------------"); - } if (getTreeItem().getValue() instanceof VerkaufsproduktType || getTreeItem().getValue().getClass().equals(APrioriVerkaufsproduktType.class)) { cellBox.getChildren().addAll(label); @@ -291,7 +275,6 @@ public class AllinOneView extends Application { includeAddedChildren(getTreeItem()); tv.setRoot(treeHelper.sortTree(tv.getRoot())); tv.refresh(); - timesItemisIncludedById.clear(); refreshTimesItemisIncludedById(tv.getRoot()); } else { @@ -382,24 +365,6 @@ public class AllinOneView extends Application { treeHelper.calcMessageToTree(calcResponse.getBerechnungsantwort().getVerkaufsprodukt(), newRoot); timesItemisIncludedById = treeHelper.getTimesItemisIncludedById(); newRoot.setExpanded(true); - isNotIncluded.clear(); - if (!isMeldungVorhanden(calcResponse.getBerechnungsantwort().getVerkaufsprodukt())) { - - Text text = new Text(LocalDateTime.now() + ": Gültiges Verkaufsprodukt " + System.lineSeparator()); - text.setFill(Paint.valueOf("#00bb33")); - logFlow.getChildren().add(text); - treeBox.setStyle("-fx-border-color: #00bb33"); - - PauseTransition pause = new PauseTransition(Duration.seconds(3)); - pause.setOnFinished(ep -> treeBox.setStyle("-fx-border-color: #000000")); - pause.play(); - - }else { - Text text = new Text(LocalDateTime.now() + ": Kein Gültiges Verkaufsprodukt " + System.lineSeparator()); - text.setFill(Paint.valueOf("#aa3333")); - logFlow.getChildren().add(text); - - } newRoot = treeHelper.addAprioriToCalc(newRoot, originalRoot); newRoot = treeHelper.sortTree(newRoot); @@ -409,31 +374,11 @@ public class AllinOneView extends Application { refreshTimesItemisIncludedById(tv.getRoot()); tv.refresh(); - - for (int j = 0; j < calcResponse.getBerechnungsantwort().getVerkaufsprodukt().getMeldungen().size(); j++) { - Text text = new Text(LocalDateTime.now() + " :" - + calcResponse.getBerechnungsantwort().getVerkaufsprodukt().getMeldungen().get(j).getErrorMsg() - + System.lineSeparator()); - - if (calcResponse.getBerechnungsantwort().getVerkaufsprodukt().getMeldungen().get(j).getErrorType() - .equals(BigInteger.ONE)) { - text.setFill(Paint.valueOf("#dd0000")); - } else if (calcResponse.getBerechnungsantwort().getVerkaufsprodukt().getMeldungen().get(j).getErrorType() - .equals(BigInteger.TWO)) { - text.setFill(Paint.valueOf("#bbbb00")); - } else { - text.setFill(Paint.valueOf("#000000")); - } - - logFlow.getChildren().add(text); - } - } catch (Exception ex) { throw new RuntimeException(ex); } }); - if (!treeBox.getChildren().isEmpty()) { treeBox.getChildren().clear(); } @@ -468,55 +413,12 @@ public class AllinOneView extends Application { logWrapper.setAlignment(Pos.CENTER_LEFT); logWrapper.setMaxWidth(Double.MAX_VALUE); - logFlow.setDisable(true); - logFlow.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE); - logFlow.setPadding(new Insets(20)); - logFlow.setStyle("-fx-border-color: black; -fx-background-color: white;"); - HBox.setMargin(logFlow, new Insets(10, 20, 10, 20)); - - logPane.setContent(logFlow); - logPane.setFitToWidth(true); - logPane.setFitToHeight(true); - logPane.setMaxHeight(200); - - HBox.setHgrow(logPane, Priority.ALWAYS); - logWrapper.getChildren().add(logPane); - - vbox.getChildren().addAll(wrapper, logWrapper); + vbox.getChildren().addAll(wrapper); VBox.setVgrow(wrapper, Priority.ALWAYS); return vbox; } - private boolean isMeldungVorhanden(ProduktbausteinType produkt) { - if (produkt != null && produkt.getMeldungen() != null && !produkt.getMeldungen().isEmpty()) { - return true; - } - for (ProduktbausteinType child : produkt.getBausteine()){ - if(isMeldungVorhanden(child)) return true; - } - return false; - } - -// private void addMeldungen(TreeItem newRoot, TextFlow logFlow, Node tv) { -// if (!((ProduktbausteinType)newRoot.getValue()).getMeldungen().isEmpty()) { -// PauseTransition pause = new PauseTransition(Duration.seconds(5)); -// -// pause.play(); -// -// for (ServiceFault s : ((ProduktbausteinType)newRoot.getValue()).getMeldungen()) { -// logFlow.getChildren().add(new Text(s.getErrorMsg() + System.lineSeparator())); -// -// if (tv != null) tv.setStyle("-fx-background-color: #aa3333"); -// } -// } -// if (!newRoot.getChildren().isEmpty()) { -// for (TreeItem child : newRoot.getChildren()) { -// addMeldungen(child, logFlow, child.getGraphic()); -// } -// } -// } - private void includeAddedParent(TreeItem treeItem) { if (treeItem.getParent() != null) { isNotIncluded.remove(treeItem.getParent()); @@ -615,134 +517,16 @@ public class AllinOneView extends Application { return erg; } + private boolean isMeldungVorhanden(ProduktbausteinType produkt, TreeView tv) { + TreeHelper treeHelper = new TreeHelper(); + TreeItem actual = treeHelper.findTreeItem(produkt, tv.getRoot()); -// private TreeItem cloneTreeItem(TreeItem original) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException { -// Object cloneOriginalValue; -// -// cloneOriginalValue = new ObjectFactoryFactory().create(((ProduktbausteinType) original.getValue()).getType()); -// -// ((ProduktbausteinType) cloneOriginalValue).setId(((ProduktbausteinType) original.getValue()).getId()); -// ((ProduktbausteinType) cloneOriginalValue).setBezeichnung(((ProduktbausteinType) original.getValue()).getBezeichnung()); -// ((ProduktbausteinType) cloneOriginalValue).setFrom(((ProduktbausteinType) original.getValue()).getFrom()); -// ((ProduktbausteinType) cloneOriginalValue).setTo(((ProduktbausteinType) original.getValue()).getTo()); -// ((ProduktbausteinType) cloneOriginalValue).getAttribute().addAll(((ProduktbausteinType) original.getValue()).getAttribute()); -// ((ProduktbausteinType) cloneOriginalValue).getMeldungen().addAll(((ProduktbausteinType) original.getValue()).getMeldungen()); -// ((ProduktbausteinType) cloneOriginalValue).setMinOccurrences(((ProduktbausteinType) original.getValue()).getMinOccurrences()); -// ((ProduktbausteinType) cloneOriginalValue).setMaxOccurrences(((ProduktbausteinType) original.getValue()).getMaxOccurrences()); -// ((ProduktbausteinType) cloneOriginalValue).setType(((ProduktbausteinType) original.getValue()).getType()); -// -// -// TreeItem clonedItem = new TreeItem<>(cloneOriginalValue); -// -// for (TreeItem child : original.getChildren()) { -// clonedItem.getChildren().add(cloneTreeItem(child)); -// } -// return clonedItem; -// } -// -// private TreeItem findTreeItem(ProduktbausteinType item, TreeItem root) { -// if (((ProduktbausteinType) root.getValue()).getId().equals(item.getId())) { -// return root; -// } -// for (TreeItem child : root.getChildren()) { -// TreeItem found = findTreeItem(item, child); -// if (found != null) return found; -// } -// return null; -// } -// -// public void messageToTree(APrioriProduktbausteinType produkt, TreeItem treeItem) throws Exception { -// if (!produkt.getBausteine().isEmpty()) { -// for (int i = 0; i < produkt.getBausteine().size(); i++) { -// TreeItem up = aprioriToCalc(new TreeItem<>(produkt.getBausteine().get(i))); -// up.setExpanded(true); -// if (!produkt.getBausteine().get(i).getBausteine().isEmpty()) { -// messageToTree(produkt.getBausteine().get(i), up); -// } -// treeItem.getChildren().add(up); -// } -// } -// } -// -// public void calcMessageToTree(ProduktbausteinType produkt, TreeItem treeItem) { -// if (!produkt.getBausteine().isEmpty()) { -// for (int i = 0; i < produkt.getBausteine().size(); i++) { -// TreeItem up = new TreeItem<>(produkt.getBausteine().get(i)); -// up.setExpanded(true); -// if (!produkt.getBausteine().get(i).getBausteine().isEmpty()) { -// calcMessageToTree(produkt.getBausteine().get(i), up); -// } -// treeItem.getChildren().add(up); -// if (!timesItemisIncludedById.containsKey(((ProduktbausteinType) up.getValue()).getId())) { -// timesItemisIncludedById.put(((ProduktbausteinType) up.getValue()).getId(), 1); -// } -// } -// } -// } - -// public TreeItem aprioriToCalc(TreeItem produkt) throws Exception { -// -// TreeItem ergItem = new TreeItem<>(); -// Object erg = new ObjectFactoryFactory().create(((APrioriProduktbausteinType) produkt.getValue()).getType()); -// -// if (erg != null) { -// if (ProduktbausteinType.class.isAssignableFrom(erg.getClass())) { -// ((ProduktbausteinType) erg).setId(((APrioriProduktbausteinType) produkt.getValue()).getId()); -// ((ProduktbausteinType) erg).setBezeichnung(((APrioriProduktbausteinType) produkt.getValue()).getName()); -// ((ProduktbausteinType) erg).setFrom(((APrioriProduktbausteinType) produkt.getValue()).getFrom()); -// ((ProduktbausteinType) erg).setTo(((APrioriProduktbausteinType) produkt.getValue()).getTo()); -// ((ProduktbausteinType) erg).getMeldungen().addAll(((APrioriProduktbausteinType) produkt.getValue()).getMeldungen()); -// ((ProduktbausteinType) erg).getAttribute().addAll(((APrioriProduktbausteinType) produkt.getValue()).getAttribute()); -// ((ProduktbausteinType) erg).setMinOccurrences(((APrioriProduktbausteinType) produkt.getValue()).getMinOccurrences()); -// ((ProduktbausteinType) erg).setMaxOccurrences(((APrioriProduktbausteinType) produkt.getValue()).getMaxOccurrences()); -// ((ProduktbausteinType) erg).setType(((APrioriProduktbausteinType) produkt.getValue()).getType()); -// -// -// for (int i = 0; i < ((APrioriProduktbausteinType) produkt.getValue()).getBausteine().size(); i++) { -// ((ProduktbausteinType) erg).getBausteine().add((ProduktbausteinType) aprioriToCalc(new TreeItem<>(((APrioriProduktbausteinType) produkt.getValue()).getBausteine().get(i))).getValue()); -// } -// -// for (int i = 0; i < produkt.getChildren().size(); i++) { -// ergItem.getChildren().add(aprioriToCalc(produkt.getChildren().get(i))); -// } -// } -// } else { -// logFlow.getChildren().add(new Text("Objekt kann nicht erzeugt werden. Unbekannte Klasse " + ((APrioriProduktbausteinType) produkt.getValue()).getType())); -// throw new Exception("Objekt kann nicht erzeugt werden. Unbekannte Klasse " + ((APrioriProduktbausteinType) produkt.getValue()).getType()); -// -// } -// ergItem.setValue(erg); -// return ergItem; -// } -// -// public TreeItem addAprioriToCalc(TreeItem calcItem, TreeItem aprioriItem) throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException { -// for (TreeItem aprioriChild : aprioriItem.getChildren()) { -// -// List> matchingChildren = calcItem.getChildren().stream() -// .filter(c -> ((ProduktbausteinType) c.getValue()).getId().equals(((ProduktbausteinType) aprioriChild.getValue()).getId())) -// .toList(); -// -// if (matchingChildren.isEmpty()) { -// TreeItem newChild = cloneTreeItem(aprioriChild); -// calcItem.getChildren().add(newChild); -// addAprioriToCalc(newChild, aprioriChild); -// } else { -// for (TreeItem matchingChild : matchingChildren) { -// addAprioriToCalc(matchingChild, aprioriChild); -// } -// } -// } -// return calcItem; -// } -// -// private void sortTree(TreeItem parent) { -// FXCollections.sort(parent.getChildren(), Comparator.comparing( -// item -> ((ProduktbausteinType) item.getValue()).getBezeichnung().toLowerCase() -// )); -// -// for (TreeItem child : parent.getChildren()) { -// sortTree(child); -// } -// } - + if (actual != null && ((ProduktbausteinType)actual.getValue()).getMeldungen() != null && !((ProduktbausteinType)actual.getValue()).getMeldungen().isEmpty()) { + return true; + } + for (ProduktbausteinType child : produkt.getBausteine()){ + if(isMeldungVorhanden(child, tv)) return true; + } + return false; + } } 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 fc0625b6..7df6b642 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 @@ -308,38 +308,35 @@ public class ItemAttribute { }else { singleAttributBox.getChildren().addAll(label, textField); } - attributBox.getChildren().add(singleAttributBox); - -// if (((ProduktbausteinType)newSelection.getValue()).getMeldungen() != null -// && !((ProduktbausteinType)newSelection.getValue()).getMeldungen().isEmpty()) { -// ((ProduktbausteinType)newSelection.getValue()).getMeldungen().forEach(n -> { -// VBox meldung = new VBox(); -// -// Label code = new Label(); -// Label text = new Label(); -// Label ref = new Label(); -// -// if (n.getErrorCode() != null) {code = new Label("Error Code: " + n.getErrorCode().toString());} -// if (n.getErrorMsg() != null) {text = new Label(n.getErrorMsg());} -// if (n.getElementReference() != null) {ref = new Label(n.getElementReference());} -// -// if (n.getErrorType().equals(BigInteger.ONE)){ -// code.setStyle("-fx-text-fill: red;"); -// text.setStyle("-fx-text-fill: red;"); -// ref.setStyle("-fx-text-fill: red;"); -// }else if (n.getErrorType().equals(BigInteger.TWO)){ -// code.setStyle("-fx-text-fill: #bbbb00;"); -// text.setStyle("-fx-text-fill: #bbbb00;"); -// ref.setStyle("-fx-text-fill: #bbbb00;"); -// } -// -// meldung.getChildren().addAll(code, text, ref); -// attributBox.getChildren().add(meldung); -// }); -// } - } return attributBox; } + + public VBox addVpInfo(VBox attributBox, boolean meldungVorhanden, VerkaufsproduktType vp) { + attributBox.getChildren().removeIf(c -> c.getId() != null && c.getId().equals("vpLabel")); + + Label vpLabel = new Label(); + if (!meldungVorhanden) { + vpLabel.setText("Gültiges Verkaufsprodukt " + System.lineSeparator()); + }else { + vpLabel.setText("Kein Gültiges Verkaufsprodukt " + System.lineSeparator()); + } + 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); + }); + + attributBox.getChildren().removeIf(c -> c.getId() != null && c.getId().equals("vpMeldungenTexts")); + attributBox.getChildren().addAll(vpMeldungenTexts); + + return attributBox; + } + } 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 29770ef4..a90ab6ed 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 @@ -13,7 +13,6 @@ import java.util.*; public class TreeHelper { Map timesItemisIncludedById = new HashMap<>(); List> isNotIncluded = new ArrayList<>(); - TextFlow logFlow = new TextFlow(); public Map getTimesItemisIncludedById() { return timesItemisIncludedById; @@ -31,14 +30,6 @@ public class TreeHelper { this.isNotIncluded = isNotIncluded; } - public TextFlow getLogFlow() { - return logFlow; - } - - public void setLogFlow(TextFlow logFlow) { - this.logFlow = logFlow; - } - public TreeItem cleanTree(TreeItem original) { if (isNotIncluded.contains(original)) { return null; @@ -165,11 +156,8 @@ public class TreeHelper { } } } else { - logFlow.getChildren().add(new Text("Objekt kann nicht erzeugt werden. Unbekannte Klasse " - + ((APrioriProduktbausteinType) produkt.getValue()).getType())); throw new Exception("Objekt kann nicht erzeugt werden. Unbekannte Klasse " + ((APrioriProduktbausteinType) produkt.getValue()).getType()); - } ergItem.setValue(erg); return ergItem; @@ -186,6 +174,7 @@ public class TreeHelper { if (matchingChildren.isEmpty()) { TreeItem newChild = cloneTreeItem(aprioriChild); + calcItem.getChildren().add(newChild); addAprioriToCalc(newChild, aprioriChild); } else { @@ -207,4 +196,9 @@ public class TreeHelper { } return parent; } + + private String itemPfad(TreeItem item) { + if (item.getParent() == null) return ((ProduktbausteinType)item.getValue()).getId(); + return itemPfad(item.getParent()) + "/" + ((ProduktbausteinType)item.getValue()).getId(); + } }