]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/XMLElementNamedChildParserBase.java
XML Schema converter
[simantics/interop.git] / org.simantics.xml.sax.base / src / org / simantics / xml / sax / base / XMLElementNamedChildParserBase.java
diff --git a/org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/XMLElementNamedChildParserBase.java b/org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/XMLElementNamedChildParserBase.java
new file mode 100644 (file)
index 0000000..c0a2172
--- /dev/null
@@ -0,0 +1,62 @@
+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