001    //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/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: aschmitz $
062     * 
063     * @version 3.0 . $Revision: 9763 $, $Date: 2008-01-25 11:18:51 +0100 (Fr, 25 Jan 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.getResourceAsStream( "version.properties" ) );
085                VERSION_NUMBER = versionProps.getProperty( "version.number" );
086    
087                // fetch build properties
088                Properties buildProps = new Properties();
089                buildProps.load( Version.class.getResourceAsStream( "buildId.properties" ) );
090                BUILD_DATE = buildProps.getProperty( "build.date" );
091                BUILD_NUMBER = buildProps.getProperty( "build.number" );
092                BUILD_BY = buildProps.getProperty( "build.by" );
093                SVN_REVISION = buildProps.getProperty( "svn.revision" ).trim();
094                SVN_PATH = buildProps.getProperty( "svn.path" ).trim();
095            } catch ( Exception ex ) {
096                BootLogger.logError( "Error fetching version / build properties: " + ex.getMessage(), ex );
097            }
098        }
099    
100        private Version() {
101            // Don't let anyone instantiate this class.
102        }
103    
104        /**
105         * Returns the version of the application. The version number is created by 3 parts, the first
106         * represents the version number, the second a essential update of a release, the third the
107         * build number. The version number could be numeric or alphanumeric, e.g. 'Foo2' or '2.0'.
108         * <P>
109         * e.g.:<BR>
110         * 1.0.42 - version no. 1, release 0, build 42<BR>
111         * 1.1.78 - version no. 1, release 1, build 78<BR>
112         * 2.0.98 - version no. 2, release 0, build 98<BR>
113         * 
114         * @return the version string
115         */
116        public static String getVersion() {
117            final String s = getVersionNumber() + " (" + getBuildDate() + " build-" + getBuildNumber() + "-" + getBuildBy()
118                             + ")";
119            return s;
120        }
121    
122        /**
123         * Returns the version number.
124         * 
125         * @return the version number
126         */
127        public static String getVersionNumber() {
128            return Version.VERSION_NUMBER;
129        }
130    
131        /**
132         * Returns the current build number.
133         * 
134         * @return the current build number
135         */
136        public static String getBuildNumber() {
137            return Version.BUILD_NUMBER;
138        }
139    
140        /**
141         * Returns the date string when the current build was created.
142         * 
143         * @return the date as String
144         */
145        public static String getBuildDate() {
146            return Version.BUILD_DATE;
147        }
148    
149        /**
150         * Returns the name of the builder.
151         * 
152         * @return the name of the builder
153         */
154        public static String getBuildBy() {
155            return Version.BUILD_BY;
156        }
157    
158        /**
159         * @return the svn revision number and path
160         */
161        public static String getSvnInfo() {
162            return "revision " + SVN_REVISION + " of " + SVN_PATH;
163        }
164    
165        /**
166         * @param args
167         */
168        public static void main( String[] args ) {
169            System.out.println( "deegree version: " + getVersion() + "\n" + getSvnInfo() );
170        }
171    }