import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
private List<Feature> initFeatureList(TermNode<Feature> node){
List<Feature> features = new ArrayList<>();
- node.getChildNodes().forEach(childNode->
- {
- features.add(childNode.getTerm());
- features.addAll(initFeatureList(childNode));
- });
+ List<TermNode<Feature>> childNodes = node.getChildNodes();
+ for (TermNode<Feature> childNode : childNodes) {
+ features.add(childNode.getTerm());
+ features.addAll(initFeatureList(childNode));
+ }
return features;
}
TermTree<Feature> tree = getDescriptiveDataSet().getDescriptiveSystem();
features = initFeatureList(tree.getRoot());
+ Set<Feature> duplicateFeatures = features.stream().filter(i -> Collections.frequency(features, i) >1)
+ .collect(Collectors.toSet());
+
+ if (!duplicateFeatures.isEmpty()) {
+ throw new IllegalArgumentException("Duplicate features found: "
+ + duplicateFeatures.stream().map(feature -> feature.getLabel()).collect(Collectors.joining(",")));
+ }
+
//init state data for categorical features
features.forEach(feature->fetchSupportedStates(feature));