]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/XMLParser.java
Initial support for XML export (order of Elements is not kept)
[simantics/interop.git] / org.simantics.xml.sax.base / src / org / simantics / xml / sax / base / XMLParser.java
index 43a07c560c3e5b86f2eacc1b8540cb25c2f27ea1..992b98ab672f3cd2c39d0314368b158389dc0188 100644 (file)
@@ -28,17 +28,18 @@ import org.xml.sax.helpers.DefaultHandler;
 \r
 public class XMLParser extends DefaultHandler implements Serializable {\r
 \r
+       public static String PLUGIN_ID = "org.simantics.xml.sax.base";\r
+       \r
        private static final long serialVersionUID = 7360740940824360338L;\r
        private static final boolean debug = false;\r
        private static String XML_SCHEMA_REF = "xmlns";\r
        private ILogger logger;\r
+       private WriteGraph graph;\r
        private Resource root;\r
        private String schemaURI;\r
-       private Deque<Element> current = new ArrayDeque<Element>();\r
+       private Deque<ParserElement> current = new ArrayDeque<ParserElement>();\r
        private Map<String, XMLElementParser> parsers = new HashMap<String, XMLElementParser>();\r
-       private WriteGraph graph;\r
        private Map<Class<? extends XMLElementParser>, XMLElementParser> namedParsers = new HashMap<Class<? extends XMLElementParser>, XMLElementParser>();\r
-       \r
        private Map<String, XMLParser> subParsers = new HashMap<String, XMLParser>();\r
        \r
        public XMLParser() {\r
@@ -73,10 +74,10 @@ public class XMLParser extends DefaultHandler implements Serializable {
                subParsers.put(parser.getSchemaURI(), parser);\r
        }\r
        \r
-       private List<Element> idReferenceElements = new ArrayList<Element>();\r
-       private void loadElement(Deque<Element> parents, Element element) throws SAXException{\r
+       private List<ParserElement> idReferenceElements = new ArrayList<ParserElement>();\r
+       private void loadElement(Deque<ParserElement> parents, ParserElement element) throws SAXException{\r
                XMLElementParser parser = null;\r
-               Element parent = null;\r
+               ParserElement parent = null;\r
                if (parents.size() > 0) {\r
                        parent = parents.peek();\r
                        // check for assigned subparser\r
@@ -139,15 +140,15 @@ public class XMLParser extends DefaultHandler implements Serializable {
                }\r
        }\r
        \r
-       private Map<String, Element> idMap = new HashMap<String, Element>();\r
+       private Map<String, ParserElement> idMap = new HashMap<String, ParserElement>();\r
        \r
-       private void handleElement(Deque<Element> parents, Element element) throws SAXException{\r
+       private void handleElement(Deque<ParserElement> parents, ParserElement element) throws SAXException{\r
                XMLElementParser parser = element.getElementParser();\r
                if (parser != null) {\r
                        try {\r
                                parser.configure(graph, parents, element);\r
                                if (parents.size() > 0) {\r
-                                       Element parent = parents.peek();\r
+                                       ParserElement parent = parents.peek();\r
                                        if (parent.getElementParser() != null) {\r
                                                if (!parent.getElementParser().connectChild(graph, parent, element))\r
                                                        if (!parser.connectParent(graph, parent, element)) {\r
@@ -163,7 +164,7 @@ public class XMLParser extends DefaultHandler implements Serializable {
                                }\r
                                String id = parser.getID();\r
                                if (id != null) {\r
-                                       Element existing = idMap.put(id, element);\r
+                                       ParserElement existing = idMap.put(id, element);\r
                                        if (existing != null) {\r
                                                // report error + use id priorities to select the kept element.\r
                                                boolean useExt = existing.elementParser.idPriority() > element.elementParser.idPriority();\r
@@ -178,7 +179,7 @@ public class XMLParser extends DefaultHandler implements Serializable {
                                throw new SAXException(e);\r
                        }\r
                } else {\r
-                       Element parent = parents.peek();\r
+                       ParserElement parent = parents.peek();\r
                        if (parent != null) { \r
                                parser = parent.getElementParser();\r
                                if (parser != null && parser instanceof UnrecognizedElementParser) {\r
@@ -192,7 +193,7 @@ public class XMLParser extends DefaultHandler implements Serializable {
                }\r
        }\r
        \r
-       private void handleCharacters(Element element, String string) throws SAXException{\r
+       private void handleCharacters(ParserElement element, String string) throws SAXException{\r
                XMLElementParser parser = element.getElementParser();\r
                if (parser != null) {\r
                        try {\r
@@ -204,11 +205,11 @@ public class XMLParser extends DefaultHandler implements Serializable {
                }\r
        }\r
        \r
-       private static String PLUGIN_ID = "org.simantics.xml.sax.base";\r
+       \r
        \r
        public void done() throws SAXException{\r
                try {\r
-                       for (Element e : idReferenceElements) {\r
+                       for (ParserElement e : idReferenceElements) {\r
                                IDReferenceParser parser = (IDReferenceParser)parsers.get(e.qName);\r
                                if (!parser.connectReferences(graph, e, idMap)) {\r
                                        String err ="Could not resolve ID references for " + e.getQName() + " " + e.getUri();\r
@@ -229,7 +230,7 @@ public class XMLParser extends DefaultHandler implements Serializable {
        \r
        @Override\r
        public void startElement(String uri, String localName, String name,     Attributes attributes) throws SAXException {\r
-               Element e = new Element(uri,localName,name,attributes);\r
+               ParserElement e = new ParserElement(uri,localName,name,attributes);\r
                \r
                loadElement(current,e);\r
                current.push(e);\r
@@ -240,7 +241,7 @@ public class XMLParser extends DefaultHandler implements Serializable {
        @Override\r
        public void endElement(String uri, String localName, String name)\r
                        throws SAXException {\r
-               Element e = null;\r
+               ParserElement e = null;\r
                if (!current.isEmpty()) {\r
                        e = current.pop();\r
                }\r