]> gerrit.simantics Code Review - simantics/interop.git/blob - org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/XMLElementNamedChildParserBase.java
c0a217275e31934cea3db77fda5629d0c3ba3159
[simantics/interop.git] / org.simantics.xml.sax.base / src / org / simantics / xml / sax / base / XMLElementNamedChildParserBase.java
1 package org.simantics.xml.sax.base;\r
2 \r
3 import java.util.HashMap;\r
4 import java.util.HashSet;\r
5 import java.util.Map;\r
6 import java.util.Set;\r
7 \r
8 import org.simantics.db.WriteGraph;\r
9 import org.simantics.db.exception.DatabaseException;\r
10 \r
11 public abstract class XMLElementNamedChildParserBase implements XMLElementNamedChildParser{\r
12         \r
13         private Map<String,Class<? extends XMLElementParser>> namedParsers = new HashMap<String, Class<? extends XMLElementParser>>();\r
14         private Set<Class<? extends XMLElementParser>> parsers = new HashSet<Class<? extends XMLElementParser>>();\r
15         \r
16         @Override\r
17         public Class<? extends XMLElementParser> getParser(Map<String, XMLElementParser> parsers, Element element, Element child) {\r
18                 Class<? extends XMLElementParser> parserClass =  namedParsers.get(child.qName);\r
19                 if (parserClass != null)\r
20                         return parserClass;\r
21                 XMLElementParser parser = parsers.get(child.qName);\r
22                 if (parser == null)\r
23                         return null;\r
24                 parserClass = parser.getClass();\r
25                 if (this.parsers.contains(parserClass))\r
26                         return parserClass;\r
27                 for (Class<?> c : this.parsers)\r
28                         if (c.isAssignableFrom(parserClass))\r
29                                 return parserClass;\r
30                 return null;\r
31         }\r
32         \r
33         public void addParser(String name, Class<? extends XMLElementParser> parser) {\r
34                 namedParsers.put(name, parser);\r
35         }\r
36         \r
37         public void addParser(Class<? extends XMLElementParser> parser) {\r
38                 parsers.add(parser);\r
39         }\r
40         \r
41 //      @Override\r
42 //      public void configureChild(WriteGraph graph, Stack<Element> parents, Element element, Element child) throws DatabaseException {\r
43 //\r
44 //      }\r
45         \r
46         @Override\r
47         public void configure(WriteGraph graph, Element element, String string) throws DatabaseException {\r
48                 \r
49         }\r
50         \r
51         @Override\r
52         public String getID() {\r
53                 return null;\r
54         }\r
55         \r
56         @Override\r
57         public int idPriority() {\r
58                 return 0;\r
59         }\r
60         \r
61 \r
62 }\r