73
|
1 package christie.topology.manager;
|
|
2
|
|
3 import christie.annotation.Peek;
|
|
4 import christie.codegear.CodeGear;
|
|
5 import christie.codegear.CodeGearManager;
|
|
6
|
|
7 import java.io.File;
|
|
8 import java.io.FileNotFoundException;
|
|
9 import java.io.FileReader;
|
|
10 import java.util.ArrayList;
|
|
11 import java.util.HashMap;
|
|
12 import java.util.LinkedList;
|
|
13
|
94
|
14 import christie.topology.HostMessage;
|
73
|
15 import com.alexmerz.graphviz.ParseException;
|
|
16 import com.alexmerz.graphviz.Parser;
|
|
17 import com.alexmerz.graphviz.objects.*;
|
|
18
|
|
19 public class FileParser extends CodeGear {
|
|
20
|
|
21 @Peek
|
|
22 TopologyManagerConfig topologyManagerConfig;
|
|
23
|
|
24 @Override
|
|
25 protected void run(CodeGearManager cgm) {
|
|
26 LinkedList<String> nodeNames = new LinkedList<>();
|
94
|
27 HashMap<String, LinkedList<HostMessage>> resultParse = new HashMap<>();
|
73
|
28 int nodeNum = 0;
|
|
29
|
|
30 try {
|
|
31 FileReader reader = new FileReader(new File(topologyManagerConfig.confFilePath));
|
|
32 Parser parser = new Parser();
|
|
33 parser.parse(reader);
|
|
34
|
|
35
|
|
36 ArrayList<Graph> digraphs = parser.getGraphs();
|
|
37
|
|
38
|
|
39 for (Graph digraph : digraphs) {
|
|
40 ArrayList<Node> nodes = digraph.getNodes(false);
|
|
41 nodeNum = nodes.size();
|
|
42
|
|
43 for (Node node : nodes) {
|
|
44 String nodeName = node.getId().getId();
|
|
45 nodeNames.add(nodeName);
|
|
46 resultParse.put(nodeName, new LinkedList<>());
|
|
47 }
|
|
48
|
|
49 ArrayList<Edge> edges = digraph.getEdges();
|
|
50
|
94
|
51 for (Edge edge : edges) {
|
|
52 HostMessage nodeInfo = new HostMessage();
|
73
|
53
|
94
|
54 nodeInfo.setNodeInfo(edge.getSource().getNode().getId().getId(),
|
|
55 edge.getAttribute("label"),
|
|
56 edge.getTarget().getNode().getId().getId());
|
|
57 resultParse.get(nodeInfo.getNodeName()).add(nodeInfo);
|
73
|
58 }
|
|
59 }
|
|
60
|
|
61 } catch (FileNotFoundException e) {
|
|
62 e.printStackTrace();
|
|
63 } catch (ParseException e) {
|
|
64 e.printStackTrace();
|
|
65 }
|
|
66
|
|
67 getLocalDGM().put("resultParse", resultParse);
|
|
68 getLocalDGM().put("nodeNum", nodeNum);
|
|
69 getLocalDGM().put("nodeNames", nodeNames);
|
74
|
70 getLocalDGM().put("waiterNodeNames", nodeNames.clone());
|
|
71
|
73
|
72
|
|
73
|
|
74 }
|
|
75 }
|