xref: /trunk/main/forms/qa/integration/xforms/Instance.java (revision 3309286857f19787ae62bd793a98b5af4edd2ad3)
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