package splar.core.util.hypergraphs; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; public class Hyperedge extends Vertex { private Set<Vertex> edges; private Map<String,Object> properties; public Hyperedge() { this(""); } public Hyperedge(String name) { super(name); edges = new LinkedHashSet<Vertex>(); properties = new LinkedHashMap<String, Object>(); } public void setProperty(String name, Object value) { properties.put(name,value); } public Object getProperty(String name) { return properties.get(name); } public void addVertex(Vertex vertex) { edges.add(vertex); } public void addAllHyperedgeVertices(Hyperedge edge) { edges.addAll(edge.getVertices()); } public Set<Vertex> getVertices() { return edges; } public boolean containsVertex(Vertex vertex) { return edges.contains(vertex); } public int hashCode() { return 0; } public boolean equals(Object edge) { if ( edge != null && edge instanceof Hyperedge) { Hyperedge hedge = (Hyperedge)edge; if ( (hedge.getName().trim().length() == 0) || (getName().trim().length() == 0)) { return edge == this; } else { return getName().equals(hedge.getName()); } } return false; } public String toString() { StringBuffer toString = new StringBuffer(100); if ( getName().trim().length() > 0 ) { toString.append(getName()); toString.append(":"); } toString.append("("); for( Iterator<Vertex> it2 = edges.iterator(); it2.hasNext() ; ) { Vertex vertex = it2.next(); toString.append(vertex); if ( it2.hasNext() ) { toString.append(","); } } toString.append(")"); return toString.toString(); } }