1
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* ***** BEGIN LICENSE BLOCK *****
3
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
5
* The contents of this file are subject to the Mozilla Public License Version
6
* 1.1 (the "License"); you may not use this file except in compliance with
7
* the License. You may obtain a copy of the License at
8
* http://www.mozilla.org/MPL/
10
* Software distributed under the License is distributed on an "AS IS" basis,
11
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12
* for the specific language governing rights and limitations under the
15
* The Original Code is the Extension Update Service.
17
* The Initial Developer of the Original Code is Ben Goodger.
18
* Portions created by the Initial Developer are Copyright (C) 2004
19
* the Initial Developer. All Rights Reserved.
22
* Ben Goodger <ben@bengoodger.com>
24
* Alternatively, the contents of this file may be used under the terms of
25
* either the GNU General Public License Version 2 or later (the "GPL"), or
26
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27
* in which case the provisions of the GPL or the LGPL are applicable instead
28
* of those above. If you wish to allow use of your version of this file only
29
* under the terms of either the GPL or the LGPL, and not to allow others to
30
* use your version of this file under the terms of the MPL, indicate your
31
* decision by deleting the provisions above and replace them with the notice
32
* and other provisions required by the GPL or the LGPL. If you do not delete
33
* the provisions above, a recipient may use your version of this file under
34
* the terms of any one of the MPL, the GPL or the LGPL.
36
* ***** END LICENSE BLOCK ***** */
38
package org.mozilla.update.extensions;
44
public Version(int aMajor, int aMinor, int aRelease, int aBuild, int aPlus)
48
this.release = aRelease;
53
public Version(String aVersion)
55
Version temp = Version.decomposeVersion(aVersion);
56
major = temp.getMajor();
57
minor = temp.getMinor();
58
release = temp.getRelease();
59
build = temp.getBuild();
60
plus = temp.getPlus();
63
public String toString()
65
return major + "." + minor + "." + release + "." + build + (plus == 1 ? "+" : "");
71
public static int compare(String aVersionA, String aVersionB)
73
Version a = Version.decomposeVersion(aVersionA);
74
Version b = Version.decomposeVersion(aVersionB);
79
public int compare(Version aOtherVersion)
81
if (aOtherVersion.getMajor() > getMajor())
83
else if (aOtherVersion.getMajor() < getMajor())
86
if (aOtherVersion.getMinor() > getMinor())
88
else if (aOtherVersion.getMinor() < getMinor())
91
if (aOtherVersion.getRelease() > getRelease())
93
else if (aOtherVersion.getRelease() < getRelease())
96
if (aOtherVersion.getBuild() > getBuild())
98
else if (aOtherVersion.getBuild() < getBuild())
101
if (aOtherVersion.getPlus() > getPlus())
103
else if (aOtherVersion.getPlus() < getPlus())
118
public int getMajor() { return major; }
119
public int getMinor() { return minor; }
120
public int getRelease() { return release; }
121
public int getBuild() { return build; }
122
public int getPlus() { return plus; }
124
private static Version decomposeVersion(String aVersion)
127
if (aVersion.endsWith("+"))
129
aVersion = aVersion.substring(0, aVersion.lastIndexOf("+"));
133
int parts[] = { 0, 0, 0, 0 };
134
StringTokenizer tokenizer = new StringTokenizer(aVersion, ".");
135
for (int i = 0; tokenizer.hasMoreTokens() && i < 4; ++i)
137
String token = tokenizer.nextToken();
138
if (token.length() == 0)
142
parts[i] = Integer.parseInt(token);
144
catch (NumberFormatException nfe)
150
return new Version(parts[0], parts[1], parts[2], parts[3], plus);