net.sf.javagimmicks.graph.DefaultEdgeFactory Maven / Gradle / Ivy
package net.sf.javagimmicks.graph;
import java.util.Arrays;
import java.util.Collection;
import net.sf.javagimmicks.lang.LangUtils;
public class DefaultEdgeFactory implements EdgeFactory>
{
public DefaultEdge createEdge(Graph> graph, V source, V target)
{
return new DefaultEdge(graph, source, target);
}
public static abstract class AbstractDefaultEdge> implements Edge, DirectedEdge, WeightedEdge
{
protected final Graph _graph;
protected final V _source;
protected final V _target;
protected double _cost = 1.0;
public AbstractDefaultEdge(Graph graph, V source, V target)
{
_graph = graph;
_source = source;
_target = target;
}
public double getCost()
{
return _cost;
}
public void setCost(double cost)
{
_cost = cost;
}
public Graph getGraph()
{
return _graph;
}
public V getSourceVertex()
{
return _source;
}
public V getTargetVertex()
{
return _target;
}
public V getOutgoingVertex(V incoming)
{
if(LangUtils.equalsNullSafe(incoming, _source))
{
return _target;
}
else if(LangUtils.equalsNullSafe(incoming, _target))
{
return _source;
}
else
{
return null;
}
}
public boolean connectsTo(V vertex)
{
return
LangUtils.equalsNullSafe(vertex, _source) ||
LangUtils.equalsNullSafe(vertex, _target);
}
@SuppressWarnings("unchecked")
public Collection getVerteces()
{
return Arrays.asList(_source, _target);
}
public String toString(V incoming)
{
return new StringBuilder()
.append(incoming)
.append("->")
.append(getOutgoingVertex(incoming))
.toString();
}
@Override
public String toString()
{
return toString(_source);
}
}
public static class DefaultEdge extends AbstractDefaultEdge>
{
public DefaultEdge(Graph> graph, V source, V target)
{
super(graph, source, target);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy