1
2
3
4
5
6
7
8
9
10
11 package edu.uci.ics.jung.io.graphml.parser;
12
13 import javax.xml.stream.events.EndElement;
14 import javax.xml.stream.events.StartElement;
15
16 import edu.uci.ics.jung.graph.Hypergraph;
17 import edu.uci.ics.jung.io.GraphIOException;
18 import edu.uci.ics.jung.io.graphml.Metadata;
19
20
21
22
23
24
25 public abstract class AbstractElementParser<G extends Hypergraph<V,E>,V,E> implements ElementParser {
26
27 final private ParserContext<G,V,E> parserContext;
28 protected AbstractElementParser(ParserContext<G,V,E> parserContext) {
29 this.parserContext = parserContext;
30 }
31
32 public ParserContext<G,V,E> getParserContext() {
33 return this.parserContext;
34 }
35
36 public ElementParser getParser(String localName) {
37 return parserContext.getElementParserRegistry().getParser(localName);
38 }
39
40 public void applyKeys(Metadata metadata) {
41 getParserContext().getKeyMap().applyKeys(metadata);
42 }
43
44 public ElementParser getUnknownParser() {
45 return parserContext.getElementParserRegistry().getUnknownElementParser();
46 }
47
48 protected void verifyMatch(StartElement start, EndElement end)
49 throws GraphIOException {
50
51 String startName = start.getName().getLocalPart();
52 String endName = end.getName().getLocalPart();
53 if (!startName.equals(endName)) {
54 throw new GraphIOException(
55 "Failed parsing document: Start/end tag mismatch! "
56 + "StartTag:" + startName + ", EndTag: "
57 + endName);
58 }
59 }
60 }