/*
* Copyright (c) 2008, the JUNG Project and the Regents of the University
* of California
* All rights reserved.
*
* This software is open-source under the BSD license; see either
* "license.txt" or
* http://jung.sourceforge.net/license.txt for a description.
*/
package edu.uci.ics.jung.io.graphml.parser;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartElement;
import edu.uci.ics.jung.graph.Hypergraph;
import edu.uci.ics.jung.io.GraphIOException;
import edu.uci.ics.jung.io.graphml.Metadata;
/**
* Base class for element parsers - provides some minimal functionality.
*
* @author Nathan Mittler - nathan.mittler@gmail.com
*/
public abstract class AbstractElementParser<G extends Hypergraph<V,E>,V,E> implements ElementParser {
final private ParserContext<G,V,E> parserContext;
protected AbstractElementParser(ParserContext<G,V,E> parserContext) {
this.parserContext = parserContext;
}
public ParserContext<G,V,E> getParserContext() {
return this.parserContext;
}
public ElementParser getParser(String localName) {
return parserContext.getElementParserRegistry().getParser(localName);
}
public void applyKeys(Metadata metadata) {
getParserContext().getKeyMap().applyKeys(metadata);
}
public ElementParser getUnknownParser() {
return parserContext.getElementParserRegistry().getUnknownElementParser();
}
protected void verifyMatch(StartElement start, EndElement end)
throws GraphIOException {
String startName = start.getName().getLocalPart();
String endName = end.getName().getLocalPart();
if (!startName.equals(endName)) {
throw new GraphIOException(
"Failed parsing document: Start/end tag mismatch! "
+ "StartTag:" + startName + ", EndTag: "
+ endName);
}
}
}