View Javadoc

1   /*
2   Copyright (C) 2000 - 2007 Grid Systems, S.A.
3   
4   This program is free software; you can redistribute it and/or modify
5   it under the terms of the GNU General Public License, version 2, as
6   published by the Free Software Foundation.
7   
8   This program is distributed in the hope that it will be useful,
9   but WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  GNU General Public License for more details.
12  
13  You should have received a copy of the GNU General Public License
14  along with this program; if not, write to the Free Software
15  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16  */
17  
18  package com.gridsystems.innergrid.kernel.services;
19  
20  /**
21   * Bean containing plug-in version data.
22   * Version information is important because it is used to resolve the dependencies
23   * between different plug-ins.
24   *
25   * @author Rodrigo Ruiz
26   * @version 1.0
27   */
28  public class VersionInfo implements Cloneable {
29    /** The major version number. */
30    private int major;
31  
32    /** The minor version number. */
33    private int minor;
34  
35    /** The release version number. */
36    private int release;
37  
38    /** The build number. */
39    private int build;
40  
41    /** The project code name. */
42    private String codeName;
43  
44    /**
45     * Default empty constructor.
46     */
47    public VersionInfo() { }
48  
49    /**
50     * Gets the build number.
51     * This number will usually be a date formatted as YYYYMMDD.
52     *
53     * @return the build number.
54     */
55    public int getBuild() {
56      return build;
57    }
58  
59    /**
60     * Gets the code name given to this version of the plug-in.
61     *
62     * @return the code name given to this version of the plug-in.
63     */
64    public String getCodeName() {
65      return codeName;
66    }
67  
68    /**
69     * Gets the major version number.
70     *
71     * @return the plug-in major version.
72     */
73    public int getMajor() {
74      return major;
75    }
76  
77    /**
78     * Gets the minor version number.
79     *
80     * @return The plug-in minor version.
81     */
82    public int getMinor() {
83      return minor;
84    }
85  
86    /**
87     * Gets the release number.
88     *
89     * @return The plug-in release number.
90     */
91    public int getRelease() {
92      return release;
93    }
94  
95    /**
96     * Sets the build number (for internal use only).
97     *
98     * @param build the build number
99     */
100   public void setBuild(int build) {
101     this.build = build;
102   }
103 
104   /**
105    * Sets the product code name (for internal use only).
106    *
107    * @param codeName the product code name
108    */
109   public void setCodeName(String codeName) {
110     this.codeName = codeName;
111   }
112 
113   /**
114    * Sets the major version number (for internal use only).
115    *
116    * @param major the major version number
117    */
118   public void setMajor(int major) {
119     this.major = major;
120   }
121 
122   /**
123    * Sets the minor version number (for internal use only).
124    *
125    * @param minor the minor version number
126    */
127   public void setMinor(int minor) {
128     this.minor = minor;
129   }
130 
131   /**
132    * Sets the release number (for internal use only).
133    *
134    * @param release the release value
135    */
136   public void setRelease(int release) {
137     this.release = release;
138   }
139 
140   /**
141    * {@inheritDoc}
142    */
143   //@Override
144   public Object clone() throws CloneNotSupportedException {
145     VersionInfo clone = (VersionInfo) super.clone();
146     return clone;
147   }
148 
149   /**
150    * Converts an object into a collection of characters, returning its name and
151    * essential information.
152    *
153    * @return a <code>String</code> representation of object passed along with the method
154    * @see java.lang.Object#toString()
155    */
156   //@Override
157   public String toString() {
158     StringBuffer sb = new StringBuffer();
159     sb.append(major).append('.').append(minor).append('.').append(release);
160 
161     if (build != 0) {
162       sb.append(" Build ").append(build);
163     }
164 
165     if (codeName != null) {
166       sb.append(" (").append(codeName).append(')');
167     }
168 
169     return sb.toString();
170   }
171 }