comparison src/main/java/christie/topology/manager/FileParser.java @ 73:f1f34c3e33d4

add FileParser.java
author akahori
date Wed, 05 Sep 2018 09:04:06 +0900
parents
children e2ce8038815a
comparison
equal deleted inserted replaced
72:32f6f9de97c1 73:f1f34c3e33d4
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 org.apache.log4j.Logger;
15
16 import com.alexmerz.graphviz.ParseException;
17 import com.alexmerz.graphviz.Parser;
18 import com.alexmerz.graphviz.objects.*;
19
20 public class FileParser extends CodeGear {
21
22 @Peek
23 TopologyManagerConfig topologyManagerConfig;
24
25 private Logger logger = Logger.getLogger(TopologyManager.class);
26
27
28 @Override
29 protected void run(CodeGearManager cgm) {
30 LinkedList<String> nodeNames = new LinkedList<>();
31 HashMap<String, LinkedList<NodeInfo>> resultParse = new HashMap<>();
32 int nodeNum = 0;
33
34 try {
35 FileReader reader = new FileReader(new File(topologyManagerConfig.confFilePath));
36 Parser parser = new Parser();
37 parser.parse(reader);
38
39
40 ArrayList<Graph> digraphs = parser.getGraphs();
41
42
43 for (Graph digraph : digraphs) {
44 ArrayList<Node> nodes = digraph.getNodes(false);
45 nodeNum = nodes.size();
46
47 for (Node node : nodes) {
48 String nodeName = node.getId().getId();
49 nodeNames.add(nodeName);
50 resultParse.put(nodeName, new LinkedList<>());
51 }
52
53 ArrayList<Edge> edges = digraph.getEdges();
54 HashMap<String, NodeInfo> hash = new HashMap<>();
55
56 String connection;
57 String source;
58 String target;
59
60 NodeInfo nodeInfo;
61
62 for (Edge edge : edges) {
63 connection = edge.getAttribute("label");
64 source = edge.getSource().getNode().getId().getId();
65 target = edge.getTarget().getNode().getId().getId();
66 nodeInfo = new NodeInfo(source, connection, target);
67
68 resultParse.get(source).add(nodeInfo);
69
70 }
71 }
72
73 } catch (FileNotFoundException e) {
74 logger.error("File not found: " + topologyManagerConfig.confFilePath);
75 e.printStackTrace();
76 } catch (ParseException e) {
77 logger.error("File format error: " + topologyManagerConfig.confFilePath);
78 e.printStackTrace();
79 }
80
81 getLocalDGM().put("resultParse", resultParse);
82 getLocalDGM().put("nodeNum", nodeNum);
83 getLocalDGM().put("nodeNames", nodeNames);
84
85
86 }
87 }