001: //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/trunk/src/org/deegree/framework/version/Version.java $
002: /*---------------- FILE HEADER ------------------------------------------
003:
004: This file is part of deegree.
005: Copyright (C) 2001-2008 by:
006: EXSE, Department of Geography, University of Bonn
007: http://www.giub.uni-bonn.de/deegree/
008: lat/lon GmbH
009: http://www.lat-lon.de
010:
011: This library is free software; you can redistribute it and/or
012: modify it under the terms of the GNU Lesser General Public
013: License as published by the Free Software Foundation; either
014: version 2.1 of the License, or (at your option) any later version.
015:
016: This library is distributed in the hope that it will be useful,
017: but WITHOUT ANY WARRANTY; without even the implied warranty of
018: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
019: Lesser General Public License for more details.
020:
021: You should have received a copy of the GNU Lesser General Public
022: License along with this library; if not, write to the Free Software
023: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
024:
025: Contact:
026:
027: Andreas Poth
028: lat/lon GmbH
029: Aennchenstr. 19
030: 53115 Bonn
031: Germany
032: E-Mail: poth@lat-lon.de
033:
034: Prof. Dr. Klaus Greve
035: Department of Geography
036: University of Bonn
037: Meckenheimer Allee 166
038: 53115 Bonn
039: Germany
040: E-Mail: greve@giub.uni-bonn.de
041:
042:
043: ---------------------------------------------------------------------------*/
044: package org.deegree.framework.version;
045:
046: import java.util.Properties;
047:
048: import org.deegree.framework.util.BootLogger;
049:
050: /**
051: * The version number is created by 3 parts, the first represents the version number, the second a
052: * essential update of a release, the third the build number. The version number could be numeric or
053: * alphanumeric, e.g. 'Foo2' or '2.0'.<BR>
054: * e.g.:<BR>
055: * 2.0alpha.142 - version no. 2, release 0 alpha, build 142<BR>
056: * 2.0beta.178 - version no. 2, release 0 beta, build 178 <BR>
057: * 2.0.198 - version no. 2, release 0, build 198 <BR>
058: *
059: * @author <a href="mailto:tfr@users.sourceforge.net">Torsten Friebe</A>
060: *
061: * @author last edited by: $Author: jmays $
062: *
063: * @version 3.0 . $Revision: 10560 $, $Date: 2008-03-12 02:22:13 -0700 (Wed, 12 Mar 2008) $
064: */
065: public final class Version {
066:
067: private static String BUILD_DATE;
068:
069: private static String VERSION_NUMBER;
070:
071: private static String BUILD_NUMBER;
072:
073: private static String BUILD_BY;
074:
075: private static String SVN_REVISION, SVN_PATH;
076:
077: /*
078: * Class loader to get version properties from resource file
079: */
080: static {
081: try {
082: // fetch version property
083: Properties versionProps = new Properties();
084: versionProps.load(Version.class
085: .getResourceAsStream("version.properties"));
086: VERSION_NUMBER = versionProps.getProperty("version.number");
087:
088: // fetch build properties
089: Properties buildProps = new Properties();
090: buildProps.load(Version.class
091: .getResourceAsStream("buildId.properties"));
092: BUILD_DATE = buildProps.getProperty("build.date");
093: BUILD_NUMBER = buildProps.getProperty("build.number");
094: BUILD_BY = buildProps.getProperty("build.by");
095: SVN_REVISION = buildProps.getProperty("svn.revision")
096: .trim();
097: SVN_PATH = buildProps.getProperty("svn.path").trim();
098: } catch (Exception ex) {
099: BootLogger.logError(
100: "Error fetching version / build properties: "
101: + ex.getMessage(), ex);
102: }
103: }
104:
105: private Version() {
106: // Don't let anyone instantiate this class.
107: }
108:
109: /**
110: * Returns the version of the application. The version number is created by 3 parts, the first
111: * represents the version number, the second a essential update of a release, the third the
112: * build number. The version number could be numeric or alphanumeric, e.g. 'Foo2' or '2.0'.
113: * <P>
114: * e.g.:<BR>
115: * 1.0.42 - version no. 1, release 0, build 42<BR>
116: * 1.1.78 - version no. 1, release 1, build 78<BR>
117: * 2.0.98 - version no. 2, release 0, build 98<BR>
118: *
119: * @return the version string
120: */
121: public static String getVersion() {
122: final String s = getVersionNumber() + " (" + getBuildDate()
123: + " build-" + getBuildNumber() + "-" + getBuildBy()
124: + ")";
125: return s;
126: }
127:
128: /**
129: * Returns the version number.
130: *
131: * @return the version number
132: */
133: public static String getVersionNumber() {
134: return Version.VERSION_NUMBER;
135: }
136:
137: /**
138: * Returns the current build number.
139: *
140: * @return the current build number
141: */
142: public static String getBuildNumber() {
143: return Version.BUILD_NUMBER;
144: }
145:
146: /**
147: * Returns the date string when the current build was created.
148: *
149: * @return the date as String
150: */
151: public static String getBuildDate() {
152: return Version.BUILD_DATE;
153: }
154:
155: /**
156: * Returns the name of the builder.
157: *
158: * @return the name of the builder
159: */
160: public static String getBuildBy() {
161: return Version.BUILD_BY;
162: }
163:
164: /**
165: * @return the svn revision number and path
166: */
167: public static String getSvnInfo() {
168: return "revision " + SVN_REVISION + " of " + SVN_PATH;
169: }
170:
171: /**
172: * @return the svn revision number
173: */
174: public static String getSvnRevision() {
175: return SVN_REVISION;
176: }
177:
178: /**
179: * @return the svn path
180: */
181: public static String getSvnPath() {
182: return SVN_PATH;
183: }
184:
185: /**
186: * @param args
187: */
188: public static void main(String[] args) {
189: System.out.println("deegree version: " + getVersion() + "\n"
190: + getSvnInfo());
191: }
192: }
|