01: /**
02: * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE, version 2.1, dated February 1999.
03: *
04: * This program is free software; you can redistribute it and/or modify
05: * it under the terms of the latest version of the GNU Lesser General
06: * Public License as published by the Free Software Foundation;
07: *
08: * This program is distributed in the hope that it will be useful,
09: * but WITHOUT ANY WARRANTY; without even the implied warranty of
10: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11: * GNU Lesser General Public License for more details.
12: *
13: * You should have received a copy of the GNU Lesser General Public License
14: * along with this program (LICENSE.txt); if not, write to the Free Software
15: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16: */package org.jamwiki;
17:
18: import org.apache.commons.lang.StringUtils;
19: import org.jamwiki.utils.WikiLogger;
20:
21: /**
22: * Utility class that holds the current Wiki version constant and provides
23: * methods for comparing Wiki versions.
24: */
25: public class WikiVersion {
26:
27: private static final WikiLogger logger = WikiLogger
28: .getLogger(WikiVersion.class.getName());
29: private final int major;
30: private final int minor;
31: private final int patch;
32:
33: /** Current software version. If this differs from the version in the properties an upgrade is performed. */
34: public final static String CURRENT_WIKI_VERSION = "0.6.5";
35:
36: /**
37: * Constructor to create a new Wiki version object using a version string of
38: * the form "0.3.5".
39: *
40: * @param version A version string of the form "0.3.5".
41: */
42: public WikiVersion(String version) throws Exception {
43: if (StringUtils.isBlank(version)) {
44: throw new Exception("Invalid Wiki version: " + version);
45: }
46: String[] tokens = version.split("\\.");
47: if (tokens.length != 3) {
48: throw new Exception("Invalid Wiki version: " + version);
49: }
50: this .major = new Integer(tokens[0]).intValue();
51: this .minor = new Integer(tokens[1]).intValue();
52: this .patch = new Integer(tokens[2]).intValue();
53: }
54:
55: /**
56: * Utility method for comparing the current Wiki version with another
57: * version.
58: *
59: * @param version A Wiki version to compare against.
60: * @return Returns <code>true</code> if the current version is older than
61: * the version being compared against.
62: */
63: public boolean before(WikiVersion version) {
64: return this .before(version.major, version.minor, version.patch);
65: }
66:
67: /**
68: * Utility method for comparing the current Wiki version with another
69: * version.
70: *
71: * @param major The major version number to compare against.
72: * @param minor The minor version number to compare against.
73: * @param patch The patch level to compare against.
74: * @return Returns <code>true</code> if the current version is older than
75: * the version being compared against.
76: */
77: public boolean before(int major, int minor, int patch) {
78: if (this .major < major) {
79: return true; // NOPMD
80: }
81: if (this .major == major && this .minor < minor) {
82: return true; // NOPMD
83: }
84: if (this .major == major && this .minor == minor
85: && this .patch < patch) {
86: return true; // NOPMD
87: }
88: return false;
89: }
90: }
|