001    /*
002     =================== DO NOT EDIT THIS FILE ====================
003     Generated by Modello 1.4.1 on 2012-01-20 18:09:18,
004     any modifications will be overwritten.
005     ==============================================================
006     */
007    
008    package org.apache.maven.model;
009    
010    /**
011     * This element describes all of the classpath resources associated
012     * with a project
013     *         or unit tests.
014     * 
015     * @version $Revision$ $Date$
016     */
017    @SuppressWarnings( "all" )
018    public class Resource
019        extends FileSet
020        implements java.io.Serializable, java.lang.Cloneable
021    {
022    
023          //--------------------------/
024         //- Class/Member Variables -/
025        //--------------------------/
026    
027        /**
028         * 
029         *             
030         *             Describe the resource target path. The path is
031         * relative to the target/classes
032         *             directory (i.e.
033         * <code>${project.build.outputDirectory}</code>).
034         *             For example, if you want that resource to appear
035         * in a specific package
036         *             (<code>org.apache.maven.messages</code>), you
037         * must specify this
038         *             element with this value:
039         * <code>org/apache/maven/messages</code>.
040         *             This is not required if you simply put the
041         * resources in that directory
042         *             structure at the source, however.
043         *             
044         *           
045         */
046        private String targetPath;
047    
048        /**
049         * 
050         *             
051         *             Whether resources are filtered to replace tokens
052         * with parameterised values or not.
053         *             The values are taken from the
054         * <code>properties</code> element and from the
055         *             properties in the files listed in the
056         * <code>filters</code> element. Note: While the type
057         *             of this field is <code>String</code> for
058         * technical reasons, the semantic type is actually
059         *             <code>Boolean</code>. Default value is
060         * <code>false</code>.
061         *             
062         *           
063         */
064        private String filtering;
065    
066        /**
067         * 
068         *             
069         *             FOR INTERNAL USE ONLY. This is a unique
070         * identifier assigned to each
071         *             resource to allow Maven to merge changes to this
072         * resource that take
073         *             place during the execution of a plugin. This
074         * field must be managed
075         *             by the generated parser and formatter classes in
076         * order to allow it
077         *             to survive model interpolation.
078         *             
079         *           
080         */
081        private String mergeId;
082    
083    
084          //-----------/
085         //- Methods -/
086        //-----------/
087    
088        /**
089         * Method clone.
090         * 
091         * @return Resource
092         */
093        public Resource clone()
094        {
095            try
096            {
097                Resource copy = (Resource) super.clone();
098    
099                return copy;
100            }
101            catch ( java.lang.Exception ex )
102            {
103                throw (java.lang.RuntimeException) new java.lang.UnsupportedOperationException( getClass().getName()
104                    + " does not support clone()" ).initCause( ex );
105            }
106        } //-- Resource clone()
107    
108        /**
109         * Get whether resources are filtered to replace tokens with
110         * parameterised values or not.
111         *             The values are taken from the
112         * <code>properties</code> element and from the
113         *             properties in the files listed in the
114         * <code>filters</code> element. Note: While the type
115         *             of this field is <code>String</code> for
116         * technical reasons, the semantic type is actually
117         *             <code>Boolean</code>. Default value is
118         * <code>false</code>.
119         * 
120         * @return String
121         */
122        public String getFiltering()
123        {
124            return this.filtering;
125        } //-- String getFiltering()
126    
127        /**
128         * Get fOR INTERNAL USE ONLY. This is a unique identifier
129         * assigned to each
130         *             resource to allow Maven to merge changes to this
131         * resource that take
132         *             place during the execution of a plugin. This
133         * field must be managed
134         *             by the generated parser and formatter classes in
135         * order to allow it
136         *             to survive model interpolation.
137         * 
138         * @return String
139         */
140        public String getMergeId()
141        {
142            return this.mergeId;
143        } //-- String getMergeId()
144    
145        /**
146         * Get describe the resource target path. The path is relative
147         * to the target/classes
148         *             directory (i.e.
149         * <code>${project.build.outputDirectory}</code>).
150         *             For example, if you want that resource to appear
151         * in a specific package
152         *             (<code>org.apache.maven.messages</code>), you
153         * must specify this
154         *             element with this value:
155         * <code>org/apache/maven/messages</code>.
156         *             This is not required if you simply put the
157         * resources in that directory
158         *             structure at the source, however.
159         * 
160         * @return String
161         */
162        public String getTargetPath()
163        {
164            return this.targetPath;
165        } //-- String getTargetPath()
166    
167        /**
168         * Set whether resources are filtered to replace tokens with
169         * parameterised values or not.
170         *             The values are taken from the
171         * <code>properties</code> element and from the
172         *             properties in the files listed in the
173         * <code>filters</code> element. Note: While the type
174         *             of this field is <code>String</code> for
175         * technical reasons, the semantic type is actually
176         *             <code>Boolean</code>. Default value is
177         * <code>false</code>.
178         * 
179         * @param filtering
180         */
181        public void setFiltering( String filtering )
182        {
183            this.filtering = filtering;
184        } //-- void setFiltering( String )
185    
186        /**
187         * Set fOR INTERNAL USE ONLY. This is a unique identifier
188         * assigned to each
189         *             resource to allow Maven to merge changes to this
190         * resource that take
191         *             place during the execution of a plugin. This
192         * field must be managed
193         *             by the generated parser and formatter classes in
194         * order to allow it
195         *             to survive model interpolation.
196         * 
197         * @param mergeId
198         */
199        public void setMergeId( String mergeId )
200        {
201            this.mergeId = mergeId;
202        } //-- void setMergeId( String )
203    
204        /**
205         * Set describe the resource target path. The path is relative
206         * to the target/classes
207         *             directory (i.e.
208         * <code>${project.build.outputDirectory}</code>).
209         *             For example, if you want that resource to appear
210         * in a specific package
211         *             (<code>org.apache.maven.messages</code>), you
212         * must specify this
213         *             element with this value:
214         * <code>org/apache/maven/messages</code>.
215         *             This is not required if you simply put the
216         * resources in that directory
217         *             structure at the source, however.
218         * 
219         * @param targetPath
220         */
221        public void setTargetPath( String targetPath )
222        {
223            this.targetPath = targetPath;
224        } //-- void setTargetPath( String )
225    
226        
227                
228        private static int mergeIdCounter = 0;
229    
230        public void initMergeId()
231        {
232            if ( getMergeId() == null )
233            {
234                setMergeId( "resource-" + (mergeIdCounter++) );
235            }
236        }
237    
238        public boolean isFiltering()
239        {
240            return ( filtering != null ) ? Boolean.parseBoolean( filtering ) : false;
241        }
242    
243        public void setFiltering( boolean filtering )
244        {
245            this.filtering = String.valueOf( filtering );
246        }
247    
248        /**
249         * @see java.lang.Object#toString()
250         */
251        public String toString()
252        {
253            return "Resource {targetPath: " + getTargetPath() + ", filtering: " + isFiltering() + ", " + super.toString() + "}";
254        }
255                
256              
257    }