package nl.helixsoft.graph;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class NodeImpl implements Node
{
private Object id;
private double x = 0;
private double y = 0;
private List<EdgeImpl> outgoing = new ArrayList<EdgeImpl>();
private List<EdgeImpl> incoming = new ArrayList<EdgeImpl>();
private Map<String, Object> attributes = new HashMap<String, Object>();
@Override
public List<EdgeImpl> getOutgoing() { return outgoing; }
@Override
public List<EdgeImpl> getIncoming() { return incoming; }
@Override
public void setPos (double x, double y)
{
this.x = x;
this.y = y;
}
@Override
public Iterable<? extends Node> getOutgoingNodes()
{
List<Node> nodes = new ArrayList<Node>();
for (Edge e : getOutgoing())
{
nodes.add(e.getDest());
}
return nodes;
}
@Override
public Iterable<? extends Node> getIncomingNodes()
{
List<Node> nodes = new ArrayList<Node>();
for (Edge e : getIncoming())
{
nodes.add(e.getSrc());
}
return nodes;
}
public NodeImpl (Object id)
{
this.id = id;
}
@Override
public Object getId()
{
return id;
}
@Override
public double getX()
{
return x;
}
@Override
public double getY()
{
return y;
}
@Override
public void setAttribute (String key, Object value)
{
attributes.put (key, value);
}
@Override
public Object getAttribute (String key)
{
return attributes.get(key);
}
@Override
public Set<String> getAttributeSet()
{
return attributes.keySet();
}
@Override
public boolean hasAttribute(String key)
{
return attributes.containsKey(key);
}
}