001// =================== DO NOT EDIT THIS FILE ====================
002// Generated by Modello 1.8.3,
003// any modifications will be overwritten.
004// ==============================================================
005
006package org.apache.maven.model;
007
008/**
009 * 
010 *         
011 *         The <code>&lt;parent&gt;</code> element contains
012 * information required to locate the parent project from which
013 *         this project will inherit from.
014 *         <strong>Note:</strong> The children of this element are
015 * not interpolated and must be given as literal values.
016 *         
017 *       
018 * 
019 * @version $Revision$ $Date$
020 */
021@SuppressWarnings( "all" )
022public class Parent
023    implements java.io.Serializable, java.lang.Cloneable, org.apache.maven.model.InputLocationTracker
024{
025
026      //--------------------------/
027     //- Class/Member Variables -/
028    //--------------------------/
029
030    /**
031     * The group id of the parent project to inherit from.
032     */
033    private String groupId;
034
035    /**
036     * The artifact id of the parent project to inherit from.
037     */
038    private String artifactId;
039
040    /**
041     * The version of the parent project to inherit.
042     */
043    private String version;
044
045    /**
046     * 
047     *             
048     *             The relative path of the parent
049     * <code>pom.xml</code> file within the check out.
050     *             If not specified, it defaults to
051     * <code>../pom.xml</code>.
052     *             Maven looks for the parent POM first in this
053     * location on
054     *             the filesystem, then the local repository, and
055     * lastly in the remote repo.
056     *             <code>relativePath</code> allows you to select a
057     * different location,
058     *             for example when your structure is flat, or
059     * deeper without an intermediate parent POM.
060     *             However, the group ID, artifact ID and version
061     * are still required,
062     *             and must match the file in the location given or
063     * it will revert to the repository for the POM.
064     *             This feature is only for enhancing the
065     * development in a local checkout of that project.
066     *             Set the value to an empty string in case you
067     * want to disable the feature and always resolve
068     *             the parent POM from the repositories.
069     *             
070     *           
071     */
072    private String relativePath = "../pom.xml";
073
074    /**
075     * Field locations.
076     */
077    private java.util.Map<Object, InputLocation> locations;
078
079
080      //-----------/
081     //- Methods -/
082    //-----------/
083
084    /**
085     * Method clone.
086     * 
087     * @return Parent
088     */
089    public Parent clone()
090    {
091        try
092        {
093            Parent copy = (Parent) super.clone();
094
095            if ( copy.locations != null )
096            {
097                copy.locations = new java.util.LinkedHashMap( copy.locations );
098            }
099
100            return copy;
101        }
102        catch ( java.lang.Exception ex )
103        {
104            throw (java.lang.RuntimeException) new java.lang.UnsupportedOperationException( getClass().getName()
105                + " does not support clone()" ).initCause( ex );
106        }
107    } //-- Parent clone()
108
109    /**
110     * Get the artifact id of the parent project to inherit from.
111     * 
112     * @return String
113     */
114    public String getArtifactId()
115    {
116        return this.artifactId;
117    } //-- String getArtifactId()
118
119    /**
120     * Get the group id of the parent project to inherit from.
121     * 
122     * @return String
123     */
124    public String getGroupId()
125    {
126        return this.groupId;
127    } //-- String getGroupId()
128
129    /**
130     * 
131     * 
132     * @param key
133     * @return InputLocation
134     */
135    public InputLocation getLocation( Object key )
136    {
137        return ( locations != null ) ? locations.get( key ) : null;
138    } //-- InputLocation getLocation( Object )
139
140    /**
141     * Get the relative path of the parent <code>pom.xml</code>
142     * file within the check out.
143     *             If not specified, it defaults to
144     * <code>../pom.xml</code>.
145     *             Maven looks for the parent POM first in this
146     * location on
147     *             the filesystem, then the local repository, and
148     * lastly in the remote repo.
149     *             <code>relativePath</code> allows you to select a
150     * different location,
151     *             for example when your structure is flat, or
152     * deeper without an intermediate parent POM.
153     *             However, the group ID, artifact ID and version
154     * are still required,
155     *             and must match the file in the location given or
156     * it will revert to the repository for the POM.
157     *             This feature is only for enhancing the
158     * development in a local checkout of that project.
159     *             Set the value to an empty string in case you
160     * want to disable the feature and always resolve
161     *             the parent POM from the repositories.
162     * 
163     * @return String
164     */
165    public String getRelativePath()
166    {
167        return this.relativePath;
168    } //-- String getRelativePath()
169
170    /**
171     * Get the version of the parent project to inherit.
172     * 
173     * @return String
174     */
175    public String getVersion()
176    {
177        return this.version;
178    } //-- String getVersion()
179
180    /**
181     * Set the artifact id of the parent project to inherit from.
182     * 
183     * @param artifactId
184     */
185    public void setArtifactId( String artifactId )
186    {
187        this.artifactId = artifactId;
188    } //-- void setArtifactId( String )
189
190    /**
191     * Set the group id of the parent project to inherit from.
192     * 
193     * @param groupId
194     */
195    public void setGroupId( String groupId )
196    {
197        this.groupId = groupId;
198    } //-- void setGroupId( String )
199
200    /**
201     * 
202     * 
203     * @param key
204     * @param location
205     */
206    public void setLocation( Object key, InputLocation location )
207    {
208        if ( location != null )
209        {
210            if ( this.locations == null )
211            {
212                this.locations = new java.util.LinkedHashMap<Object, InputLocation>();
213            }
214            this.locations.put( key, location );
215        }
216    } //-- void setLocation( Object, InputLocation )
217
218    /**
219     * Set the relative path of the parent <code>pom.xml</code>
220     * file within the check out.
221     *             If not specified, it defaults to
222     * <code>../pom.xml</code>.
223     *             Maven looks for the parent POM first in this
224     * location on
225     *             the filesystem, then the local repository, and
226     * lastly in the remote repo.
227     *             <code>relativePath</code> allows you to select a
228     * different location,
229     *             for example when your structure is flat, or
230     * deeper without an intermediate parent POM.
231     *             However, the group ID, artifact ID and version
232     * are still required,
233     *             and must match the file in the location given or
234     * it will revert to the repository for the POM.
235     *             This feature is only for enhancing the
236     * development in a local checkout of that project.
237     *             Set the value to an empty string in case you
238     * want to disable the feature and always resolve
239     *             the parent POM from the repositories.
240     * 
241     * @param relativePath
242     */
243    public void setRelativePath( String relativePath )
244    {
245        this.relativePath = relativePath;
246    } //-- void setRelativePath( String )
247
248    /**
249     * Set the version of the parent project to inherit.
250     * 
251     * @param version
252     */
253    public void setVersion( String version )
254    {
255        this.version = version;
256    } //-- void setVersion( String )
257
258    
259            
260    /**
261     * @return the id as <code>groupId:artifactId:version</code>
262     */
263    public String getId()
264    {
265        StringBuilder id = new StringBuilder( 64 );
266
267        id.append( getGroupId() );
268        id.append( ":" );
269        id.append( getArtifactId() );
270        id.append( ":" );
271        id.append( "pom" );
272        id.append( ":" );
273        id.append( getVersion() );
274
275        return id.toString();
276    }
277
278    @Override
279    public String toString()
280    {
281        return getId();
282    }
283            
284          
285}