Mercurial > hg > Database > Christie
view src/main/java/christie/topology/manager/FileParser.java @ 121:8949d0ecf1f6
refactor Topology
author | akahori |
---|---|
date | Tue, 11 Dec 2018 15:46:09 +0900 |
parents | ce96f375f369 |
children | a0391cfdcef6 |
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 christie.topology.HostMessage; import com.alexmerz.graphviz.ParseException; import com.alexmerz.graphviz.Parser; import com.alexmerz.graphviz.objects.*; public class FileParser extends CodeGear { @Peek TopologyManagerConfig topologyManagerConfig; @Override protected void run(CodeGearManager cgm) { LinkedList<String> nodeNames = new LinkedList<>(); HashMap<String, LinkedList<HostMessage>> 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(); for (Edge edge : edges) { HostMessage nodeInfo = new HostMessage(); nodeInfo.setNodeInfo(edge.getSource().getNode().getId().getId(), edge.getAttribute("label"), edge.getTarget().getNode().getId().getId()); // remote側のhost, portを与えるので, IncomingHostsで取りやすいように // <remoteNodeName, nodeInfo> って形にした. resultParse.get(nodeInfo.getRemoteNodeName()).add(nodeInfo); } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); } getLocalDGM().put("resultParse", resultParse); getLocalDGM().put("nodeNum", nodeNum); getLocalDGM().put("nodeNames", nodeNames); getLocalDGM().put("waiterNodeNames", nodeNames.clone()); } }