Mercurial > hg > Database > Christie
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/christie/topology/manager/FileParser.java Wed Sep 05 09:04:06 2018 +0900 @@ -0,0 +1,87 @@ +package christie.topology.manager; + +import christie.annotation.Peek; +import christie.codegear.CodeGear; +import christie.codegear.CodeGearManager; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedList; + +import org.apache.log4j.Logger; + +import com.alexmerz.graphviz.ParseException; +import com.alexmerz.graphviz.Parser; +import com.alexmerz.graphviz.objects.*; + +public class FileParser extends CodeGear { + + @Peek + TopologyManagerConfig topologyManagerConfig; + + private Logger logger = Logger.getLogger(TopologyManager.class); + + + @Override + protected void run(CodeGearManager cgm) { + LinkedList<String> nodeNames = new LinkedList<>(); + HashMap<String, LinkedList<NodeInfo>> resultParse = new HashMap<>(); + int nodeNum = 0; + + try { + FileReader reader = new FileReader(new File(topologyManagerConfig.confFilePath)); + Parser parser = new Parser(); + parser.parse(reader); + + + ArrayList<Graph> digraphs = parser.getGraphs(); + + + for (Graph digraph : digraphs) { + ArrayList<Node> nodes = digraph.getNodes(false); + nodeNum = nodes.size(); + + for (Node node : nodes) { + String nodeName = node.getId().getId(); + nodeNames.add(nodeName); + resultParse.put(nodeName, new LinkedList<>()); + } + + ArrayList<Edge> edges = digraph.getEdges(); + HashMap<String, NodeInfo> hash = new HashMap<>(); + + String connection; + String source; + String target; + + NodeInfo nodeInfo; + + for (Edge edge : edges) { + connection = edge.getAttribute("label"); + source = edge.getSource().getNode().getId().getId(); + target = edge.getTarget().getNode().getId().getId(); + nodeInfo = new NodeInfo(source, connection, target); + + resultParse.get(source).add(nodeInfo); + + } + } + + } catch (FileNotFoundException e) { + logger.error("File not found: " + topologyManagerConfig.confFilePath); + e.printStackTrace(); + } catch (ParseException e) { + logger.error("File format error: " + topologyManagerConfig.confFilePath); + e.printStackTrace(); + } + + getLocalDGM().put("resultParse", resultParse); + getLocalDGM().put("nodeNum", nodeNum); + getLocalDGM().put("nodeNames", nodeNames); + + + } +}