annotate src/main/java/alice/topology/manager/StartTopologyManager.java @ 401:91e1b063a89f dispose

haven't to remove manager package
author sugi
date Sun, 22 Jun 2014 23:12:02 +0900
parents
children ca2947303438
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
401
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
1 package alice.topology.manager;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
2
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
3 import java.io.File;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
4 import java.io.FileNotFoundException;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
5 import java.io.FileReader;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
6 import java.util.ArrayList;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
7 import java.util.HashMap;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
8 import java.util.LinkedList;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
9
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
10 import org.apache.log4j.Logger;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
11
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
12 import alice.codesegment.CodeSegment;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
13
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
14 import com.alexmerz.graphviz.ParseException;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
15 import com.alexmerz.graphviz.Parser;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
16 import com.alexmerz.graphviz.objects.Edge;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
17 import com.alexmerz.graphviz.objects.Graph;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
18 import com.alexmerz.graphviz.objects.Node;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
19
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
20 public class StartTopologyManager extends CodeSegment {
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
21
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
22 TopologyManagerConfig conf;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
23 Logger logger = Logger.getLogger(StartTopologyManager.class);
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
24
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
25 public StartTopologyManager(TopologyManagerConfig conf) {
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
26 this.conf = conf;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
27 }
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
28
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
29 @Override
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
30 public void run() {
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
31 LinkedList<String> nodeNames = new LinkedList<String>();
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
32 HashMap<String, LinkedList<NodeInfo>> topology = new HashMap<String, LinkedList<NodeInfo>>();
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
33 int nodeNum = 0;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
34 try {
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
35 FileReader reader = new FileReader(new File(conf.confFilePath));
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
36 Parser parser = new Parser();
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
37 parser.parse(reader);
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
38 ArrayList<Graph> graphs = parser.getGraphs();
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
39 for (Graph graph : graphs) {
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
40 ArrayList<Node> nodes = graph.getNodes(false);
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
41 nodeNum = nodes.size();
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
42 for (Node node : nodes) {
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
43 String nodeName = node.getId().getId();
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
44 nodeNames.add(nodeName);
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
45 topology.put(nodeName, new LinkedList<NodeInfo>());
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
46 }
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
47 ArrayList<Edge> edges = graph.getEdges();
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
48 HashMap<String, NodeInfo> hash = new HashMap<String, NodeInfo>();
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
49 for (Edge edge : edges) {
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
50 String connection = edge.getAttribute("label");
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
51 String source = edge.getSource().getNode().getId().getId();
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
52 String target = edge.getTarget().getNode().getId().getId();
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
53 LinkedList<NodeInfo> sources = topology.get(target);
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
54 NodeInfo nodeInfo = new NodeInfo(source, connection);
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
55 sources.add(nodeInfo);
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
56 hash.put(source + "," + target, nodeInfo);
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
57 }
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
58 for (Edge edge : edges) {
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
59 String connection = edge.getAttribute("label");
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
60 String source = edge.getSource().getNode().getId().getId();
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
61 String target = edge.getTarget().getNode().getId().getId();
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
62 NodeInfo nodeInfo = hash.get(target + "," + source);
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
63 if (nodeInfo != null) {
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
64 nodeInfo.reverseName = connection;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
65 }
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
66 }
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
67 }
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
68
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
69 } catch (FileNotFoundException e) {
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
70 logger.error("File not found: " + conf.confFilePath);
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
71 e.printStackTrace();
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
72 } catch (ParseException e) {
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
73 logger.error("File format error: " + conf.confFilePath);
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
74 e.printStackTrace();
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
75 }
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
76
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
77 IncomingHosts cs1 = new IncomingHosts(topology, nodeNames);
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
78 cs1.host.setKey("local", "host");
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
79
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
80 TopologyFinish cs2 = new TopologyFinish();
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
81 cs2.finish.setKey("local", "finish");
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
82
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
83 ConfigWaiter cs3 = new ConfigWaiter(nodeNum);
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
84 cs3.done.setKey("local", "done");
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
85 }
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
86
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
87 }