comparison src/topology/manager/StartTopologyManager.java @ 22:2ca2d961a8d2

implements outline of TopologyManager
author kazz <kazz@cr.ie.u-ryukyu.ac.jp>
date Tue, 17 Jan 2012 00:40:27 +0900
parents
children ebd91e607b63
comparison
equal deleted inserted replaced
21:145667a554ad 22:2ca2d961a8d2
1 package topology.manager;
2
3 import java.io.File;
4 import java.io.FileNotFoundException;
5 import java.io.FileReader;
6 import java.util.ArrayList;
7 import java.util.HashMap;
8 import java.util.LinkedList;
9
10 import org.apache.log4j.Logger;
11
12 import com.alexmerz.graphviz.ParseException;
13 import com.alexmerz.graphviz.Parser;
14 import com.alexmerz.graphviz.objects.Edge;
15 import com.alexmerz.graphviz.objects.Graph;
16 import com.alexmerz.graphviz.objects.Node;
17
18 import alice.codesegment.CodeSegment;
19
20 public class StartTopologyManager extends CodeSegment {
21
22 TopologyManagerConfig conf;
23 Logger logger = Logger.getLogger(StartTopologyManager.class);
24
25 public StartTopologyManager(TopologyManagerConfig conf) {
26 conf = this.conf;
27 }
28
29 @Override
30 public void run() {
31 LinkedList<String> nodeNames = new LinkedList<String>();
32 HashMap<String, NodeInfo> topology = new HashMap<String, NodeInfo>();
33 try {
34 FileReader reader = new FileReader(new File(conf.confFilePath));
35 Parser parser = new Parser();
36 parser.parse(reader);
37 ArrayList<Graph> graphs = parser.getGraphs();
38 for (Graph graph : graphs) {
39 ArrayList<Node> nodes = graph.getNodes(false);
40 for (Node node : nodes) {
41 nodeNames.add(node.getId().getId());
42 }
43 ArrayList<Edge> edges = graph.getEdges();
44 for (Edge edge : edges) {
45 String connection = edge.getAttribute("label");
46 String source = edge.getSource().getNode().getId().getId();
47 String target = edge.getSource().getNode().getId().getId();
48 topology.put(target, new NodeInfo(source, connection));
49 }
50 }
51
52 } catch (FileNotFoundException e) {
53 logger.error("File not found: " + conf.confFilePath);
54 e.printStackTrace();
55 } catch (ParseException e) {
56 logger.error("File format error: " + conf.confFilePath);
57 e.printStackTrace();
58 }
59
60 IncomingHosts cs = new IncomingHosts(topology, nodeNames);
61 cs.host.setKey("local", "host");
62 }
63
64 }