1
2
3
4
5
6
7
8
9
10
11 package edu.uci.ics.jung.io.graphml.parser;
12
13 import com.google.common.base.Function;
14
15 import edu.uci.ics.jung.graph.Hypergraph;
16 import edu.uci.ics.jung.io.graphml.EdgeMetadata;
17 import edu.uci.ics.jung.io.graphml.GraphMetadata;
18 import edu.uci.ics.jung.io.graphml.HyperEdgeMetadata;
19 import edu.uci.ics.jung.io.graphml.KeyMap;
20 import edu.uci.ics.jung.io.graphml.NodeMetadata;
21
22
23
24
25
26
27
28
29
30
31 public class ParserContext<G extends Hypergraph<V, E>, V, E> {
32
33 private final KeyMap keyMap;
34 private final ElementParserRegistry<G,V,E> elementParserRegistry;
35 private final Function<GraphMetadata, G> graphTransformer;
36 private final Function<NodeMetadata, V> vertexTransformer;
37 private final Function<EdgeMetadata, E> edgeTransformer;
38 private final Function<HyperEdgeMetadata, E> hyperEdgeTransformer;
39
40 public ParserContext(ElementParserRegistry<G,V,E> elementParserRegistry,
41 KeyMap keyMap,
42 Function<GraphMetadata, G> graphTransformer,
43 Function<NodeMetadata, V> vertexTransformer,
44 Function<EdgeMetadata, E> edgeTransformer,
45 Function<HyperEdgeMetadata, E> hyperEdgeTransformer ) {
46 this.elementParserRegistry = elementParserRegistry;
47 this.keyMap = keyMap;
48 this.graphTransformer = graphTransformer;
49 this.vertexTransformer = vertexTransformer;
50 this.edgeTransformer = edgeTransformer;
51 this.hyperEdgeTransformer = hyperEdgeTransformer;
52 }
53
54 public ElementParserRegistry<G,V,E> getElementParserRegistry() {
55 return elementParserRegistry;
56 }
57
58 public KeyMap getKeyMap() {
59 return keyMap;
60 }
61
62 public G createGraph(GraphMetadata metadata) {
63 return graphTransformer.apply(metadata);
64 }
65
66 public V createVertex(NodeMetadata metadata) {
67 return vertexTransformer.apply(metadata);
68 }
69
70 public E createEdge(EdgeMetadata metadata) {
71 return edgeTransformer.apply(metadata);
72 }
73
74 public E createHyperEdge(HyperEdgeMetadata metadata) {
75 return hyperEdgeTransformer.apply(metadata);
76 }
77 }