X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fmapping%2FDiagramConnectionExistence.java;h=017864e209980cedea193d46c600f22018e34ae0;hb=refs%2Fchanges%2F38%2F238%2F2;hp=381087ac14c3efe7b8db54e72c5411e7255250d8;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/mapping/DiagramConnectionExistence.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/mapping/DiagramConnectionExistence.java index 381087ac1..017864e20 100644 --- a/bundles/org.simantics.modeling/src/org/simantics/modeling/mapping/DiagramConnectionExistence.java +++ b/bundles/org.simantics.modeling/src/org/simantics/modeling/mapping/DiagramConnectionExistence.java @@ -1,100 +1,100 @@ -package org.simantics.modeling.mapping; - -import gnu.trove.map.hash.THashMap; - -import java.util.ArrayList; - -import org.simantics.db.ReadGraph; -import org.simantics.db.Resource; -import org.simantics.db.Statement; -import org.simantics.db.common.request.ResourceRead; -import org.simantics.db.exception.DatabaseException; -import org.simantics.diagram.stubs.DiagramResource; -import org.simantics.mapping.IContextualModification; -import org.simantics.mapping.constraint.instructions.Instruction3; -import org.simantics.modeling.ModelingResources; -import org.simantics.structural.stubs.StructuralResource2; - -public class DiagramConnectionExistence extends Instruction3 { - - public DiagramConnectionExistence(int variable0, int variable1, - int variable2) { - super(variable0, variable1, variable2); - } - - /* and(bf(MOD.ConnectionRelationToDiagramConnectionRelation, ConnectionRelation, DiagramConnectionRelation), - statement_bbf(Element, DiagramConnectionRelation, Connector), - bb(DIA.IsConnectorOf, Connector, Connection2) - ) - */ - private static class ConnectionsOfElement extends ResourceRead>> { - - public ConnectionsOfElement(Resource element) { - super(element); - } - - @Override - public THashMap> perform(ReadGraph graph) - throws DatabaseException { - THashMap> result = - new THashMap>(4); - StructuralResource2 STR = StructuralResource2.getInstance(graph); - DiagramResource DIA = DiagramResource.getInstance(graph); - ModelingResources MOD = ModelingResources.getInstance(graph); - for(Statement stat : graph.getStatements(resource, STR.IsConnectedTo)) { - for(Resource configurationRelation : - graph.getObjects(stat.getPredicate(), - MOD.DiagramConnectionRelationToConnectionRelation)) { - ArrayList l = result.get(configurationRelation); - if(l == null) { - l = new ArrayList(2); - result.put(configurationRelation, l); - } - l.addAll(graph.getObjects(stat.getObject(), DIA.IsConnectorOf)); - } - } - return result; - } - } - - @Override - public Object query(ReadGraph g, Object[] bindings) - throws DatabaseException { - Resource element = (Resource)bindings[variable0]; - Resource connectionRelation = (Resource)bindings[variable1]; - Resource connection2 = (Resource)bindings[variable2]; - //System.out.println("query " + element + " " + connectionRelation + " " + connection2); - - THashMap> map = g.syncRequest(new ConnectionsOfElement(element)); - //System.out.println(" " + map); - ArrayList cs = map.get(connectionRelation); - if(cs != null && cs.contains(connection2)) - return null; - else - return FAILURE; - } - - @Override - public Object next(ReadGraph g, Object[] bindings, Object continuation) - throws DatabaseException { - return FAILURE; - } - - @Override - public IContextualModification claim(ReadGraph g, Object[] bindings) - throws DatabaseException { - throw new UnsupportedOperationException(); - } - - @Override - public IContextualModification deny(ReadGraph g, Object[] bindings) - throws DatabaseException { - throw new UnsupportedOperationException(); - } - - @Override - public void toString(StringBuilder b, int indent) { - b.append("DiagramConnectionExistence"); - } - -} +package org.simantics.modeling.mapping; + +import gnu.trove.map.hash.THashMap; + +import java.util.ArrayList; + +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.Statement; +import org.simantics.db.common.request.ResourceRead; +import org.simantics.db.exception.DatabaseException; +import org.simantics.diagram.stubs.DiagramResource; +import org.simantics.mapping.IContextualModification; +import org.simantics.mapping.constraint.instructions.Instruction3; +import org.simantics.modeling.ModelingResources; +import org.simantics.structural.stubs.StructuralResource2; + +public class DiagramConnectionExistence extends Instruction3 { + + public DiagramConnectionExistence(int variable0, int variable1, + int variable2) { + super(variable0, variable1, variable2); + } + + /* and(bf(MOD.ConnectionRelationToDiagramConnectionRelation, ConnectionRelation, DiagramConnectionRelation), + statement_bbf(Element, DiagramConnectionRelation, Connector), + bb(DIA.IsConnectorOf, Connector, Connection2) + ) + */ + private static class ConnectionsOfElement extends ResourceRead>> { + + public ConnectionsOfElement(Resource element) { + super(element); + } + + @Override + public THashMap> perform(ReadGraph graph) + throws DatabaseException { + THashMap> result = + new THashMap>(4); + StructuralResource2 STR = StructuralResource2.getInstance(graph); + DiagramResource DIA = DiagramResource.getInstance(graph); + ModelingResources MOD = ModelingResources.getInstance(graph); + for(Statement stat : graph.getStatements(resource, STR.IsConnectedTo)) { + for(Resource configurationRelation : + graph.getObjects(stat.getPredicate(), + MOD.DiagramConnectionRelationToConnectionRelation)) { + ArrayList l = result.get(configurationRelation); + if(l == null) { + l = new ArrayList(2); + result.put(configurationRelation, l); + } + l.addAll(graph.getObjects(stat.getObject(), DIA.IsConnectorOf)); + } + } + return result; + } + } + + @Override + public Object query(ReadGraph g, Object[] bindings) + throws DatabaseException { + Resource element = (Resource)bindings[variable0]; + Resource connectionRelation = (Resource)bindings[variable1]; + Resource connection2 = (Resource)bindings[variable2]; + //System.out.println("query " + element + " " + connectionRelation + " " + connection2); + + THashMap> map = g.syncRequest(new ConnectionsOfElement(element)); + //System.out.println(" " + map); + ArrayList cs = map.get(connectionRelation); + if(cs != null && cs.contains(connection2)) + return null; + else + return FAILURE; + } + + @Override + public Object next(ReadGraph g, Object[] bindings, Object continuation) + throws DatabaseException { + return FAILURE; + } + + @Override + public IContextualModification claim(ReadGraph g, Object[] bindings) + throws DatabaseException { + throw new UnsupportedOperationException(); + } + + @Override + public IContextualModification deny(ReadGraph g, Object[] bindings) + throws DatabaseException { + throw new UnsupportedOperationException(); + } + + @Override + public void toString(StringBuilder b, int indent) { + b.append("DiagramConnectionExistence"); + } + +}