package com.robonobo.common.util; /* * Robonobo Common Utils * Copyright (C) 2008 Will Morton (macavity@well.com) & Ray Hilton (ray@wirestorm.net) * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * 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 General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ public class Version implements Comparable { int[] segments; public Version(String version) { String[] bits = version.split("\\."); segments = new int[bits.length]; for(int i = 0; i < bits.length; i++) { segments[i] = Integer.parseInt(bits[i]); } } public int getMajor() { return getSegment(0); } public int getMinor() { return getSegment(1); } public int getRevision() { return getSegment(2); } public void setMajor(int value) { setSegment(0, value); } public void setMinor(int value) { setSegment(1, value); } public void setRevision(int value) { setSegment(2, value); } public int getSegment(int index) { if(segments.length>index) return segments[index]; else return 0; } public void setSegment(int index, int value) { if(segments.length<=index) { int[] segs = new int[index+1]; System.arraycopy(segments, 0, segs, 0, segments.length); segments = segs; } segments[index] = value; } public boolean equals(Object arg0) { if(arg0 instanceof Version) { Version v2 = (Version)arg0; for(int i = 0; i < v2.segments.length; i++) { if(segments.length<=i || v2.segments[i] != segments[i]) return false; } return true; } else return false; } public boolean isGreaterThan(Version v) { for(int i = 0; i < segments.length; i++) { if(segments[i]>v.segments[i]) return true; } return false; } public boolean isLessThan(Version v) { for(int i = 0; i < segments.length; i++) { if(segments[i]<v.segments[i]) return true; } return false; } public int compareTo(Object arg0) { if(arg0 instanceof Version) { if(isGreaterThan((Version)arg0)) return 1; if(isLessThan((Version)arg0)) return -1; return 0; } else { throw new ClassCastException(); } } public String toString() { String str = ""; for(int i = 0; i < segments.length; i++) { str+=segments[i]; if(i < segments.length-1) str+="."; } return str; } }