import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import org.simantics.browsing.ui.model.tests.Test;
import org.simantics.databoard.Bindings;
@Override
public Collection<Resource> perform(ReadGraph graph) throws DatabaseException {
-
ViewpointResource VP = ViewpointResource.getInstance(graph);
Instances query = graph.adapt(VP.ActionBrowseContextContribution, Instances.class);
- Collection<Resource> result = new ArrayList<Resource>();
+ Collection<Resource> result = new ArrayList<>();
for(Resource contribution : query.find(graph, parameter)) {
- Resource type = graph.getPossibleObject(contribution, VP.ActionBrowseContextContribution_HasType);
- if(type != null) {
- if(!graph.isInstanceOf(parameter2, type)) continue;
- }
+ Collection<Resource> acceptedTypes = graph.getObjects(contribution, VP.ActionBrowseContextContribution_HasType);
+ Collection<Resource> allTypes = graph.getTypes(parameter2);
+ if(Collections.disjoint(acceptedTypes, allTypes))
+ continue;
+
+ Resource context = graph.getPossibleObject(contribution, VP.ActionBrowseContextContribution_HasActionBrowseContext);
+ if(context == null)
+ continue;
+
Resource testResource = graph.getPossibleObject(contribution, VP.ActionBrowseContextContribution_HasTest);
if(testResource != null) {
- Test test = graph.getPossibleAdapter(testResource, Test.class);
- if(test != null) {
- if(!test.test(graph, parameter2)) continue;
- }
+ Test test = graph.getPossibleAdapter(testResource, Test.class);
+ if(test != null && !test.test(graph, parameter2))
+ continue;
}
-
- Resource context = graph.getPossibleObject(contribution, VP.ActionBrowseContextContribution_HasActionBrowseContext);
- if(context == null) continue;
+
String[] allowedContexts = graph.getPossibleRelatedValue(contribution, VP.ActionBrowseContextContribution_allowedUIContexts, Bindings.STRING_ARRAY);
- if(allowedContexts != null)
- if(!Arrays.contains(allowedContexts, parameter3))
- continue;
+ if(allowedContexts != null && !Arrays.contains(allowedContexts, parameter3))
+ continue;
+
result.add(context);
-
}
return result;
-
}
}
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import org.simantics.databoard.Bindings;
import org.simantics.db.ReadGraph;
@Override
public Collection<Resource> perform(ReadGraph graph) throws DatabaseException {
-
ViewpointResource VP = ViewpointResource.getInstance(graph);
Instances query = graph.adapt(VP.BrowseContextContribution, Instances.class);
- Collection<Resource> result = new ArrayList<Resource>();
+ Collection<Resource> result = new ArrayList<>();
for(Resource contribution : query.find(graph, parameter)) {
- Resource type = graph.getPossibleObject(contribution, VP.BrowseContextContribution_HasType);
- if(type == null) continue;
- if(graph.isInstanceOf(parameter2, type)) {
- Resource context = graph.getPossibleObject(contribution, VP.BrowseContextContribution_HasBrowseContext);
- if(context == null) continue;
- String[] allowedContexts = graph.getPossibleRelatedValue(contribution, VP.BrowseContextContribution_allowedUIContexts, Bindings.STRING_ARRAY);
- if(allowedContexts != null)
- if(!Arrays.contains(allowedContexts, parameter3))
- continue;
- result.add(context);
- }
+ Collection<Resource> acceptedTypes = graph.getObjects(contribution, VP.BrowseContextContribution_HasType);
+ Collection<Resource> allTypes = graph.getTypes(parameter2);
+ if(Collections.disjoint(acceptedTypes, allTypes))
+ continue;
+
+ Resource context = graph.getPossibleObject(contribution, VP.BrowseContextContribution_HasBrowseContext);
+ if(context == null)
+ continue;
+
+ String[] allowedContexts = graph.getPossibleRelatedValue(contribution, VP.BrowseContextContribution_allowedUIContexts, Bindings.STRING_ARRAY);
+ if(allowedContexts != null && !Arrays.contains(allowedContexts, parameter3))
+ continue;
+
+ result.add(context);
}
return result;
-
}
}