annotate src/main/java/christie/topology/manager/FileParser.java @ 74:e2ce8038815a

fix FileParser
author akahori
date Wed, 05 Sep 2018 09:43:22 +0900
parents f1f34c3e33d4
children e4d16deb9627
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
73
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
1 package christie.topology.manager;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
2
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
3 import christie.annotation.Peek;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
4 import christie.codegear.CodeGear;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
5 import christie.codegear.CodeGearManager;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
6
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
7 import java.io.File;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
8 import java.io.FileNotFoundException;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
9 import java.io.FileReader;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
10 import java.util.ArrayList;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
11 import java.util.HashMap;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
12 import java.util.LinkedList;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
13
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
14 import org.apache.log4j.Logger;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
15
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
16 import com.alexmerz.graphviz.ParseException;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
17 import com.alexmerz.graphviz.Parser;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
18 import com.alexmerz.graphviz.objects.*;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
19
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
20 public class FileParser extends CodeGear {
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
21
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
22 @Peek
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
23 TopologyManagerConfig topologyManagerConfig;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
24
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
25 private Logger logger = Logger.getLogger(TopologyManager.class);
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
26
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
27
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
28 @Override
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
29 protected void run(CodeGearManager cgm) {
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
30 LinkedList<String> nodeNames = new LinkedList<>();
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
31 HashMap<String, LinkedList<NodeInfo>> resultParse = new HashMap<>();
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
32 int nodeNum = 0;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
33
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
34 try {
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
35 FileReader reader = new FileReader(new File(topologyManagerConfig.confFilePath));
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
36 Parser parser = new Parser();
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
37 parser.parse(reader);
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
38
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
39
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
40 ArrayList<Graph> digraphs = parser.getGraphs();
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
41
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
42
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
43 for (Graph digraph : digraphs) {
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
44 ArrayList<Node> nodes = digraph.getNodes(false);
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
45 nodeNum = nodes.size();
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
46
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
47 for (Node node : nodes) {
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
48 String nodeName = node.getId().getId();
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
49 nodeNames.add(nodeName);
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
50 resultParse.put(nodeName, new LinkedList<>());
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
51 }
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
52
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
53 ArrayList<Edge> edges = digraph.getEdges();
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
54 HashMap<String, NodeInfo> hash = new HashMap<>();
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
55
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
56 String connection;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
57 String source;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
58 String target;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
59
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
60 NodeInfo nodeInfo;
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
61
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
62 for (Edge edge : edges) {
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
63 connection = edge.getAttribute("label");
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
64 source = edge.getSource().getNode().getId().getId();
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
65 target = edge.getTarget().getNode().getId().getId();
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
66 nodeInfo = new NodeInfo(source, connection, target);
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
67
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
68 resultParse.get(source).add(nodeInfo);
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
69
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
70 }
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
71 }
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
72
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
73 } catch (FileNotFoundException e) {
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
74 logger.error("File not found: " + topologyManagerConfig.confFilePath);
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
75 e.printStackTrace();
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
76 } catch (ParseException e) {
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
77 logger.error("File format error: " + topologyManagerConfig.confFilePath);
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
78 e.printStackTrace();
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
79 }
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
80
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
81 getLocalDGM().put("resultParse", resultParse);
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
82 getLocalDGM().put("nodeNum", nodeNum);
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
83 getLocalDGM().put("nodeNames", nodeNames);
74
e2ce8038815a fix FileParser
akahori
parents: 73
diff changeset
84 getLocalDGM().put("waiterNodeNames", nodeNames.clone());
e2ce8038815a fix FileParser
akahori
parents: 73
diff changeset
85
73
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
86
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
87
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
88 }
f1f34c3e33d4 add FileParser.java
akahori
parents:
diff changeset
89 }