/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package automenta.netention.linker;
import automenta.netention.Detail;
import automenta.netention.Link;
import automenta.netention.Mode;
import automenta.netention.Node;
import automenta.netention.Pattern;
import automenta.netention.PropertyValue;
import automenta.netention.Schema;
import automenta.netention.graph.ValueEdge;
import automenta.netention.link.CreatedBy;
import automenta.netention.link.HasProperty;
import automenta.netention.link.PatternOf;
import automenta.netention.node.Creator;
import automenta.netention.node.PropertyNode;
import com.syncleus.dann.graph.MutableAdjacencyGraph;
import java.util.Iterator;
/**
*
* @author seh
*/
public class MetadataGrapher {
public static void run(Schema schema, Iterator<Detail> i, MutableAdjacencyGraph<Object, ValueEdge<Object, Link>> target, boolean creators, boolean mode, boolean patterns, boolean properties) {
while (i.hasNext()) {
Detail d = i.next();
target.add(d);
if (creators) {
Creator c = new Creator(d);
target.add(c);
target.add(new ValueEdge(new CreatedBy(), d, c));
}
if (mode) {
final Object t = getNode(d.getMode());
target.add(t);
target.add(new ValueEdge(new PatternOf(), d, t));
}
if (patterns) {
for (String p : d.getPatterns()) {
final Pattern pa = schema.getPatterns().get(p);
target.add(pa);
target.add(new ValueEdge(new PatternOf(), d, pa));
}
}
if (properties) {
for (PropertyValue p : d.getProperties()) {
final PropertyNode pn = new PropertyNode(p);
target.add(pn);
target.add(new ValueEdge(new HasProperty(), d, pn));
}
}
}
}
public static Object getNode(Mode m) {
if (m == Mode.Real) {
return new Pattern("real");
} else if (m == Mode.Imaginary) {
return new Pattern("imaginary");
} else /*if (m == Unknown)*/ {
return new Pattern("thought");
}
}
}