1 /*
2 * $Id$
3 */
4
5 package org.apache.maven.model;
6
7 //---------------------------------/
8 //- Imported classes and packages -/
9 //---------------------------------/
10
11 import java.util.Date;
12
13 /**
14 * Describes a build extension to utilise.
15 *
16 * @version $Revision$ $Date$
17 */
18 public class Extension implements java.io.Serializable {
19
20
21 //--------------------------/
22 //- Class/Member Variables -/
23 //--------------------------/
24
25 /**
26 * The group ID of the extension's artifact.
27 */
28 private String groupId;
29
30 /**
31 * The artifact ID of the extension.
32 */
33 private String artifactId;
34
35 /**
36 * The version of the extension.
37 */
38 private String version;
39
40
41 //-----------/
42 //- Methods -/
43 //-----------/
44
45 /**
46 * Get the artifact ID of the extension.
47 *
48 * @return String
49 */
50 public String getArtifactId()
51 {
52 return this.artifactId;
53 } //-- String getArtifactId()
54
55 /**
56 * Get the group ID of the extension's artifact.
57 *
58 * @return String
59 */
60 public String getGroupId()
61 {
62 return this.groupId;
63 } //-- String getGroupId()
64
65 /**
66 * Get the version of the extension.
67 *
68 * @return String
69 */
70 public String getVersion()
71 {
72 return this.version;
73 } //-- String getVersion()
74
75 /**
76 * Set the artifact ID of the extension.
77 *
78 * @param artifactId
79 */
80 public void setArtifactId( String artifactId )
81 {
82 this.artifactId = artifactId;
83 } //-- void setArtifactId( String )
84
85 /**
86 * Set the group ID of the extension's artifact.
87 *
88 * @param groupId
89 */
90 public void setGroupId( String groupId )
91 {
92 this.groupId = groupId;
93 } //-- void setGroupId( String )
94
95 /**
96 * Set the version of the extension.
97 *
98 * @param version
99 */
100 public void setVersion( String version )
101 {
102 this.version = version;
103 } //-- void setVersion( String )
104
105
106
107 /**
108 * Gets the key of the extension. The key is used to merge extensions inherited from a parent with the extensions
109 * of the current project.
110 *
111 * @return The key of the extension, i.e. <code>groupId:artifactId</code>.
112 */
113 public String getKey()
114 {
115 return new StringBuffer( 128 ).append( getGroupId() ).append( ':' ).append( getArtifactId() ).toString();
116 }
117
118 /**
119 * @see java.lang.Object#equals(java.lang.Object)
120 */
121 public boolean equals( Object o )
122 {
123 if ( this == o )
124 {
125 return true;
126 }
127
128 if ( !( o instanceof Extension ) )
129 {
130 return false;
131 }
132
133 Extension e = (Extension) o;
134
135 if ( !e.getArtifactId().equals( getArtifactId() ) )
136 {
137 return false;
138 }
139 else if ( !e.getGroupId().equals( getGroupId() ) )
140 {
141 return false;
142 }
143 else if ( e.getVersion() != null ? !e.getVersion().equals( getVersion() ) : getVersion() != null )
144 {
145 return false;
146 }
147 return true;
148 }
149
150 /**
151 * @see java.lang.Object#hashCode()
152 */
153 public int hashCode()
154 {
155 int result = 17;
156 result = 37 * result + ( getArtifactId() != null ? getArtifactId().hashCode() : 0 );
157 result = 37 * result + ( getGroupId() != null ? getGroupId().hashCode() : 0 );
158 result = 37 * result + ( getVersion() != null ? getVersion().hashCode() : 0 );
159 return result;
160 }
161
162
163 private String modelEncoding = "UTF-8";
164
165 /**
166 * Set an encoding used for reading/writing the model.
167 *
168 * @param modelEncoding the encoding used when reading/writing the model.
169 */
170 public void setModelEncoding( String modelEncoding )
171 {
172 this.modelEncoding = modelEncoding;
173 }
174
175 /**
176 * @return the current encoding used when reading/writing this model.
177 */
178 public String getModelEncoding()
179 {
180 return modelEncoding;
181 }
182 }