View Javadoc

1   /*
2    *   Copyright (C) Christian Schulte, 2005-206
3    *   All rights reserved.
4    *
5    *   Redistribution and use in source and binary forms, with or without
6    *   modification, are permitted provided that the following conditions
7    *   are met:
8    *
9    *     o Redistributions of source code must retain the above copyright
10   *       notice, this list of conditions and the following disclaimer.
11   *
12   *     o Redistributions in binary form must reproduce the above copyright
13   *       notice, this list of conditions and the following disclaimer in
14   *       the documentation and/or other materials provided with the
15   *       distribution.
16   *
17   *   THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
18   *   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
19   *   AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
20   *   THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
21   *   INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22   *   NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23   *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24   *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25   *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26   *   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27   *
28   *   $JOMC: TransformerResourceType.java 3878 2011-10-24 00:58:09Z schulte2005 $
29   *
30   */
31  package org.jomc.ant.types;
32  
33  import java.util.ArrayList;
34  import java.util.LinkedList;
35  import java.util.List;
36  import org.apache.commons.lang.builder.ToStringBuilder;
37  
38  /**
39   * Datatype describing a XSLT document resource.
40   *
41   * @author <a href="mailto:schulte2005@users.sourceforge.net">Christian Schulte</a>
42   * @version $JOMC: TransformerResourceType.java 3878 2011-10-24 00:58:09Z schulte2005 $
43   */
44  public class TransformerResourceType extends ResourceType
45  {
46  
47      /** The transformation parameter resources to apply. */
48      private List<PropertiesResourceType> transformationParameterResources;
49  
50      /** The transformation parameters to apply. */
51      private List<KeyValueType> transformationParameters;
52  
53      /** The transformation output properties to apply. */
54      private List<KeyValueType> transformationOutputProperties;
55  
56      /** Creates a new {@code TransformerResourceType}. */
57      public TransformerResourceType()
58      {
59          super();
60      }
61  
62      /**
63       * Gets the transformation parameters to apply.
64       * <p>This accessor method returns a reference to the live list, not a snapshot. Therefore any modification you make
65       * to the returned list will be present inside the object. This is why there is no {@code set} method for the
66       * transformation parameters property.</p>
67       *
68       * @return The transformation parameters to apply.
69       *
70       * @see #createTransformationParameter()
71       */
72      public final List<KeyValueType> getTransformationParameters()
73      {
74          if ( this.transformationParameters == null )
75          {
76              this.transformationParameters = new LinkedList<KeyValueType>();
77          }
78  
79          return this.transformationParameters;
80      }
81  
82      /**
83       * Creates a new {@code transformationParameter} element instance.
84       *
85       * @return A new {@code transformationParameter} element instance.
86       *
87       * @see #getTransformationParameters()
88       */
89      public KeyValueType createTransformationParameter()
90      {
91          final KeyValueType transformationParameter = new KeyValueType();
92          this.getTransformationParameters().add( transformationParameter );
93          return transformationParameter;
94      }
95  
96      /**
97       * Gets the transformation parameter resources to apply.
98       * <p>This accessor method returns a reference to the live list, not a snapshot. Therefore any modification you make
99       * to the returned list will be present inside the object. This is why there is no {@code set} method for the
100      * transformation parameter resources property.</p>
101      *
102      * @return The transformation parameter resources to apply.
103      *
104      * @see #createTransformationParameterResource()
105      */
106     public final List<PropertiesResourceType> getTransformationParameterResources()
107     {
108         if ( this.transformationParameterResources == null )
109         {
110             this.transformationParameterResources = new LinkedList<PropertiesResourceType>();
111         }
112 
113         return this.transformationParameterResources;
114     }
115 
116     /**
117      * Creates a new {@code transformationParameterResource} element instance.
118      *
119      * @return A new {@code transformationParameterResource} element instance.
120      *
121      * @see #getTransformationParameterResources()
122      */
123     public PropertiesResourceType createTransformationParameterResource()
124     {
125         final PropertiesResourceType transformationParameterResource = new PropertiesResourceType();
126         this.getTransformationParameterResources().add( transformationParameterResource );
127         return transformationParameterResource;
128     }
129 
130     /**
131      * Gets the transformation output properties to apply.
132      * <p>This accessor method returns a reference to the live list, not a snapshot. Therefore any modification you make
133      * to the returned list will be present inside the object. This is why there is no {@code set} method for the
134      * transformation output properties property.</p>
135      *
136      * @return The transformation output properties to apply.
137      *
138      * @see #createTransformationOutputProperty()
139      */
140     public final List<KeyValueType> getTransformationOutputProperties()
141     {
142         if ( this.transformationOutputProperties == null )
143         {
144             this.transformationOutputProperties = new LinkedList<KeyValueType>();
145         }
146 
147         return this.transformationOutputProperties;
148     }
149 
150     /**
151      * Creates a new {@code transformationOutputProperty} element instance.
152      *
153      * @return A new {@code transformationOutputProperty} element instance.
154      *
155      * @see #getTransformationOutputProperties()
156      */
157     public KeyValueType createTransformationOutputProperty()
158     {
159         final KeyValueType transformationOutputProperty = new KeyValueType();
160         this.getTransformationOutputProperties().add( transformationOutputProperty );
161         return transformationOutputProperty;
162     }
163 
164     /**
165      * Creates and returns a copy of this object.
166      *
167      * @return A copy of this object.
168      */
169     @Override
170     public TransformerResourceType clone()
171     {
172         final TransformerResourceType clone = (TransformerResourceType) super.clone();
173 
174         if ( this.transformationParameters != null )
175         {
176             clone.transformationParameters =
177                 new ArrayList<KeyValueType>( this.transformationParameters.size() );
178 
179             for ( KeyValueType e : this.transformationParameters )
180             {
181                 clone.transformationParameters.add( e.clone() );
182             }
183         }
184 
185         if ( this.transformationParameterResources != null )
186         {
187             clone.transformationParameterResources =
188                 new ArrayList<PropertiesResourceType>( this.transformationParameterResources.size() );
189 
190             for ( PropertiesResourceType e : this.transformationParameterResources )
191             {
192                 clone.transformationParameterResources.add( e.clone() );
193             }
194         }
195 
196         if ( this.transformationOutputProperties != null )
197         {
198             clone.transformationOutputProperties =
199                 new ArrayList<KeyValueType>( this.transformationOutputProperties.size() );
200 
201             for ( KeyValueType e : this.transformationOutputProperties )
202             {
203                 clone.transformationOutputProperties.add( e.clone() );
204             }
205         }
206 
207         return clone;
208     }
209 
210     /**
211      * Creates and returns a string representation of the object.
212      *
213      * @return A string representation of the object.
214      */
215     @Override
216     public String toString()
217     {
218         return ToStringBuilder.reflectionToString( this );
219     }
220 
221 }