001 //
002 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-2
003 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
004 // Any modifications to this file will be lost upon recompilation of the source schema.
005 // Generated on: 2012.04.26 at 04:53:34 AM CEST
006 //
007
008
009 package org.jomc.model;
010
011 import java.util.ArrayList;
012 import java.util.Iterator;
013 import java.util.List;
014 import javax.annotation.Generated;
015 import javax.xml.bind.annotation.XmlAccessType;
016 import javax.xml.bind.annotation.XmlAccessorType;
017 import javax.xml.bind.annotation.XmlElement;
018 import javax.xml.bind.annotation.XmlType;
019
020
021 /**
022 * List of properties.
023 *
024 * <p>Java class for Properties complex type.
025 *
026 * <p>The following schema fragment specifies the expected content contained within this class.
027 *
028 * <pre>
029 * <complexType name="Properties">
030 * <complexContent>
031 * <extension base="{http://jomc.org/model}ModelObject">
032 * <sequence>
033 * <element ref="{http://jomc.org/model}property" maxOccurs="unbounded" minOccurs="0"/>
034 * <element name="reference" type="{http://jomc.org/model}PropertyReference" maxOccurs="unbounded" minOccurs="0"/>
035 * </sequence>
036 * </extension>
037 * </complexContent>
038 * </complexType>
039 * </pre>
040 *
041 *
042 */
043 @XmlAccessorType(XmlAccessType.FIELD)
044 @XmlType(name = "Properties", namespace = "http://jomc.org/model", propOrder = {
045 "property",
046 "reference"
047 })
048 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
049 public class Properties
050 extends ModelObject
051 implements Cloneable
052 {
053
054 @XmlElement(namespace = "http://jomc.org/model")
055 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
056 protected List<Property> property;
057 @XmlElement(namespace = "http://jomc.org/model")
058 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
059 protected List<PropertyReference> reference;
060
061 /**
062 * Creates a new {@code Properties} instance.
063 *
064 */
065 public Properties() {
066 // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
067 super();
068 }
069
070 /**
071 * Creates a new {@code Properties} instance by deeply copying a given {@code Properties} instance.
072 *
073 *
074 * @param o
075 * The instance to copy.
076 * @throws NullPointerException
077 * if {@code o} is {@code null}.
078 */
079 public Properties(final Properties o) {
080 // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
081 super(o);
082 if (o == null) {
083 throw new NullPointerException("Cannot create a copy of 'Properties' from 'null'.");
084 }
085 // 'Property' collection.
086 if (o.property!= null) {
087 copyProperty(o.getProperty(), this.getProperty());
088 }
089 // 'Reference' collection.
090 if (o.reference!= null) {
091 copyReference(o.getReference(), this.getReference());
092 }
093 }
094
095 /**
096 * Gets the value of the property property.
097 *
098 * <p>
099 * This accessor method returns a reference to the live list,
100 * not a snapshot. Therefore any modification you make to the
101 * returned list will be present inside the JAXB object.
102 * This is why there is not a <CODE>set</CODE> method for the property property.
103 *
104 * <p>
105 * For example, to add a new item, do as follows:
106 * <pre>
107 * getProperty().add(newItem);
108 * </pre>
109 *
110 *
111 * <p>
112 * Objects of the following type(s) are allowed in the list
113 * {@link Property }
114 *
115 *
116 */
117 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
118 public List<Property> getProperty() {
119 if (property == null) {
120 property = new ArrayList<Property>();
121 }
122 return this.property;
123 }
124
125 /**
126 * Gets the value of the reference property.
127 *
128 * <p>
129 * This accessor method returns a reference to the live list,
130 * not a snapshot. Therefore any modification you make to the
131 * returned list will be present inside the JAXB object.
132 * This is why there is not a <CODE>set</CODE> method for the reference property.
133 *
134 * <p>
135 * For example, to add a new item, do as follows:
136 * <pre>
137 * getReference().add(newItem);
138 * </pre>
139 *
140 *
141 * <p>
142 * Objects of the following type(s) are allowed in the list
143 * {@link PropertyReference }
144 *
145 *
146 */
147 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
148 public List<PropertyReference> getReference() {
149 if (reference == null) {
150 reference = new ArrayList<PropertyReference>();
151 }
152 return this.reference;
153 }
154
155 /**
156 * Copies all values of property {@code Property} deeply.
157 *
158 * @param source
159 * The source to copy from.
160 * @param target
161 * The target to copy {@code source} to.
162 * @throws NullPointerException
163 * if {@code target} is {@code null}.
164 */
165 @SuppressWarnings("unchecked")
166 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
167 private static void copyProperty(final List<Property> source, final List<Property> target) {
168 // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
169 if ((source!= null)&&(!source.isEmpty())) {
170 for (final Iterator<?> it = source.iterator(); it.hasNext(); ) {
171 final Object next = it.next();
172 if (next instanceof Property) {
173 // CClassInfo: org.jomc.model.Property
174 target.add(((Property) next).clone());
175 continue;
176 }
177 // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
178 throw new AssertionError((("Unexpected instance '"+ next)+"' for property 'Property' of class 'org.jomc.model.Properties'."));
179 }
180 }
181 }
182
183 /**
184 * Copies all values of property {@code Reference} deeply.
185 *
186 * @param source
187 * The source to copy from.
188 * @param target
189 * The target to copy {@code source} to.
190 * @throws NullPointerException
191 * if {@code target} is {@code null}.
192 */
193 @SuppressWarnings("unchecked")
194 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
195 private static void copyReference(final List<PropertyReference> source, final List<PropertyReference> target) {
196 // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
197 if ((source!= null)&&(!source.isEmpty())) {
198 for (final Iterator<?> it = source.iterator(); it.hasNext(); ) {
199 final Object next = it.next();
200 if (next instanceof PropertyReference) {
201 // CClassInfo: org.jomc.model.PropertyReference
202 target.add(((PropertyReference) next).clone());
203 continue;
204 }
205 // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
206 throw new AssertionError((("Unexpected instance '"+ next)+"' for property 'Reference' of class 'org.jomc.model.Properties'."));
207 }
208 }
209 }
210
211 /**
212 * Creates and returns a deep copy of this object.
213 *
214 *
215 * @return
216 * A deep copy of this object.
217 */
218 @Override
219 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
220 public Properties clone() {
221 {
222 // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
223 final Properties clone = ((Properties) super.clone());
224 // 'Property' collection.
225 if (this.property!= null) {
226 clone.property = null;
227 copyProperty(this.getProperty(), clone.getProperty());
228 }
229 // 'Reference' collection.
230 if (this.reference!= null) {
231 clone.reference = null;
232 copyReference(this.getReference(), clone.getReference());
233 }
234 return clone;
235 }
236 }
237
238 /**
239 * Gets a property for a given name from the list of properties.
240 *
241 * @param name The name of the property to return.
242 *
243 * @return The first matching property or {@code null}, if no such property is found.
244 *
245 * @throws NullPointerException if {@code name} is {@code null}.
246 *
247 * @see #getProperty()
248 * @see Property#getName()
249 */
250 public Property getProperty( final String name )
251 {
252 if ( name == null )
253 {
254 throw new NullPointerException( "name" );
255 }
256
257 for ( int i = 0, s0 = this.getProperty().size(); i < s0; i++ )
258 {
259 final Property p = this.getProperty().get( i );
260
261 if ( name.equals( p.getName() ) )
262 {
263 return p;
264 }
265 }
266
267 return null;
268 }
269
270 /**
271 * Gets a property reference for a given name from the list of references.
272 *
273 * @param name The name of the property reference to return.
274 *
275 * @return The first matching property reference or {@code null}, if no such reference is found.
276 *
277 * @throws NullPointerException if {@code name} is {@code null}.
278 *
279 * @see #getReference()
280 * @see PropertyReference#getName()
281 */
282 public PropertyReference getReference( final String name )
283 {
284 if ( name == null )
285 {
286 throw new NullPointerException( "name" );
287 }
288
289 for ( int i = 0, s0 = this.getReference().size(); i < s0; i++ )
290 {
291 final PropertyReference r = this.getReference().get( i );
292
293 if ( name.equals( r.getName() ) )
294 {
295 return r;
296 }
297 }
298
299 return null;
300 }
301
302 /**
303 * Gets a list of properties of a given type.
304 *
305 * @param type The type of the properties to return or {@code null}, to return properties of the default type.
306 *
307 * @return An unmodifiable list holding all properties of {@code type}.
308 *
309 * @see #getProperty()
310 * @see Property#getType()
311 *
312 * @since 1.2
313 */
314 public List<Property> getPropertiesByType( final String type )
315 {
316 final List<Property> list = new ArrayList<Property>( this.getProperty().size() );
317
318 for ( int i = 0, s0 = this.getProperty().size(); i < s0; i++ )
319 {
320 final Property p = this.getProperty().get( i );
321
322 if ( type == null ? p.getType() == null : type.equals( p.getType() ) )
323 {
324 list.add( p );
325 }
326 }
327
328 return java.util.Collections.unmodifiableList( list );
329 }
330
331 }