src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/LayoutParser.java

changeset 74
5a9172b251dd
parent 1
9a66ca7c79fa
child 117
24a47c3062fe
equal deleted inserted replaced
73:1cf29847eb6e 74:5a9172b251dd
43 public class LayoutParser extends DefaultHandler { 43 public class LayoutParser extends DefaultHandler {
44 44
45 /** 45 /**
46 * The map of XML elements that have been parsed. 46 * The map of XML elements that have been parsed.
47 */ 47 */
48 private Map xmlElementsMap; 48 private Map<String,List<Object>> xmlElementsMap;
49 49
50 private Configuration configuration; 50 private Configuration configuration;
51 private static LayoutParser instance; 51 private static LayoutParser instance;
52 private String currentRoot; 52 private String currentRoot;
53 private boolean isParsing; 53 private boolean isParsing;
54 54
55 /** 55 /**
56 * This class is a singleton. 56 * This class is a singleton.
57 */ 57 */
58 private LayoutParser(Configuration configuration) { 58 private LayoutParser(Configuration configuration) {
59 xmlElementsMap = new HashMap(); 59 xmlElementsMap = new HashMap<String,List<Object>>();
60 this.configuration = configuration; 60 this.configuration = configuration;
61 } 61 }
62 62
63 /** 63 /**
64 * Return an instance of the BuilderXML. 64 * Return an instance of the BuilderXML.
81 public List parseXML(String root) { 81 public List parseXML(String root) {
82 if (xmlElementsMap.containsKey(root)) { 82 if (xmlElementsMap.containsKey(root)) {
83 return (List) xmlElementsMap.get(root); 83 return (List) xmlElementsMap.get(root);
84 } 84 }
85 try { 85 try {
86 List xmlElements = new ArrayList(); 86 List<Object> xmlElements = new ArrayList<Object>();
87 xmlElementsMap.put(root, xmlElements); 87 xmlElementsMap.put(root, xmlElements);
88 currentRoot = root; 88 currentRoot = root;
89 isParsing = false; 89 isParsing = false;
90 SAXParserFactory factory = SAXParserFactory.newInstance(); 90 SAXParserFactory factory = SAXParserFactory.newInstance();
91 SAXParser saxParser = factory.newSAXParser(); 91 SAXParser saxParser = factory.newSAXParser();
104 public void startElement(String namespaceURI, String sName, String qName, 104 public void startElement(String namespaceURI, String sName, String qName,
105 Attributes attrs) 105 Attributes attrs)
106 throws SAXException { 106 throws SAXException {
107 if (isParsing || qName.equals(currentRoot)) { 107 if (isParsing || qName.equals(currentRoot)) {
108 isParsing = true; 108 isParsing = true;
109 List xmlElements = (List) xmlElementsMap.get(currentRoot); 109 List<Object> xmlElements = xmlElementsMap.get(currentRoot);
110 xmlElements.add(qName); 110 xmlElements.add(qName);
111 } 111 }
112 } 112 }
113 113
114 /** 114 /**
118 throws SAXException { 118 throws SAXException {
119 if (! isParsing) { 119 if (! isParsing) {
120 isParsing = false; 120 isParsing = false;
121 return; 121 return;
122 } 122 }
123 List xmlElements = (List) xmlElementsMap.get(currentRoot); 123 List<Object> xmlElements = xmlElementsMap.get(currentRoot);
124 if (xmlElements.get(xmlElements.size()-1).equals(qName)) { 124 if (xmlElements.get(xmlElements.size()-1).equals(qName)) {
125 return; 125 return;
126 } else { 126 } else {
127 List subElements = new ArrayList(); 127 List<Object> subElements = new ArrayList<Object>();
128 int targetIndex = xmlElements.indexOf(qName); 128 int targetIndex = xmlElements.indexOf(qName);
129 int size = xmlElements.size(); 129 int size = xmlElements.size();
130 for (int i = targetIndex; i < size; i++) { 130 for (int i = targetIndex; i < size; i++) {
131 subElements.add(xmlElements.get(targetIndex)); 131 subElements.add(xmlElements.get(targetIndex));
132 xmlElements.remove(targetIndex); 132 xmlElements.remove(targetIndex);

mercurial