1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * you may not use this file except in compliance with the License.
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * You may obtain a copy of the License at
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License.
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
17c46a2ea848e7a62cd5ee24216e446ad7b9ba7629Piotr Jastrzebskipackage org.apache.harmony.tests.javax.xml.parsers;
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.File;
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.FileInputStream;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.InputStream;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashMap;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.Attributes;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.HandlerBase;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.InputSource;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.Locator;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXParseException;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.helpers.DefaultHandler;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
33f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Support for SAXParserTest. Shares the element keys used in the golden files.
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Compares the result of the parser with golden data.
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Contains the handler classes used to track the output of the parser.
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectclass SAXParserTestSupport {
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final char SEPARATOR_ELEMENT = '^';
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final char SEPARATOR_STRING = '$';
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final char SEPARATOR_DATA = '#';
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String XML_WF = "/wf/";
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String XML_NWF = "/nwf/";
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String XML_WF_OUT_DH = "/out_dh/";
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String XML_WF_OUT_HB = "/out_hb/";
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String XML_SYSTEM_ID = "." + "/systemid/";
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String KEY_IS_START_DOC = "isEndDocument";
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String KEY_IS_END_DOC = "isStartDocument";
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String KEY_TEXT = "text";
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String KEY_ERROR = "error";
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String KEY_FATAL_ERROR = "fatalError";
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String KEY_WARNING = "warning";
57ab3721103266c7c9f58d5a9d32521a00a2c478d7Elliott Hughes    public static final String KEY_END_ELEMENT = "endElement";
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String KEY_END_PREFIX_MAPPING = "endPrefixMapping";
59f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes    public static final String KEY_IGNORABLE_WHITE_SPACE =
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        "ignorableWhitespace";
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String KEY_NOTATION_DECL = "notationDecl";
62f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes    public static final String KEY_PROCESSING_INSTRUCTION =
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        "processingInstruction";
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String KEY_RESOLVE_ENTITY = "resolveEntity";
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String KEY_DOCUMENT_LOCATORS = "documentLocators";
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String KEY_SKIPPED_ENTITY = "skippedEntity";
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String KEY_START_ELEMENT = "startElement";
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String KEY_START_PREFIX_MAPPING = "startPrefixMapping";
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final String KEY_UNPARSED_ENTITY_DECL = "unparsedEntityDecl";
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
71f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes    static String [] KEYS = {KEY_IS_START_DOC, KEY_IS_END_DOC, KEY_TEXT,
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            KEY_ERROR, KEY_FATAL_ERROR, KEY_WARNING, KEY_END_ELEMENT,
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            KEY_END_PREFIX_MAPPING, KEY_PROCESSING_INSTRUCTION,
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            KEY_SKIPPED_ENTITY, KEY_START_ELEMENT,
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            KEY_START_PREFIX_MAPPING};
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    static {
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String tmp = System.getProperty("java.io.tmpdir", ".");
79f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new File(tmp).mkdirs();
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new File(tmp, XML_WF).mkdirs();
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new File(tmp, XML_NWF).mkdirs();
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new File(tmp, XML_WF_OUT_DH).mkdirs();
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new File(tmp, XML_WF_OUT_HB).mkdirs();
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
86f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Initialize the SAXParserTest reference by filling in the data from the
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * file passed to the method. This will be the reference to compare
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * against with the output of the parser.
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public HashMap<String, String> readFile(String fileName) {
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        HashMap<String, String> storage = new HashMap<String, String>();
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            InputStream is = new FileInputStream(fileName);
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            int c = is.read();
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            StringBuffer str = new StringBuffer();
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            int i = 0;
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            while(c != -1) {
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                if((char)c == SEPARATOR_DATA) {
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                  //  if(str.length() > 0) {
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        if(i < KEYS.length) {
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                            storage.put(KEYS[i], str.toString());
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        //    System.out.println(str.toString());
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                            str.setLength(0);
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                            i++;
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        }
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                  //  }
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                } else {
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    str.append((char)c);
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                try {
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    c = is.read();
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                } catch (Exception e) {
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    c = -1;
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                is.close();
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (IOException e) {
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch(IOException ioe) {
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            System.out.println("IOException during processing the file: "
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    + fileName);
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return storage;
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Compares the content of two HashMaps. One map should be the reference
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * containing the correct string for each xml document element and the other
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * should contain the elements filled with output from the parser.
137f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param original the reference
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param result the result of the parser
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return true if they're equal.
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
142f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes    public static boolean equalsMaps(HashMap<String, String> original,
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            HashMap<String, String> result) {
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if(original == null && result == null) {
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return true;
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } else {
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if(original.size() != result.size()) return false;
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for(int i = 0; i < KEYS.length; i++) {
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                if(!original.get(KEYS[i]).equals(result.get(KEYS[i]))) {
152f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes                    System.out.println("for "+KEYS[i]+": original:" +
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                            original.get(KEYS[i]));
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    System.out.println();
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    System.out.println("  result:" + result.get(KEYS[i]));
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    System.out.println();
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    return false;
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return true;
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    static class MyDefaultHandler extends DefaultHandler {
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_isEndDocument = new StringBuffer();
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_isStartDocument = new StringBuffer();
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_text = new StringBuffer();
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_error = new StringBuffer();
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_fatalError = new StringBuffer();
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_warning = new StringBuffer();
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_endElement = new StringBuffer();
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_endPrefixMapping = new StringBuffer();
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_processingInstruction = new StringBuffer();
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_skippedEntity = new StringBuffer();
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_startElement = new StringBuffer();
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_startPrefixMapping = new StringBuffer();
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public HashMap<String, String> createData() {
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            HashMap<String, String> hm = new HashMap<String, String>();
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_IS_END_DOC, data_isEndDocument.toString());
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_IS_START_DOC, data_isStartDocument.toString());
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_TEXT, data_text.toString());
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_ERROR, data_error.toString());
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_FATAL_ERROR, data_fatalError.toString());
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_WARNING, data_warning.toString());
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_END_ELEMENT, data_endElement.toString());
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_END_PREFIX_MAPPING, data_endPrefixMapping.toString());
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_PROCESSING_INSTRUCTION,
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_processingInstruction.toString());
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_SKIPPED_ENTITY, data_skippedEntity.toString());
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_START_ELEMENT, data_startElement.toString());
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_START_PREFIX_MAPPING,
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_startPrefixMapping.toString());
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return hm;
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void printMap() {
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            System.out.print(data_isStartDocument.toString() + SEPARATOR_DATA +
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_isEndDocument.toString() + SEPARATOR_DATA +
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_text.toString() + SEPARATOR_DATA +
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_error.toString()+ SEPARATOR_DATA +
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_fatalError.toString()+ SEPARATOR_DATA +
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_warning.toString()+ SEPARATOR_DATA +
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_endElement.toString() + SEPARATOR_DATA+
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_endPrefixMapping.toString()+ SEPARATOR_DATA +
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_processingInstruction.toString() + SEPARATOR_DATA +
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_skippedEntity.toString() +  SEPARATOR_DATA +
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_startElement.toString() + SEPARATOR_DATA +
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_startPrefixMapping.toString()+ SEPARATOR_DATA);
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void characters(char[] ch, int start, int length) {
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String str = new String(ch, start, length);
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_text.append(str);
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // different sax parsers are allowed to handle chunking differently,
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // therefore we cannot rely on identical chunks being delivered.
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //data_text.append(ParsingSupport.SEPARATOR_ELEMENT);
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void endDocument() {
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_isEndDocument.append(true);
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_isEndDocument.append(SEPARATOR_ELEMENT);
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void endElement(String uri, String localName, String qName) {
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            StringBuffer sb = new StringBuffer();
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append(uri);
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append(SEPARATOR_STRING);
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append(localName);
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append(SEPARATOR_STRING);
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append(qName);
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_endElement.append(sb);
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_endElement.append(SEPARATOR_ELEMENT);
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void endPrefixMapping(String prefix) {
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_endPrefixMapping.append(prefix);
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_endPrefixMapping.append(SEPARATOR_ELEMENT);
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void error(SAXParseException e) {
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_error.append(e);
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_error.append(SEPARATOR_ELEMENT);
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void fatalError(SAXParseException e) {
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_fatalError.append(e);
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_fatalError.append(SEPARATOR_ELEMENT);
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void ignorableWhitespace(char[] ch, int start, int length) {
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            /*    String s = new String(ch, start, length);
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ignorableWhitespace.append(s);
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ignorableWhitespace.append(ParsingSupport.SEPARATOR_ELEMENT);*/
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void notationDecl(String name, String publicId,
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                String systemId) {
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            /* data_notationDecl.append(name + ParsingSupport.SEPARATOR_STRING +
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                              publicId + ParsingSupport.SEPARATOR_STRING +
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                              systemId + ParsingSupport.SEPARATOR_STRING);
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_notationDecl.append(ParsingSupport.SEPARATOR_ELEMENT);*/
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void processingInstruction(String target, String data) {
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_processingInstruction.append(target + SEPARATOR_STRING + data);
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_processingInstruction.append(SEPARATOR_ELEMENT);
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public InputSource    resolveEntity(String publicId, String systemId) {
283f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes            // data_resolveEntity.append(publicId +
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //            ParsingSupport.SEPARATOR_STRING + systemId);
285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // data_resolveEntity.append(ParsingSupport.SEPARATOR_ELEMENT);
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void setDocumentLocator(Locator locator) {
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //       data_documentLocators.append(locator);
292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // data_documentLocators.append(ParsingSupport.SEPARATOR_ELEMENT);
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void skippedEntity(String name) {
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_skippedEntity.append(name);
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_skippedEntity.append(SEPARATOR_ELEMENT);
299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void startDocument() {
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_isStartDocument.append(true);
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_isStartDocument.append(SEPARATOR_ELEMENT);
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void startElement(String uri, String localName, String qName,
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Attributes attributes) {
310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_startElement.append(uri);
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_startElement.append(SEPARATOR_STRING);
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_startElement.append(localName);
313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_startElement.append(SEPARATOR_STRING);
314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_startElement.append(qName);
315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for(int i = 0; i < attributes.getLength(); i ++)
317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                data_startElement.append(
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        SEPARATOR_STRING +attributes.getQName(i) +
319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        SEPARATOR_STRING + attributes.getValue(i));
320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_isStartDocument.append(SEPARATOR_ELEMENT);
322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void startPrefixMapping(String prefix, String uri) {
326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_startPrefixMapping.append(prefix + SEPARATOR_STRING + uri);
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void unparsedEntityDecl(String name, String publicId,
331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                String systemId, String notationName) {
332f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes            // data_unparsedEntityDecl.append(name
333f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes            //     + ParsingSupport.SEPARATOR_STRING + publicId
334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //     + ParsingSupport.SEPARATOR_STRING
335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //     + systemId + ParsingSupport.SEPARATOR_STRING + notationName);
336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void warning(SAXParseException e) {
340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_warning.append(e);
341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @SuppressWarnings("deprecation")
345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    static class MyHandler extends HandlerBase {
346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_isEndDocument = new StringBuffer();
348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_isStartDocument = new StringBuffer();
349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_text = new StringBuffer();
350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_error = new StringBuffer();
351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_fatalError = new StringBuffer();
352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_warning = new StringBuffer();
353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_endElement = new StringBuffer();
354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_endPrefixMapping = new StringBuffer();
355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_processingInstruction = new StringBuffer();
356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_skippedEntity = new StringBuffer();
357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_startElement = new StringBuffer();
358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public StringBuffer data_startPrefixMapping = new StringBuffer();
359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void printMap() {
361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            System.out.print(data_isStartDocument.toString() + SEPARATOR_DATA +
362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_isEndDocument.toString() + SEPARATOR_DATA +
363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_text.toString() + SEPARATOR_DATA +
364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_error.toString()+ SEPARATOR_DATA +
365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_fatalError.toString()+ SEPARATOR_DATA +
366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_warning.toString()+ SEPARATOR_DATA +
367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_endElement.toString() + SEPARATOR_DATA+
368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_endPrefixMapping.toString()+ SEPARATOR_DATA +
369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_processingInstruction.toString() + SEPARATOR_DATA +
370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_skippedEntity.toString() +  SEPARATOR_DATA +
371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_startElement.toString() + SEPARATOR_DATA +
372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_startPrefixMapping.toString()+ SEPARATOR_DATA);
373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public HashMap<String, String> createData() {
376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            HashMap<String, String> hm = new HashMap<String, String>();
377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_IS_END_DOC, data_isEndDocument.toString());
378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_IS_START_DOC, data_isStartDocument.toString());
379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_TEXT, data_text.toString());
380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_ERROR, data_error.toString());
381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_FATAL_ERROR, data_fatalError.toString());
382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_WARNING, data_warning.toString());
383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_END_ELEMENT, data_endElement.toString());
384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_END_PREFIX_MAPPING, data_endPrefixMapping.toString());
385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_PROCESSING_INSTRUCTION,
386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_processingInstruction.toString());
387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_SKIPPED_ENTITY, data_skippedEntity.toString());
388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_START_ELEMENT, data_startElement.toString());
389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(KEY_START_PREFIX_MAPPING,
390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    data_startPrefixMapping.toString());
391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return hm;
392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void characters(char[] ch, int start, int length) {
396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String str = new String(ch, start, length);
397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_text.append(str);
398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // different sax parsers are allowed to handle chunking differently,
399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // therefore we cannot rely on identical chunks being delivered.
400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //data_text.append(ParsingSupport.SEPARATOR_ELEMENT);
401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void    endDocument() {
405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_isEndDocument.append(true);
406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_isEndDocument.append(SEPARATOR_ELEMENT);
407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void endElement(String uri, String localName, String qName) {
410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            StringBuffer sb = new StringBuffer();
411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append(uri);
412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append(SEPARATOR_STRING);
413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append(localName);
414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append(SEPARATOR_STRING);
415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append(qName);
416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_endElement.append(sb);
417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_endElement.append(SEPARATOR_ELEMENT);
418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void error(SAXParseException e) {
422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_error.append(e);
423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_error.append(SEPARATOR_ELEMENT);
424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void fatalError(SAXParseException e) {
428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_fatalError.append(e);
429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_fatalError.append(SEPARATOR_ELEMENT);
430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void ignorableWhitespace(char[] ch, int start, int length) {
434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
438f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        public void notationDecl(String name, String publicId,
439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                String systemId) {
440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void processingInstruction(String target, String data) {
445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_processingInstruction.append(target + SEPARATOR_STRING + data);
446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_processingInstruction.append(SEPARATOR_ELEMENT);
447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public InputSource    resolveEntity(String publicId, String systemId) {
451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void setDocumentLocator(Locator locator) {
456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void startDocument() {
461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_isStartDocument.append(true);
462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_isStartDocument.append(SEPARATOR_ELEMENT);
463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void startElement(String uri, String localName, String qName,
466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Attributes attributes) {
467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_startElement.append(uri);
468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_startElement.append(SEPARATOR_STRING);
469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_startElement.append(localName);
470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_startElement.append(SEPARATOR_STRING);
471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_startElement.append(qName);
472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for(int i = 0; i < attributes.getLength(); i ++)
474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                data_startElement.append(SEPARATOR_STRING
475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        + attributes.getQName(i) +
476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        SEPARATOR_STRING + attributes.getValue(i));
477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_isStartDocument.append(SEPARATOR_ELEMENT);
479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void unparsedEntityDecl(String name, String publicId,
483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                String systemId, String notationName) {
484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void warning(SAXParseException e) {
489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data_warning.append(e);
490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
493