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 a90ab6ed..f95a98fd 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 @@ -166,20 +166,23 @@ public class TreeHelper { 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); + boolean isInCalc = false; + int i = 0; + for (TreeItem calcChild : calcItem.getChildren()) { + if (((ProduktbausteinType) calcChild.getValue()).getId().equals(((ProduktbausteinType) aprioriChild.getValue()).getId()) || isNotIncluded.contains(calcChild)) { + isInCalc = true; + if (!aprioriChild.getChildren().isEmpty()) { + calcChild = addAprioriToCalc(calcChild, aprioriChild); + calcItem.getChildren().set(i, calcChild); + } + } + i++; + } + if (!isInCalc) { + TreeItem missingCalcItem = cloneTreeItem(aprioriChild); + calcItem.getChildren().add(missingCalcItem); + if (!isNotIncluded.contains(missingCalcItem)) { + isNotIncluded.add(missingCalcItem); } } }