package com.hqyg.disjob.graph;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import com.hqyg.disjob.java.ExecutorBuilder;
import com.hqyg.disjob.java.job.DependEJob;
public class GraphTest {
private static Node<DependEJob> startNode = null ;
public static void main(String[] args) throws Exception {
Graph<DependEJob> graph = new Graph<DependEJob>();
Node<DependEJob> JOB_A = new Node<DependEJob>(new JobA("A"));
Node<DependEJob> JOB_B = new Node<DependEJob>(new JobB("B"));
Node<DependEJob> JOB_C = new Node<DependEJob>(new JobC("C"));
Node<DependEJob> JOB_D = new Node<DependEJob>(new JobD("D"));
Node<DependEJob> JOB_E = new Node<DependEJob>(new JobD("E"));
Node<DependEJob> JOB_F = new Node<DependEJob>(new JobD("F"));
graph.addNode(JOB_A, JOB_B);
graph.addNode(JOB_B, JOB_E);
graph.addNode(JOB_B, JOB_C);
graph.addNode(JOB_E, JOB_D);
graph.addNode(JOB_E, JOB_F);
graph.addNode(JOB_C, JOB_F);
graph.addNode(JOB_D, JOB_F);
startNode = JOB_A;
Iterator<Node<DependEJob>> iter = graph.getVertexSet().iterator();
while (iter.hasNext()) {
Node<DependEJob> node = iter.next();
Set<Node<DependEJob>> sets = graph.getAdjaNode().get(node);
if (sets != null) {
System.out.print(node.getVal().getKey() + "->");
for (Node<DependEJob> n : sets) {
System.out.print(n.getVal().getKey() + ",");
}
System.out.println();
}
}
System.out.println("===getReverseAdjaNode==");
for(Map.Entry<Node<DependEJob>, Set<Node<DependEJob>>> entry : graph.getReverseAdjaNode().entrySet()){
System.out.print(entry.getKey().getVal().getKey() + "->");
Set<Node<DependEJob>> sets = entry.getValue();
for (Node<DependEJob> n : sets) {
System.out.print(n.getVal().getKey() + ",");
}
System.out.println();
}
Scheduler scheduler = new Scheduler(graph);
//3s 钟后触发A节点
while(true){
Thread.sleep(10000);
ExecutorBuilder.getJobExecutor().execute(new JobAction(startNode, scheduler));
}
}
}