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