diff --git a/swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/data/JSONFileLoader.java b/swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/data/JSONFileLoader.java index 60ee5ee..d5a06f5 100644 --- a/swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/data/JSONFileLoader.java +++ b/swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/data/JSONFileLoader.java @@ -140,7 +140,7 @@ public static ArrayList getMethods(ArrayList for (MethodWrapper method : methods.values()) { - if (method.getUpdateOperation().equals(Constants.METHOD_DELETED) || method.isTrainingMethod()) + if (method.getUpdateOperation().equals(Constants.METHOD_DELETED)) continue; filteredList.add(method); @@ -187,20 +187,31 @@ private static ArrayList filterList(ArrayList(Constants.FILTER_TYPE, Formatter.toTitleCase(category.toString()))) - || filters.contains(new Pair<>(Constants.FILTER_CWE, Formatter.toTitleCase(category.toString()))) - || (methods.get(methodSignature).isTrainingMethod() && filters.contains(Constants.TRAIN_FILTER))) { - - filteredList.add(methods.get(methodSignature)); - break; + if(filters.size()==1 && filters.contains(Constants.TRAIN_FILTER) && methods.get(methodSignature).isTrainingMethod()){ + filteredList.add(methods.get(methodSignature)); + }else if((filters.contains(Constants.FILE_FILTER) && !methodSignature.contains(currentFile)) + || (!filters.contains(Constants.DELETED_FILTER) && methods.get(methodSignature).getUpdateOperation().equals(Constants.METHOD_DELETED))){ + } else if (filters.size()>1 && filters.contains(Constants.TRAIN_FILTER)) { + for (Category category : methods.get(methodSignature).getCategories()) { + Pair typePair = new Pair<>(Constants.FILTER_TYPE, Formatter.toTitleCase(category.toString())); + Pair cwePair = new Pair<>(Constants.FILTER_CWE, Formatter.toTitleCase(category.toString())); + boolean isDeleted = filters.contains(Constants.DELETED_FILTER) && methods.get(methodSignature).getUpdateOperation().equals(Constants.METHOD_DELETED); + boolean isTypeFilter = filters.contains(typePair) || filters.contains(cwePair); + if ((isDeleted || isTypeFilter) && methods.get(methodSignature).isTrainingMethod()){ + filteredList.add(methods.get(methodSignature)); + break; + } + } + } else{ + for (Category category : methods.get(methodSignature).getCategories()) { + Pair typePair = new Pair<>(Constants.FILTER_TYPE, Formatter.toTitleCase(category.toString())); + Pair cwePair = new Pair<>(Constants.FILTER_CWE, Formatter.toTitleCase(category.toString())); + boolean isDeleted = filters.contains(Constants.DELETED_FILTER) && methods.get(methodSignature).getUpdateOperation().equals(Constants.METHOD_DELETED); + boolean isTypeFilter = filters.contains(typePair) || filters.contains(cwePair); + if (isDeleted || isTypeFilter ){ + filteredList.add(methods.get(methodSignature)); + break; + } } } } diff --git a/swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/ui/MethodListTree.java b/swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/ui/MethodListTree.java index f072f0e..e5efd9a 100644 --- a/swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/ui/MethodListTree.java +++ b/swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/ui/MethodListTree.java @@ -587,10 +587,12 @@ private void loadMethods() { classNode.add(addCategoriesToNode(method)); - if (method.getMethod().isKnown()) + if (method.getMethod().isKnown()) { + method.setTrainingMethod(true); standardSrms.add(classNode); - else + }else{ currentProject.add(classNode); + } } } diff --git a/swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/util/Pair.java b/swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/util/Pair.java index 91232d6..bff2607 100644 --- a/swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/util/Pair.java +++ b/swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/util/Pair.java @@ -1,5 +1,7 @@ package de.fraunhofer.iem.swan.assist.util; +import java.util.Objects; + public class Pair { private final T key; private final U value; @@ -16,4 +18,31 @@ public T getKey() { public U getValue() { return this.value; } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + + if (obj == null || getClass() != obj.getClass()) { + return false; + } + + Pair pair = (Pair) obj; + + if (!Objects.equals(key, pair.key)) { + return false; + } + + return Objects.equals(value, pair.value); + } + + @Override + public int hashCode() { + int result = key != null ? key.hashCode() : 0; + result = 31 * result + (value != null ? value.hashCode() : 0); + return result; + } + }