/******************************************************************************* * Copyright (c) 2018 Association for Decentralized Information Management in * Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Semantum Oy - initial API and implementation *******************************************************************************/ package org.simantics.structural2; import java.util.Collection; import java.util.Set; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.variable.Variable; import org.simantics.structural2.variables.Connection; import org.simantics.structural2.variables.Connection2; import org.simantics.structural2.variables.ConnectionBrowser; import org.simantics.structural2.variables.VariableConnectionPointDescriptor; import gnu.trove.set.hash.THashSet; /** * @author Antti Villberg * @since 1.36.0 */ public class ConnectionImpl implements Connection { private final Variable component; private final Resource predicate; public ConnectionImpl(Variable component, Resource predicate) { this.component = component; this.predicate = predicate; } @Override public Collection getConnectionPoints(ReadGraph graph, Resource relationType) throws DatabaseException { Set result = new THashSet(); for(VariableConnectionPointDescriptor desc : ConnectionBrowser.flatten(graph, component, predicate, relationType)) { result.add(desc.getVariable(graph)); } return result; } @Override public Collection getConnectionPointURIs(ReadGraph graph, Resource relationType) throws DatabaseException { Set result = new THashSet(); for(VariableConnectionPointDescriptor desc : ConnectionBrowser.flatten(graph, component, predicate, relationType)) { result.add(desc.getURI(graph)); } return result; } @Override public Collection getConnectionPointDescriptors(ReadGraph graph, Resource relationType) throws DatabaseException { return ConnectionBrowser.flatten(graph, component, predicate, relationType); } @Override public Connection2 getConnection2() { return new ConnectionImpl2(predicate); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((component == null) ? 0 : component.hashCode()); result = prime * result + ((predicate == null) ? 0 : predicate.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; ConnectionImpl other = (ConnectionImpl) obj; if (component == null) { if (other.component != null) return false; } else if (!component.equals(other.component)) return false; if (predicate == null) { if (other.predicate != null) return false; } else if (!predicate.equals(other.predicate)) return false; return true; } }