1*db859879SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*db859879SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*db859879SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*db859879SAndrew Rist * distributed with this work for additional information 6*db859879SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*db859879SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*db859879SAndrew Rist * "License"); you may not use this file except in compliance 9*db859879SAndrew Rist * with the License. You may obtain a copy of the License at 10*db859879SAndrew Rist * 11*db859879SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*db859879SAndrew Rist * 13*db859879SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*db859879SAndrew Rist * software distributed under the License is distributed on an 15*db859879SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*db859879SAndrew Rist * KIND, either express or implied. See the License for the 17*db859879SAndrew Rist * specific language governing permissions and limitations 18*db859879SAndrew Rist * under the License. 19*db859879SAndrew Rist * 20*db859879SAndrew Rist *************************************************************/ 21*db859879SAndrew Rist 22*db859879SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir package com.sun.star.xml.security.uno; 25cdf0e10cSrcweir 26cdf0e10cSrcweir import javax.xml.parsers.DocumentBuilder; 27cdf0e10cSrcweir import javax.xml.parsers.DocumentBuilderFactory; 28cdf0e10cSrcweir import javax.xml.parsers.ParserConfigurationException; 29cdf0e10cSrcweir 30cdf0e10cSrcweir import org.w3c.dom.Document; 31cdf0e10cSrcweir import org.w3c.dom.Element; 32cdf0e10cSrcweir import org.w3c.dom.Node; 33cdf0e10cSrcweir import org.w3c.dom.Text; 34cdf0e10cSrcweir import org.w3c.dom.ProcessingInstruction; 35cdf0e10cSrcweir 36cdf0e10cSrcweir /* uno classes */ 37cdf0e10cSrcweir import com.sun.star.xml.sax.XDocumentHandler; 38cdf0e10cSrcweir import com.sun.star.xml.sax.XAttributeList; 39cdf0e10cSrcweir 40cdf0e10cSrcweir /* 41cdf0e10cSrcweir * this class is used to collect all received SAX events 42cdf0e10cSrcweir * into a DOM document. 43cdf0e10cSrcweir */ 44cdf0e10cSrcweir class SAXEventCollector implements XDocumentHandler 45cdf0e10cSrcweir { 46cdf0e10cSrcweir /* 47cdf0e10cSrcweir * the document which keeps received SAX events 48cdf0e10cSrcweir */ 49cdf0e10cSrcweir private Document m_document; 50cdf0e10cSrcweir 51cdf0e10cSrcweir /* 52cdf0e10cSrcweir * the current Element to which the next received 53cdf0e10cSrcweir * SAX event will be added. 54cdf0e10cSrcweir */ 55cdf0e10cSrcweir private Node m_currentElement; 56cdf0e10cSrcweir 57cdf0e10cSrcweir /* 58cdf0e10cSrcweir * the TestTool which receives UI feedbacks 59cdf0e10cSrcweir */ 60cdf0e10cSrcweir private TestTool m_testTool; 61cdf0e10cSrcweir 62cdf0e10cSrcweir /* 63cdf0e10cSrcweir * whether displays information on console. 64cdf0e10cSrcweir */ 65cdf0e10cSrcweir private boolean m_systemDisplay; 66cdf0e10cSrcweir SAXEventCollector(TestTool testTool)67cdf0e10cSrcweir SAXEventCollector(TestTool testTool) 68cdf0e10cSrcweir { 69cdf0e10cSrcweir this(testTool, false); 70cdf0e10cSrcweir } 71cdf0e10cSrcweir SAXEventCollector(TestTool testTool, boolean sysDis)72cdf0e10cSrcweir SAXEventCollector(TestTool testTool, boolean sysDis) 73cdf0e10cSrcweir { 74cdf0e10cSrcweir m_systemDisplay = sysDis; 75cdf0e10cSrcweir m_testTool = testTool; 76cdf0e10cSrcweir 77cdf0e10cSrcweir DocumentBuilderFactory factory = 78cdf0e10cSrcweir DocumentBuilderFactory.newInstance(); 79cdf0e10cSrcweir 80cdf0e10cSrcweir try 81cdf0e10cSrcweir { 82cdf0e10cSrcweir DocumentBuilder builder = factory.newDocumentBuilder(); 83cdf0e10cSrcweir m_document = builder.newDocument(); 84cdf0e10cSrcweir 85cdf0e10cSrcweir m_currentElement = m_document; 86cdf0e10cSrcweir } 87cdf0e10cSrcweir catch (ParserConfigurationException pce) { 88cdf0e10cSrcweir pce.printStackTrace(); 89cdf0e10cSrcweir } 90cdf0e10cSrcweir } 91cdf0e10cSrcweir getDocument()92cdf0e10cSrcweir protected Document getDocument() 93cdf0e10cSrcweir { 94cdf0e10cSrcweir return m_document; 95cdf0e10cSrcweir } 96cdf0e10cSrcweir getCurrentElement()97cdf0e10cSrcweir protected Node getCurrentElement() 98cdf0e10cSrcweir { 99cdf0e10cSrcweir return m_currentElement; 100cdf0e10cSrcweir } 101cdf0e10cSrcweir 102cdf0e10cSrcweir /* 103cdf0e10cSrcweir * XDocumentHandler 104cdf0e10cSrcweir */ startDocument()105cdf0e10cSrcweir public void startDocument () 106cdf0e10cSrcweir { 107cdf0e10cSrcweir } 108cdf0e10cSrcweir endDocument()109cdf0e10cSrcweir public void endDocument() 110cdf0e10cSrcweir { 111cdf0e10cSrcweir } 112cdf0e10cSrcweir startElement(String str, com.sun.star.xml.sax.XAttributeList xattribs)113cdf0e10cSrcweir public void startElement (String str, com.sun.star.xml.sax.XAttributeList xattribs) 114cdf0e10cSrcweir { 115cdf0e10cSrcweir Element newElement = m_document.createElement(str); 116cdf0e10cSrcweir 117cdf0e10cSrcweir if (xattribs !=null) 118cdf0e10cSrcweir { 119cdf0e10cSrcweir int length = xattribs.getLength(); 120cdf0e10cSrcweir for (short i=0; i<length; ++i) 121cdf0e10cSrcweir { 122cdf0e10cSrcweir newElement.setAttribute( 123cdf0e10cSrcweir xattribs.getNameByIndex(i), 124cdf0e10cSrcweir xattribs.getValueByIndex(i)); 125cdf0e10cSrcweir } 126cdf0e10cSrcweir } 127cdf0e10cSrcweir 128cdf0e10cSrcweir if (m_systemDisplay) 129cdf0e10cSrcweir { 130cdf0e10cSrcweir System.out.println("startElement:"+m_currentElement.toString()); 131cdf0e10cSrcweir } 132cdf0e10cSrcweir 133cdf0e10cSrcweir m_currentElement.appendChild(newElement); 134cdf0e10cSrcweir m_currentElement = newElement; 135cdf0e10cSrcweir 136cdf0e10cSrcweir if (m_testTool != null) 137cdf0e10cSrcweir { 138cdf0e10cSrcweir m_testTool.updatesUIs(); 139cdf0e10cSrcweir } 140cdf0e10cSrcweir } 141cdf0e10cSrcweir endElement(String str)142cdf0e10cSrcweir public void endElement(String str) 143cdf0e10cSrcweir { 144cdf0e10cSrcweir if (m_systemDisplay) 145cdf0e10cSrcweir { 146cdf0e10cSrcweir System.out.println("endElement:"+str+" "+m_currentElement.toString()); 147cdf0e10cSrcweir } 148cdf0e10cSrcweir 149cdf0e10cSrcweir m_currentElement = m_currentElement.getParentNode(); 150cdf0e10cSrcweir if (m_systemDisplay) 151cdf0e10cSrcweir { 152cdf0e10cSrcweir System.out.println("----> "+m_currentElement.toString()); 153cdf0e10cSrcweir } 154cdf0e10cSrcweir 155cdf0e10cSrcweir if (m_testTool != null) 156cdf0e10cSrcweir { 157cdf0e10cSrcweir m_testTool.updatesUIs(); 158cdf0e10cSrcweir } 159cdf0e10cSrcweir } 160cdf0e10cSrcweir characters(String str)161cdf0e10cSrcweir public void characters(String str) 162cdf0e10cSrcweir { 163cdf0e10cSrcweir Text newText = m_document.createTextNode(str); 164cdf0e10cSrcweir m_currentElement.appendChild(newText); 165cdf0e10cSrcweir if (m_testTool != null) 166cdf0e10cSrcweir { 167cdf0e10cSrcweir m_testTool.updatesUIs(); 168cdf0e10cSrcweir } 169cdf0e10cSrcweir } 170cdf0e10cSrcweir ignorableWhitespace(String str)171cdf0e10cSrcweir public void ignorableWhitespace(String str) 172cdf0e10cSrcweir { 173cdf0e10cSrcweir } 174cdf0e10cSrcweir processingInstruction(String aTarget, String aData)175cdf0e10cSrcweir public void processingInstruction(String aTarget, String aData) 176cdf0e10cSrcweir { 177cdf0e10cSrcweir ProcessingInstruction newPI 178cdf0e10cSrcweir = m_document.createProcessingInstruction(aTarget, aData); 179cdf0e10cSrcweir m_currentElement.appendChild(newPI); 180cdf0e10cSrcweir if (m_testTool != null) 181cdf0e10cSrcweir { 182cdf0e10cSrcweir m_testTool.updatesUIs(); 183cdf0e10cSrcweir } 184cdf0e10cSrcweir } 185cdf0e10cSrcweir setDocumentLocator(com.sun.star.xml.sax.XLocator xLocator )186cdf0e10cSrcweir public void setDocumentLocator (com.sun.star.xml.sax.XLocator xLocator ) 187cdf0e10cSrcweir throws com.sun.star.xml.sax.SAXException 188cdf0e10cSrcweir { 189cdf0e10cSrcweir } 190cdf0e10cSrcweir } 191cdf0e10cSrcweir 192