Mercurial > hg > Database > Christie
view src/main/java/christie/topology/manager/FileParser.java @ 85:331ad549e764
fix CreateTreeTopology
author | akahori |
---|---|
date | Sat, 15 Sep 2018 10:22:12 +0900 |
parents | e2ce8038815a |
children | e4d16deb9627 |
line wrap: on
line source
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); getLocalDGM().put("waiterNodeNames", nodeNames.clone()); } }