package dk.gov.oiosi.configuration; /** * Administrative class to keep track of the version number of the OIORASP release. *

* This class is created to be similar to Version classes in Apache project, e.g. org.apache.xalan.Version, but naming is adopted from * http://en.wikipedia.org/wiki/Software_versioning#Change_significance *

* In future it can be used by configuration procedures to check proper library related environment update. *

* Do not mix it with dk.gov.oiosi.common.Version, which is Version of server and contains another information. * * @since OIORASP 1.3.0 */ public class Version { private static int major; private static int minor; private static int maintenance; private static String revision; /** * Get the basic version string for the current OIORASP release. Version String formatted like *

* "OIORASP Java a.b.c.d". *

* where a=major version number, b=minor version number, c=maintenance version number, d=revision number * * @return String denoting our current version */ public static String getVersion() { return getProduct() + " " + getImplementationLanguage() + " " + getMajorVersionNum() + "." + getMinorVersionNum() + "." + getMaintenanceVersionNum() + "." + getRevisionNum(); } /** * Get the basic version number for the current OIORASP release. Version String formatted like *

* "a.b.c". *

* where a=major version number, b=minor version number, c=maintenance version number * * @return String denoting our current version */ public static String getVersionNumber() { return getMajorVersionNum() + "." + getMinorVersionNum() + "." + getMaintenanceVersionNum(); } /** * Print the processor version to the command line. * * @param argv command line arguments, unused. */ public static void main(String[] argv) { System.out.println(getVersion()); } /** * @return Name of product: OIORASP. */ public static String getProduct() { return "OIORASP"; } /** * @return Implementation Language: Java. */ public static String getImplementationLanguage() { return "Java"; } /** * @return Major version number. This changes only when there is a significant, externally apparent enhancement from the previous * release. 'n' represents the n'th version. *

* Clients should carefully consider the implications of new versions as external interfaces and behaviour may have changed. */ public static int getMajorVersionNum() { return major; } /** * @return Minor number. This changes when: - a new set of functionality is to be added, eg, implementation of a new W3C specification. * - API or behaviour change. - it's designated as a reference release. */ public static int getMinorVersionNum() { return minor; } /** * @return Maintenance Drop Number. This identifier is used to designate maintenance drop applied to a specific release and contains * fixes for defects reported. It maintains compatibility with the release and contains no API changes. */ public static int getMaintenanceVersionNum() { return maintenance; } /** * @return Revision code. This identifier gets the SVN commit number from which this software is compiled. */ public static String getRevisionNum() { return revision; } /** * Load and parse the version number held by ConfigurationHandler. *

* Method is designed to be called from dk.gov.oiosi.configuration.ConfigurationHandler#loadXMLConfiguration() to have inversion of * control. */ static void initNumbering() { if (major == 0 && ConfigurationHandler.getVersionNumber() != null) { String[] a = ConfigurationHandler.getVersionNumber().split("\\."); major = Integer.parseInt(a[0]); minor = Integer.parseInt(a[1]); maintenance = Integer.parseInt(a[2]); revision = a[3]; } } }