From: Jussi Koskela Date: Tue, 30 Jul 2019 07:39:55 +0000 (+0300) Subject: Fixed filtering of connection points when any drilling is done X-Git-Tag: v1.43.0~136^2~129 X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=commitdiff_plain;h=047ff1c43c7bf58acad5098d020434586ddfcbe0;p=simantics%2Fplatform.git Fixed filtering of connection points when any drilling is done gitlab #324 Change-Id: Iad676ddea1ab4625f6bdc615dc83605707107260 --- diff --git a/bundles/org.simantics.structural2/src/org/simantics/structural2/variables/ConnectionBrowser.java b/bundles/org.simantics.structural2/src/org/simantics/structural2/variables/ConnectionBrowser.java index 60fee19b2..11a49f017 100644 --- a/bundles/org.simantics.structural2/src/org/simantics/structural2/variables/ConnectionBrowser.java +++ b/bundles/org.simantics.structural2/src/org/simantics/structural2/variables/ConnectionBrowser.java @@ -624,47 +624,41 @@ public class ConnectionBrowser { needDrill = new THashSet(climbed.size()); needDrill.add(desc); } else { + if(relationType != null) { + if(!filterByRelationType(graph, desc, relationType)) + continue; + } if(result == null) result = new THashSet(climbed.size()); result.add(desc); } } - if(needDrill == null) { - /* - * All descriptors were already flat - just take case of filtering - */ - if(relationType != null) { - ArrayList filtered = new ArrayList(climbed.size()); - for(VariableConnectionPointDescriptor desc : climbed) - if(filterByRelationType(graph, desc, relationType)) - filtered.add(desc); - return filtered; - } else { - return climbed; + if(needDrill != null) { + /* + * There were some descriptors that require drill + */ + for(VariableConnectionPointDescriptor top : needDrill) { + Collection drilled = drill(graph, top); + if(drilled != null) { + for(VariableConnectionPointDescriptor drill : drilled) { + if(relationType != null) { + if(!filterByRelationType(graph, drill, relationType)) + continue; + } + if(result == null) + result = new THashSet(climbed.size()); + result.add(drill); + } + } } } - - /* - * There were some descriptors that require drill - */ - for(VariableConnectionPointDescriptor top : needDrill) { - Collection drilled = drill(graph, top); - if(drilled != null) { - for(VariableConnectionPointDescriptor drill : drilled) { - if(relationType != null) { - if(!filterByRelationType(graph, drill, relationType)) - continue; - } - if(result == null) - result = new THashSet(climbed.size()); - result.add(drill); - } - } + if (result != null) { + return result; + } else { + return Collections.emptySet(); } - return result; - } private static boolean filterByRelationType(ReadGraph graph, VariableConnectionPointDescriptor desc, Resource relationType) throws DatabaseException {