package org.simantics.xml.sax.base; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.simantics.db.WriteGraph; import org.simantics.db.exception.DatabaseException; public abstract class XMLElementNamedChildParserBase implements XMLElementNamedChildParser{ private Map> namedParsers = new HashMap>(); private Set> parsers = new HashSet>(); @Override public Class getParser(Map parsers, ParserElement element, ParserElement child) { Class parserClass = namedParsers.get(child.getLocalName()); if (parserClass != null) return parserClass; XMLElementParser parser = parsers.get(child.getLocalName()); if (parser == null) return null; parserClass = parser.getClass(); if (this.parsers.contains(parserClass)) return parserClass; for (Class c : this.parsers) if (c.isAssignableFrom(parserClass)) return parserClass; return null; } public void addParser(String name, Class parser) { namedParsers.put(name, parser); } public void addParser(Class parser) { parsers.add(parser); } // @Override // public void configureChild(WriteGraph graph, Stack parents, Element element, Element child) throws DatabaseException { // // } @Override public void configure(WriteGraph graph, ParserElement element, String string) throws DatabaseException { } @Override public String getID() { return null; } @Override public int idPriority() { return 0; } }