1*cf2d78d1SDamjan Jovanovic /************************************************************** 2*cf2d78d1SDamjan Jovanovic * 3*cf2d78d1SDamjan Jovanovic * Licensed to the Apache Software Foundation (ASF) under one 4*cf2d78d1SDamjan Jovanovic * or more contributor license agreements. See the NOTICE file 5*cf2d78d1SDamjan Jovanovic * distributed with this work for additional information 6*cf2d78d1SDamjan Jovanovic * regarding copyright ownership. The ASF licenses this file 7*cf2d78d1SDamjan Jovanovic * to you under the Apache License, Version 2.0 (the 8*cf2d78d1SDamjan Jovanovic * "License"); you may not use this file except in compliance 9*cf2d78d1SDamjan Jovanovic * with the License. You may obtain a copy of the License at 10*cf2d78d1SDamjan Jovanovic * 11*cf2d78d1SDamjan Jovanovic * http://www.apache.org/licenses/LICENSE-2.0 12*cf2d78d1SDamjan Jovanovic * 13*cf2d78d1SDamjan Jovanovic * Unless required by applicable law or agreed to in writing, 14*cf2d78d1SDamjan Jovanovic * software distributed under the License is distributed on an 15*cf2d78d1SDamjan Jovanovic * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*cf2d78d1SDamjan Jovanovic * KIND, either express or implied. See the License for the 17*cf2d78d1SDamjan Jovanovic * specific language governing permissions and limitations 18*cf2d78d1SDamjan Jovanovic * under the License. 19*cf2d78d1SDamjan Jovanovic * 20*cf2d78d1SDamjan Jovanovic *************************************************************/ 21*cf2d78d1SDamjan Jovanovic 22*cf2d78d1SDamjan Jovanovic /* 23*cf2d78d1SDamjan Jovanovic * To change this template, choose Tools | Templates 24*cf2d78d1SDamjan Jovanovic * and open the template in the editor. 25*cf2d78d1SDamjan Jovanovic */ 26*cf2d78d1SDamjan Jovanovic 27*cf2d78d1SDamjan Jovanovic package integration.xforms; 28*cf2d78d1SDamjan Jovanovic 29*cf2d78d1SDamjan Jovanovic import com.sun.star.xml.dom.DOMException; 30*cf2d78d1SDamjan Jovanovic import com.sun.star.xml.dom.XDocument; 31*cf2d78d1SDamjan Jovanovic import com.sun.star.xml.dom.XNode; 32*cf2d78d1SDamjan Jovanovic import com.sun.star.xml.dom.XNodeList; 33*cf2d78d1SDamjan Jovanovic import java.util.NoSuchElementException; 34*cf2d78d1SDamjan Jovanovic 35*cf2d78d1SDamjan Jovanovic /** 36*cf2d78d1SDamjan Jovanovic * 37*cf2d78d1SDamjan Jovanovic * @author fs93730 38*cf2d78d1SDamjan Jovanovic */ 39*cf2d78d1SDamjan Jovanovic public class Instance 40*cf2d78d1SDamjan Jovanovic { 41*cf2d78d1SDamjan Jovanovic private Model m_model; 42*cf2d78d1SDamjan Jovanovic private XDocument m_domInstance; 43*cf2d78d1SDamjan Jovanovic Instance( Model _model, XDocument _domInstance )44*cf2d78d1SDamjan Jovanovic protected Instance( Model _model, XDocument _domInstance ) 45*cf2d78d1SDamjan Jovanovic { 46*cf2d78d1SDamjan Jovanovic m_model = _model; 47*cf2d78d1SDamjan Jovanovic m_domInstance = _domInstance; 48*cf2d78d1SDamjan Jovanovic } 49*cf2d78d1SDamjan Jovanovic 50*cf2d78d1SDamjan Jovanovic /** creates a new element in the instance 51*cf2d78d1SDamjan Jovanovic * 52*cf2d78d1SDamjan Jovanovic * The element will be inserted immediately below the root node of the instance. 53*cf2d78d1SDamjan Jovanovic * 54*cf2d78d1SDamjan Jovanovic * @param _elementName 55*cf2d78d1SDamjan Jovanovic * the name of the to-be-created element 56*cf2d78d1SDamjan Jovanovic * @return 57*cf2d78d1SDamjan Jovanovic * the node of the newly created element 58*cf2d78d1SDamjan Jovanovic * @throws com.sun.star.xml.dom.DOMException 59*cf2d78d1SDamjan Jovanovic */ createElement( String _elementName )60*cf2d78d1SDamjan Jovanovic public XNode createElement( String _elementName ) throws DOMException 61*cf2d78d1SDamjan Jovanovic { 62*cf2d78d1SDamjan Jovanovic return createElement( m_domInstance, _elementName, null ); 63*cf2d78d1SDamjan Jovanovic } 64*cf2d78d1SDamjan Jovanovic 65*cf2d78d1SDamjan Jovanovic /** creates a new element in the instance 66*cf2d78d1SDamjan Jovanovic * 67*cf2d78d1SDamjan Jovanovic * The element will be inserted immediately below a given XNode. 68*cf2d78d1SDamjan Jovanovic * 69*cf2d78d1SDamjan Jovanovic * @param _parentElement 70*cf2d78d1SDamjan Jovanovic * the node whose child shall be created 71*cf2d78d1SDamjan Jovanovic * @param _elementName 72*cf2d78d1SDamjan Jovanovic * the name of the to-be-created element 73*cf2d78d1SDamjan Jovanovic * @return 74*cf2d78d1SDamjan Jovanovic * the node of the newly created element 75*cf2d78d1SDamjan Jovanovic * @throws com.sun.star.xml.dom.DOMException 76*cf2d78d1SDamjan Jovanovic */ createElement( XNode _parentElement, String _elementName )77*cf2d78d1SDamjan Jovanovic public XNode createElement( XNode _parentElement, String _elementName ) throws DOMException 78*cf2d78d1SDamjan Jovanovic { 79*cf2d78d1SDamjan Jovanovic return createElement( _parentElement, _elementName, null ); 80*cf2d78d1SDamjan Jovanovic } 81*cf2d78d1SDamjan Jovanovic 82*cf2d78d1SDamjan Jovanovic /** creates a new element in the instance 83*cf2d78d1SDamjan Jovanovic * 84*cf2d78d1SDamjan Jovanovic * The element will be inserted immediately below a given XNode. 85*cf2d78d1SDamjan Jovanovic * 86*cf2d78d1SDamjan Jovanovic * @param _parentElement 87*cf2d78d1SDamjan Jovanovic * the node whose child shall be created 88*cf2d78d1SDamjan Jovanovic * @param _elementName 89*cf2d78d1SDamjan Jovanovic * the name of the to-be-created element 90*cf2d78d1SDamjan Jovanovic * @param _initialNodeValue 91*cf2d78d1SDamjan Jovanovic * the initial value to set at the node. Might be null, in this case no value is set. 92*cf2d78d1SDamjan Jovanovic * @return 93*cf2d78d1SDamjan Jovanovic * the node of the newly created element 94*cf2d78d1SDamjan Jovanovic * @throws com.sun.star.xml.dom.DOMException 95*cf2d78d1SDamjan Jovanovic */ createElement( XNode _parentElement, String _elementName, String _initialNodeValue )96*cf2d78d1SDamjan Jovanovic public XNode createElement( XNode _parentElement, String _elementName, String _initialNodeValue ) throws DOMException 97*cf2d78d1SDamjan Jovanovic { 98*cf2d78d1SDamjan Jovanovic XNode node = _parentElement.appendChild( 99*cf2d78d1SDamjan Jovanovic m_model.getUIHelper().createElement( _parentElement, _elementName ) 100*cf2d78d1SDamjan Jovanovic ); 101*cf2d78d1SDamjan Jovanovic if ( _initialNodeValue != null ) 102*cf2d78d1SDamjan Jovanovic node.setNodeValue( _initialNodeValue ); 103*cf2d78d1SDamjan Jovanovic return node; 104*cf2d78d1SDamjan Jovanovic } 105*cf2d78d1SDamjan Jovanovic 106*cf2d78d1SDamjan Jovanovic /** removes a child of the root-level node from the instance 107*cf2d78d1SDamjan Jovanovic * 108*cf2d78d1SDamjan Jovanovic * @param _elementName 109*cf2d78d1SDamjan Jovanovic * the name of the to-be-removed child 110*cf2d78d1SDamjan Jovanovic */ removeNode( String _elementName )111*cf2d78d1SDamjan Jovanovic public XNode removeNode( String _elementName ) throws DOMException 112*cf2d78d1SDamjan Jovanovic { 113*cf2d78d1SDamjan Jovanovic return removeNode( m_domInstance, _elementName ); 114*cf2d78d1SDamjan Jovanovic } 115*cf2d78d1SDamjan Jovanovic 116*cf2d78d1SDamjan Jovanovic /** removes a node from the instance 117*cf2d78d1SDamjan Jovanovic * 118*cf2d78d1SDamjan Jovanovic * @param _parentElement 119*cf2d78d1SDamjan Jovanovic * the node whose child is to be removed 120*cf2d78d1SDamjan Jovanovic * @param _elementName 121*cf2d78d1SDamjan Jovanovic * the name of the to-be-removed child 122*cf2d78d1SDamjan Jovanovic */ removeNode( XNode _parentElement, String _elementName )123*cf2d78d1SDamjan Jovanovic public XNode removeNode( XNode _parentElement, String _elementName ) throws DOMException 124*cf2d78d1SDamjan Jovanovic { 125*cf2d78d1SDamjan Jovanovic XNodeList nodes = _parentElement.getChildNodes(); 126*cf2d78d1SDamjan Jovanovic for ( int i=0; i<nodes.getLength(); ++i ) 127*cf2d78d1SDamjan Jovanovic { 128*cf2d78d1SDamjan Jovanovic XNode node = nodes.item(i); 129*cf2d78d1SDamjan Jovanovic if ( node.getLocalName().equals( _elementName ) ) 130*cf2d78d1SDamjan Jovanovic { 131*cf2d78d1SDamjan Jovanovic _parentElement.removeChild( node ); 132*cf2d78d1SDamjan Jovanovic return node; 133*cf2d78d1SDamjan Jovanovic } 134*cf2d78d1SDamjan Jovanovic } 135*cf2d78d1SDamjan Jovanovic throw new NoSuchElementException(); 136*cf2d78d1SDamjan Jovanovic } 137*cf2d78d1SDamjan Jovanovic 138*cf2d78d1SDamjan Jovanovic /** creates an attribute for the root node of the instance 139*cf2d78d1SDamjan Jovanovic * 140*cf2d78d1SDamjan Jovanovic * @param _attribName 141*cf2d78d1SDamjan Jovanovic * the name of the to-be-created attribute 142*cf2d78d1SDamjan Jovanovic * @return 143*cf2d78d1SDamjan Jovanovic * the DOM node, which has already been inserted into the DOM tree 144*cf2d78d1SDamjan Jovanovic * @throws com.sun.star.xml.dom.DOMException 145*cf2d78d1SDamjan Jovanovic */ createAttribute( String _attribName )146*cf2d78d1SDamjan Jovanovic public XNode createAttribute( String _attribName ) throws DOMException 147*cf2d78d1SDamjan Jovanovic { 148*cf2d78d1SDamjan Jovanovic return createAttribute( m_domInstance, _attribName, null ); 149*cf2d78d1SDamjan Jovanovic } 150*cf2d78d1SDamjan Jovanovic 151*cf2d78d1SDamjan Jovanovic /** creates an attribute for the root node of the instance 152*cf2d78d1SDamjan Jovanovic * 153*cf2d78d1SDamjan Jovanovic * @param _attribName 154*cf2d78d1SDamjan Jovanovic * the name of the to-be-created attribute 155*cf2d78d1SDamjan Jovanovic * @param _initialNodeValue 156*cf2d78d1SDamjan Jovanovic * the initial value to set at the node. Might be null, in this case no value is set. 157*cf2d78d1SDamjan Jovanovic * @return 158*cf2d78d1SDamjan Jovanovic * the DOM node, which has already been inserted into the DOM tree 159*cf2d78d1SDamjan Jovanovic * @throws com.sun.star.xml.dom.DOMException 160*cf2d78d1SDamjan Jovanovic */ createAttribute( String _attribName, String _initialNodeValue )161*cf2d78d1SDamjan Jovanovic public XNode createAttribute( String _attribName, String _initialNodeValue ) throws DOMException 162*cf2d78d1SDamjan Jovanovic { 163*cf2d78d1SDamjan Jovanovic return createAttribute( m_domInstance, _attribName, _initialNodeValue ); 164*cf2d78d1SDamjan Jovanovic } 165*cf2d78d1SDamjan Jovanovic 166*cf2d78d1SDamjan Jovanovic /** creates an attribute for the given node 167*cf2d78d1SDamjan Jovanovic * 168*cf2d78d1SDamjan Jovanovic * @param _parentElement 169*cf2d78d1SDamjan Jovanovic * the element at which the attribute should be created 170*cf2d78d1SDamjan Jovanovic * @param _attribName 171*cf2d78d1SDamjan Jovanovic * the name of the to-be-created attribute 172*cf2d78d1SDamjan Jovanovic * @return 173*cf2d78d1SDamjan Jovanovic * the DOM node, which has already been inserted into the DOM tree 174*cf2d78d1SDamjan Jovanovic * @throws com.sun.star.xml.dom.DOMException 175*cf2d78d1SDamjan Jovanovic */ createAttribute( XNode _parentElement, String _attribName )176*cf2d78d1SDamjan Jovanovic public XNode createAttribute( XNode _parentElement, String _attribName ) throws DOMException 177*cf2d78d1SDamjan Jovanovic { 178*cf2d78d1SDamjan Jovanovic return createAttribute( _parentElement, _attribName, null ); 179*cf2d78d1SDamjan Jovanovic } 180*cf2d78d1SDamjan Jovanovic 181*cf2d78d1SDamjan Jovanovic /** creates an attribute for the given node 182*cf2d78d1SDamjan Jovanovic * 183*cf2d78d1SDamjan Jovanovic * @param _parentElement 184*cf2d78d1SDamjan Jovanovic * the element at which the attribute should be created 185*cf2d78d1SDamjan Jovanovic * @param _attribName 186*cf2d78d1SDamjan Jovanovic * the name of the to-be-created attribute 187*cf2d78d1SDamjan Jovanovic * @param _initialNodeValue 188*cf2d78d1SDamjan Jovanovic * the initial value to set at the node. Might be null, in this case no value is set. 189*cf2d78d1SDamjan Jovanovic * @return 190*cf2d78d1SDamjan Jovanovic * the DOM node, which has already been inserted into the DOM tree 191*cf2d78d1SDamjan Jovanovic * @throws com.sun.star.xml.dom.DOMException 192*cf2d78d1SDamjan Jovanovic */ createAttribute( XNode _parentElement, String _attribName, String _initialNodeValue )193*cf2d78d1SDamjan Jovanovic public XNode createAttribute( XNode _parentElement, String _attribName, String _initialNodeValue ) throws DOMException 194*cf2d78d1SDamjan Jovanovic { 195*cf2d78d1SDamjan Jovanovic XNode node = _parentElement.appendChild( 196*cf2d78d1SDamjan Jovanovic m_model.getUIHelper().createAttribute( _parentElement, _attribName ) 197*cf2d78d1SDamjan Jovanovic ); 198*cf2d78d1SDamjan Jovanovic if ( _initialNodeValue != null ) 199*cf2d78d1SDamjan Jovanovic node.setNodeValue( _initialNodeValue ); 200*cf2d78d1SDamjan Jovanovic return node; 201*cf2d78d1SDamjan Jovanovic } 202*cf2d78d1SDamjan Jovanovic } 203