Mercurial > hg > Database > Alice
view src/alice/topology/manager/StartTopologyManager.java @ 67:2afbb6404840
off logger for experiment
author | kazz <kazz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 10 Feb 2012 03:33:29 +0900 |
parents | 92aeb6e34683 |
children | 7f7b3506bff9 |
line wrap: on
line source
package alice.topology.manager; 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 alice.codesegment.CodeSegment; import com.alexmerz.graphviz.ParseException; import com.alexmerz.graphviz.Parser; import com.alexmerz.graphviz.objects.Edge; import com.alexmerz.graphviz.objects.Graph; import com.alexmerz.graphviz.objects.Node; public class StartTopologyManager extends CodeSegment { TopologyManagerConfig conf; Logger logger = Logger.getLogger(StartTopologyManager.class); public StartTopologyManager(TopologyManagerConfig conf) { this.conf = conf; } @Override public void run() { LinkedList<String> nodeNames = new LinkedList<String>(); HashMap<String, LinkedList<NodeInfo>> topology = new HashMap<String, LinkedList<NodeInfo>>(); int nodeNum = 0; try { FileReader reader = new FileReader(new File(conf.confFilePath)); Parser parser = new Parser(); parser.parse(reader); ArrayList<Graph> graphs = parser.getGraphs(); for (Graph graph : graphs) { ArrayList<Node> nodes = graph.getNodes(false); nodeNum = nodes.size(); for (Node node : nodes) { String nodeName = node.getId().getId(); nodeNames.add(nodeName); topology.put(nodeName, new LinkedList<NodeInfo>()); } ArrayList<Edge> edges = graph.getEdges(); HashMap<String, NodeInfo> hash = new HashMap<String, NodeInfo>(); for (Edge edge : edges) { String connection = edge.getAttribute("label"); String source = edge.getSource().getNode().getId().getId(); String target = edge.getTarget().getNode().getId().getId(); LinkedList<NodeInfo> sources = topology.get(target); NodeInfo nodeInfo = new NodeInfo(source, connection); sources.add(nodeInfo); hash.put(source + "," + target, nodeInfo); } for (Edge edge : edges) { String connection = edge.getAttribute("label"); String source = edge.getSource().getNode().getId().getId(); String target = edge.getTarget().getNode().getId().getId(); NodeInfo nodeInfo = hash.get(target + "," + source); if (nodeInfo != null) { nodeInfo.reverseName = connection; } } } } catch (FileNotFoundException e) { logger.error("File not found: " + conf.confFilePath); e.printStackTrace(); } catch (ParseException e) { logger.error("File format error: " + conf.confFilePath); e.printStackTrace(); } IncomingHosts cs1 = new IncomingHosts(topology, nodeNames); cs1.host.setKey("local", "host"); TopologyFinish cs2 = new TopologyFinish(); cs2.finish.setKey("local", "finish"); ConfigWaiter cs3 = new ConfigWaiter(nodeNum); cs3.done.setKey("local", "done"); } }