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
|
|
14 import com.alexmerz.graphviz.ParseException;
|
|
15 import com.alexmerz.graphviz.Parser;
|
|
16 import com.alexmerz.graphviz.objects.*;
|
|
17
|
|
18 public class FileParser extends CodeGear {
|
|
19
|
|
20 @Peek
|
|
21 TopologyManagerConfig topologyManagerConfig;
|
|
22
|
|
23 @Override
|
|
24 protected void run(CodeGearManager cgm) {
|
|
25 LinkedList<String> nodeNames = new LinkedList<>();
|
|
26 HashMap<String, LinkedList<NodeInfo>> resultParse = new HashMap<>();
|
|
27 int nodeNum = 0;
|
|
28
|
|
29 try {
|
|
30 FileReader reader = new FileReader(new File(topologyManagerConfig.confFilePath));
|
|
31 Parser parser = new Parser();
|
|
32 parser.parse(reader);
|
|
33
|
|
34
|
|
35 ArrayList<Graph> digraphs = parser.getGraphs();
|
|
36
|
|
37
|
|
38 for (Graph digraph : digraphs) {
|
|
39 ArrayList<Node> nodes = digraph.getNodes(false);
|
|
40 nodeNum = nodes.size();
|
|
41
|
|
42 for (Node node : nodes) {
|
|
43 String nodeName = node.getId().getId();
|
|
44 nodeNames.add(nodeName);
|
|
45 resultParse.put(nodeName, new LinkedList<>());
|
|
46 }
|
|
47
|
|
48 ArrayList<Edge> edges = digraph.getEdges();
|
|
49
|
|
50 String connection;
|
|
51 String source;
|
|
52 String target;
|
|
53
|
|
54 NodeInfo nodeInfo;
|
|
55
|
|
56 for (Edge edge : edges) {
|
|
57 connection = edge.getAttribute("label");
|
|
58 source = edge.getSource().getNode().getId().getId();
|
|
59 target = edge.getTarget().getNode().getId().getId();
|
|
60 nodeInfo = new NodeInfo(source, connection, target);
|
|
61
|
|
62 resultParse.get(source).add(nodeInfo);
|
|
63
|
|
64 }
|
|
65 }
|
|
66
|
|
67 } catch (FileNotFoundException e) {
|
|
68 e.printStackTrace();
|
|
69 } catch (ParseException e) {
|
|
70 e.printStackTrace();
|
|
71 }
|
|
72
|
|
73 getLocalDGM().put("resultParse", resultParse);
|
|
74 getLocalDGM().put("nodeNum", nodeNum);
|
|
75 getLocalDGM().put("nodeNames", nodeNames);
|
74
|
76 getLocalDGM().put("waiterNodeNames", nodeNames.clone());
|
|
77
|
73
|
78
|
|
79
|
|
80 }
|
|
81 }
|