From 7fdff45f9a2acc4eb2a2e1adadb67e9e731ed506 Mon Sep 17 00:00:00 2001 From: Antti Villberg Date: Fri, 2 Nov 2018 06:49:03 +0200 Subject: [PATCH] Procedural connectivity was broken Change-Id: I0b8f2f35f0eef887a40517d53f220609398448d9 --- .../variables/FixedConnection.java | 79 +++++++++++++------ 1 file changed, 57 insertions(+), 22 deletions(-) diff --git a/bundles/org.simantics.structural2/src/org/simantics/structural2/variables/FixedConnection.java b/bundles/org.simantics.structural2/src/org/simantics/structural2/variables/FixedConnection.java index 3f5219e61..524d2737c 100644 --- a/bundles/org.simantics.structural2/src/org/simantics/structural2/variables/FixedConnection.java +++ b/bundles/org.simantics.structural2/src/org/simantics/structural2/variables/FixedConnection.java @@ -15,15 +15,21 @@ import gnu.trove.set.hash.THashSet; public class FixedConnection implements Connection, Connection2 { - final private Variable parent; + /* + * This is the parent of the component to be connected + */ + final private Variable procedural; final private Collection> cps = new ArrayList>(); - public FixedConnection(Variable parent) { - this.parent = parent; + public FixedConnection(Variable procedural) { + this.procedural = procedural; } public void addAll(List> cps) throws DatabaseException { + /* + * For interface connections the name is null + */ for(Pair cp : cps) { this.cps.add(cp); } @@ -35,30 +41,59 @@ public class FixedConnection implements Connection, Connection2 { public void addConnectionDescriptors(ReadGraph graph, Variable curConfiguration, Collection result) throws DatabaseException { for(Pair cpzz : cps) { - // This is a connection to an interface terminal. It is handled by ConnectionBrowser in separate logic. Do not include it here. - if(cpzz.first == null) continue; - /*if(cpzz.first == null) { - String message = "Lifted connection was not resolved. Child = " + parent.getURI(graph); + // This is a connection to an interface terminal. It is handled by ConnectionBrowser in separate logic. We should never have gotten this far + if(cpzz.first == null) { + String message = "Lifted connection was not resolved. Child = " + procedural.getURI(graph); throw new DatabaseException(message); - }*/ + } result.add(new PairConnectionDescriptor(curConfiguration, cpzz)); } } @Override public Collection getConnectionPoints(ReadGraph graph, Resource relationType) throws DatabaseException { - return getConnectionPoints(graph, parent, relationType); + Set result = new THashSet(); + for(Pair cp : cps) { + Variable component = cp.first == null ? procedural : procedural.getChild(graph, cp.first); + Variable cp2 = component.getPossibleProperty(graph, cp.second); + if(cp2 != null) + for(VariableConnectionPointDescriptor desc : ConnectionBrowser.flatten(graph, component, cp.second, relationType)) { + result.add(desc.getVariable(graph)); + } + else + StandardProceduralChildVariable.LOGGER.warn("no cp " + cp.first + " for " + component.getURI(graph)); + } + return result; } @Override public Collection getConnectionPointURIs(ReadGraph graph, Resource relationType) throws DatabaseException { - return getConnectionPointURIs(graph, parent, relationType); - + Set result = new THashSet(); + for(Pair cp : cps) { + Variable component = cp.first == null ? procedural : procedural.getChild(graph, cp.first); + Variable cp2 = component.getPossibleProperty(graph, cp.second); + if(cp2 != null) + for(VariableConnectionPointDescriptor desc : ConnectionBrowser.flatten(graph, component, cp.second, relationType)) { + result.add(desc.getURI(graph)); + } + else + StandardProceduralChildVariable.LOGGER.warn("no cp " + cp.first + " for " + component.getURI(graph)); + } + return result; } @Override public Collection getConnectionPointDescriptors(ReadGraph graph, Resource relationType) throws DatabaseException { - return getConnectionPointDescriptors(graph, parent, relationType); + Set result = new THashSet(); + for(Pair cp : cps) { + Variable component = cp.first == null ? procedural : procedural.getChild(graph, cp.first); + Variable cp2 = component.getPossibleProperty(graph, cp.second); + if(cp2 != null) + result.addAll(ConnectionBrowser.flatten(graph, component, cp.second, relationType)); + else + StandardProceduralChildVariable.LOGGER.warn("no cp " + cp.first + " for " + component.getURI(graph)); + } + return result; } @Override @@ -67,7 +102,7 @@ public class FixedConnection implements Connection, Connection2 { int result = 1; result = prime * result + ((cps == null) ? 0 : cps.hashCode()); result = prime * result - + ((parent == null) ? 0 : parent.hashCode()); + + ((procedural == null) ? 0 : procedural.hashCode()); return result; } @@ -85,20 +120,20 @@ public class FixedConnection implements Connection, Connection2 { return false; } else if (!cps.equals(other.cps)) return false; - if (parent == null) { - if (other.parent != null) + if (procedural == null) { + if (other.procedural != null) return false; - } else if (!parent.equals(other.parent)) + } else if (!procedural.equals(other.procedural)) return false; return true; } @Override public Collection getConnectionPointDescriptors(ReadGraph graph, - Variable parent, Resource relationType) throws DatabaseException { + Variable component_, Resource relationType) throws DatabaseException { Set result = new THashSet(); for(Pair cp : cps) { - Variable component = cp.first == null ? parent : parent.getChild(graph, cp.first); + Variable component = cp.first == null ? component_.getParent(graph) : component_; Variable cp2 = component.getPossibleProperty(graph, cp.second); if(cp2 != null) result.addAll(ConnectionBrowser.flatten(graph, component, cp.second, relationType)); @@ -109,11 +144,11 @@ public class FixedConnection implements Connection, Connection2 { } @Override - public Collection getConnectionPoints(ReadGraph graph, Variable parent, Resource relationType) + public Collection getConnectionPoints(ReadGraph graph, Variable component_, Resource relationType) throws DatabaseException { Set result = new THashSet(); for(Pair cp : cps) { - Variable component = cp.first == null ? parent : parent.getChild(graph, cp.first); + Variable component = cp.first == null ? component_.getParent(graph) : component_; Variable cp2 = component.getPossibleProperty(graph, cp.second); if(cp2 != null) for(VariableConnectionPointDescriptor desc : ConnectionBrowser.flatten(graph, component, cp.second, relationType)) { @@ -126,11 +161,11 @@ public class FixedConnection implements Connection, Connection2 { } @Override - public Collection getConnectionPointURIs(ReadGraph graph, Variable parent, Resource relationType) + public Collection getConnectionPointURIs(ReadGraph graph, Variable component_, Resource relationType) throws DatabaseException { Set result = new THashSet(); for(Pair cp : cps) { - Variable component = cp.first == null ? parent : parent.getChild(graph, cp.first); + Variable component = cp.first == null ? component_.getParent(graph) : component_; Variable cp2 = component.getPossibleProperty(graph, cp.second); if(cp2 != null) for(VariableConnectionPointDescriptor desc : ConnectionBrowser.flatten(graph, component, cp.second, relationType)) { -- 2.47.1