blob: 1ed76287d6286a15ee389e247f2288f865a2397e [file] [log] [blame]
/*
JSPWiki - a JSP-based WikiWiki clone.
Copyright (C) 2001-2005 Janne Jalkanen (Janne.Jalkanen@iki.fi)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package com.ecyrd.jspwiki;
import org.apache.commons.lang.StringUtils;
/**
* Contains release and version information.
*
* @author Janne Jalkanen
*/
public class Release
{
/**
* This is the default application name.
*/
public static final String APPNAME = "JSPWiki";
/**
* This should be empty when doing a release - otherwise
* keep it as "cvs" so that whenever someone checks out the code,
* they know it is a bleeding-edge version. Other possible
* values are "-alpha" and "-beta" for alpha and beta versions,
* respectively.
*/
private static final String POSTFIX = "";
public static final int VERSION = 2;
public static final int REVISION = 4;
public static final int MINORREVISION = 104;
/**
* This is the generic version string you should use
* when printing out the version. It is of the form "x.y.z-ttt".
*/
public static final String VERSTR =
VERSION+"."+REVISION+"."+MINORREVISION+POSTFIX;
/**
* This method is useful for templates, because hopefully it will
* not be inlined, and thus any change to version number does not
* need recompiling the pages.
*
* @since 2.1.26.
*/
public static String getVersionString()
{
return VERSTR;
}
/**
* Returns true, if this version of JSPWiki is newer or equal than what is requested.
* @param version A version parameter string (a.b.c-something). B and C are optional.
* @return A boolean value describing whether the given version is newer than the current JSPWiki.
* @since 2.4.57
*/
public static boolean isNewerOrEqual( String version )
throws IllegalArgumentException
{
if( version == null ) return true;
String[] versionComponents = StringUtils.split(version,".-");
int reqVersion = versionComponents.length > 0 ? Integer.parseInt(versionComponents[0]) : Release.VERSION;
int reqRevision = versionComponents.length > 1 ? Integer.parseInt(versionComponents[1]) : Release.REVISION;
int reqMinorRevision = versionComponents.length > 2 ? Integer.parseInt(versionComponents[2]) : Release.MINORREVISION;
if( VERSION == reqVersion )
{
if( REVISION == reqRevision )
{
if( MINORREVISION == reqMinorRevision )
{
return true;
}
return MINORREVISION > reqMinorRevision;
}
return REVISION > reqVersion;
}
return VERSION > reqVersion;
}
/**
* Returns true, if this version of JSPWiki is older or equal than what is requested.
* @param version A version parameter string (a.b.c-something)
* @return A boolean value describing whether the given version is older than the current JSPWiki version
* @since 2.4.57
*/
public static boolean isOlderOrEqual( String version )
throws IllegalArgumentException
{
if( version == null ) return true;
String[] versionComponents = StringUtils.split(version,".-");
int reqVersion = versionComponents.length > 0 ? Integer.parseInt(versionComponents[0]) : Release.VERSION;
int reqRevision = versionComponents.length > 1 ? Integer.parseInt(versionComponents[1]) : Release.REVISION;
int reqMinorRevision = versionComponents.length > 2 ? Integer.parseInt(versionComponents[2]) : Release.MINORREVISION;
if( VERSION == reqVersion )
{
if( REVISION == reqRevision )
{
if( MINORREVISION == reqMinorRevision )
{
return true;
}
return MINORREVISION < reqMinorRevision;
}
return REVISION < reqVersion;
}
return VERSION < reqVersion;
}
/**
* Executing this class directly from command line prints out
* the current version. It is very useful for things like
* different command line tools.
* <P>Example:
* <PRE>
* % java com.ecyrd.jspwiki.Release
* 1.9.26-cvs
* </PRE>
*/
public static void main( String argv[] )
{
System.out.println(VERSTR);
}
}