MATSIM
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
org.matsim.guice.MatsimGrapher Class Reference
Inheritance diagram for org.matsim.guice.MatsimGrapher:
Inheritance graph
[legend]

Public Member Functions

 MatsimGrapher (GrapherParameters options, Writer writer)
 

Protected Member Functions

void reset ()
 
void newInterfaceNode (InterfaceNode node)
 
void newImplementationNode (ImplementationNode node)
 
void newInstanceNode (InstanceNode node)
 
void newDependencyEdge (DependencyEdge edge)
 
void newBindingEdge (BindingEdge edge)
 
void postProcess ()
 

Private Member Functions

Graph< Node, Edge > filterGraph ()
 
Graph< Node, Edge > findGraphComponentReachableFromControler (Graph< Node, Edge > filteredGraph)
 

Private Attributes

Graph< Node, Edge > g
 
final Map< NodeId, Node > nodes = new HashMap<>()
 
Writer writer
 

Detailed Description

Definition at line 47 of file MatsimGrapher.java.

Constructor & Destructor Documentation

◆ MatsimGrapher()

org.matsim.guice.MatsimGrapher.MatsimGrapher ( GrapherParameters  options,
Writer  writer 
)

Definition at line 53 of file MatsimGrapher.java.

References org.matsim.guice.MatsimGrapher.writer.

53  {
54  super(options);
55  this.writer = writer;
56  g = new DefaultDirectedGraph<>(Edge.class);
57  }

Member Function Documentation

◆ reset()

void org.matsim.guice.MatsimGrapher.reset ( )
protected

Definition at line 60 of file MatsimGrapher.java.

60  {
61  g = new DefaultDirectedGraph<>(Edge.class);
62  nodes.clear();
63  }
final Map< NodeId, Node > nodes

◆ newInterfaceNode()

void org.matsim.guice.MatsimGrapher.newInterfaceNode ( InterfaceNode  node)
protected

Definition at line 66 of file MatsimGrapher.java.

66  {
67  g.addVertex(node);
68  nodes.put(node.getId(), node);
69  }
final Map< NodeId, Node > nodes

◆ newImplementationNode()

void org.matsim.guice.MatsimGrapher.newImplementationNode ( ImplementationNode  node)
protected

Definition at line 72 of file MatsimGrapher.java.

72  {
73  g.addVertex(node);
74  nodes.put(node.getId(), node);
75  }
final Map< NodeId, Node > nodes

◆ newInstanceNode()

void org.matsim.guice.MatsimGrapher.newInstanceNode ( InstanceNode  node)
protected

Definition at line 78 of file MatsimGrapher.java.

78  {
79  g.addVertex(node);
80  nodes.put(node.getId(), node);
81  }
final Map< NodeId, Node > nodes

◆ newDependencyEdge()

void org.matsim.guice.MatsimGrapher.newDependencyEdge ( DependencyEdge  edge)
protected

Definition at line 84 of file MatsimGrapher.java.

84  {
85  g.addEdge(nodes.get(edge.getFromId()), nodes.get(edge.getToId()), edge);
86  }
final Map< NodeId, Node > nodes

◆ newBindingEdge()

void org.matsim.guice.MatsimGrapher.newBindingEdge ( BindingEdge  edge)
protected

Definition at line 89 of file MatsimGrapher.java.

89  {
90  g.addEdge(nodes.get(edge.getFromId()), nodes.get(edge.getToId()), edge);
91  }
final Map< NodeId, Node > nodes

◆ postProcess()

void org.matsim.guice.MatsimGrapher.postProcess ( )
protected

Definition at line 94 of file MatsimGrapher.java.

References org.matsim.guice.MatsimGrapher.filterGraph(), org.matsim.guice.MatsimGrapher.findGraphComponentReachableFromControler(), org.matsim.guice.GraphvizRenderer.render(), and org.matsim.guice.GraphvizRenderer.setOut().

94  {
95  // More or less arbitrarily filter out graph nodes that I think are unhelpful clutter, like config
96  // groups, scenario elements, and things that aren't usually overridden.
97  Graph<Node, Edge> filteredGraph = filterGraph();
98 
99  Graph<Node, Edge> graphComponentReachableFromControler = findGraphComponentReachableFromControler(filteredGraph);
100 
101  // Render a dot file. Can be converted to a PDF with
102  // dot -Tpdf modules.dot > modules.pdf
103  GraphvizRenderer graphvizRenderer = new GraphvizRenderer();
104  graphvizRenderer.setRankdir("LR");
105  graphvizRenderer.setOut((PrintWriter) writer);
106  graphvizRenderer.render(graphComponentReachableFromControler);
107  }
Graph< Node, Edge > filterGraph()
Graph< Node, Edge > findGraphComponentReachableFromControler(Graph< Node, Edge > filteredGraph)
Here is the call graph for this function:

◆ filterGraph()

Graph<Node, Edge> org.matsim.guice.MatsimGrapher.filterGraph ( )
private

Definition at line 109 of file MatsimGrapher.java.

References org.matsim.guice.MatsimGrapher.g.

Referenced by org.matsim.guice.MatsimGrapher.postProcess().

109  {
110  return new MaskSubgraph<>(g, node -> {
111  if (ConfigGroup.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
112  return true;
113  }
114  if (Network.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
115  return true;
116  }
117  if (Population.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
118  return true;
119  }
120  if (DumpDataAtEnd.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
121  return true;
122  }
123  if (OutputDirectoryHierarchy.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
124  return true;
125  }
126  if (MatsimServices.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
127  return true;
128  }
129  if (Injector.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
130  return true;
131  }
132  if (PopulationFactory.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
133  return true;
134  }
135  if (Scenario.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
136  return true;
137  }
138  if (Config.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
139  return true;
140  }
141  if (IterationStopWatch.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
142  return true;
143  }
144  if (EventsManager.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
145  return true;
146  }
147  if (ReplanningContext.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
148  return true;
149  }
150  if (PlansDumping.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
151  return true;
152  }
153  if (ActivityFacilities.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
154  return true;
155  }
156  if (EventsHandling.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
157  return true;
158  }
159  if (TravelTimeCalculator.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
160  return true;
161  }
162  if (SingleModeNetworksCache.class.isAssignableFrom(node.getId().getKey().getTypeLiteral().getRawType())) {
163  return true;
164  }
165  if (ExperiencedPlansService.class.equals(node.getId().getKey().getTypeLiteral().getRawType())) {
166  return true;
167  }
168  if (node.getId().getKey().getTypeLiteral().toString().contains("ExperiencedPlansServiceImpl")) {
169  return true;
170  }
171  if (node.getId().getKey().getTypeLiteral().toString().contains("ControlerListener")) {
172  return true;
173  }
174  if (node.getId().getKey().getTypeLiteral().toString().contains("EventsToActivities")) {
175  return true;
176  }
177  if (node.getId().getKey().getTypeLiteral().toString().contains("EventsToLegs")) {
178  return true;
179  }
180  if (node.getId().getKey().getTypeLiteral().toString().contains("LeastCostPathCalculatorFactory")) {
181  return true;
182  }
183  if (node.getId().getKey().getTypeLiteral().toString().contains("MainModeIdentifier")) {
184  return true;
185  }
186  if (node.getId().getKey().getTypeLiteral().toString().contains("TerminationCriterion")) {
187  return true;
188  }
189  if (node.getId().getKey().getTypeLiteral().equals(new TypeLiteral<Set<MobsimListener>>(){})) {
190  return true;
191  }
192  return false;
193  }, edge -> false);
194  }

◆ findGraphComponentReachableFromControler()

Graph<Node, Edge> org.matsim.guice.MatsimGrapher.findGraphComponentReachableFromControler ( Graph< Node, Edge >  filteredGraph)
private

Definition at line 196 of file MatsimGrapher.java.

Referenced by org.matsim.guice.MatsimGrapher.postProcess().

196  {
197  Graph<Node, Edge> graphComponentReachableFromControler = new DefaultDirectedGraph<>(Edge.class);
198  ConnectivityInspector<Node, Edge> ci = new ConnectivityInspector<>(filteredGraph);
199  Node controlerNode = nodes.get(NodeId.newTypeId(Key.get(ControlerI.class)));
200  Graphs.addGraph(graphComponentReachableFromControler, new MaskSubgraph<>(g, node -> !ci.connectedSetOf(controlerNode).contains(node), edge -> false));
201  return graphComponentReachableFromControler;
202  }
final Map< NodeId, Node > nodes

Member Data Documentation

◆ g

Graph<Node, Edge> org.matsim.guice.MatsimGrapher.g
private

Definition at line 49 of file MatsimGrapher.java.

Referenced by org.matsim.guice.MatsimGrapher.filterGraph().

◆ nodes

final Map<NodeId, Node> org.matsim.guice.MatsimGrapher.nodes = new HashMap<>()
private

Definition at line 50 of file MatsimGrapher.java.

◆ writer

Writer org.matsim.guice.MatsimGrapher.writer
private

Definition at line 51 of file MatsimGrapher.java.

Referenced by org.matsim.guice.MatsimGrapher.MatsimGrapher().


The documentation for this class was generated from the following file: