1 package net.sourceforge.rpgee.utility;
2
3 import java.util.Locale;
4
5 import net.sourceforge.rpgee.Localized;
6
7 import org.joda.time.DateTime;
8
9 public class Version implements Localized, Comparable<Version> {
10 private static final String PATTERN = "yyyyMMdd hh:mm:ss";
11 private Integer version = new Integer(0);
12 private Integer major = new Integer(0);
13 private Integer minor = new Integer(0);
14 private Integer dot = new Integer(0);
15 private Integer build = new Integer(0);
16 private DateTime time = new DateTime();
17 private Locale locale = Locale.getDefault();
18
19 public Version(Integer _version, Integer _major, Integer _minor, Integer _dot, Integer _build, DateTime _time, Locale _locale) {
20 super();
21 if (_version != null)
22 this.version = _version;
23 if (_major != null)
24 this.major = _major;
25 if (_minor != null)
26 this.minor = _minor;
27 if (_dot != null)
28 this.dot = _dot;
29 if (_build != null)
30 this.build = _build;
31 if (_time != null)
32 this.time = _time;
33 if (_locale != null)
34 this.locale = _locale;
35 }
36
37 public Integer getDot() {
38 return dot;
39 }
40
41 public Integer getMajor() {
42 return major;
43 }
44
45 public Integer getMinor() {
46 return minor;
47 }
48
49 public Integer getVersion() {
50 return version;
51 }
52
53 @Override
54 public String toString() {
55 StringBuffer sb = new StringBuffer("Version ");
56 sb.append(version);
57 sb.append(".").append(major);
58 sb.append(".").append(minor);
59 sb.append("/").append(dot);
60 sb.append(" ( build ").append(build).append(")");
61 sb.append(" ").append(time.toString(PATTERN,locale));
62
63 return super.toString();
64 }
65
66 public int compareTo(Version o) {
67 if (this.equals(o))
68 return 0;
69 int i = this.getVersion().compareTo(o.getVersion());
70 if (i == 0) {
71 i = this.getMajor().compareTo(o.getMajor());
72 if (i == 0) {
73 i = this.getMinor().compareTo(o.getMinor());
74 if (i == 0)
75 i = this.getDot().compareTo(o.getDot());
76 }
77 }
78 return i;
79 }
80
81 public boolean equals(Object obj) {
82 if (obj == this)
83 return true;
84 if (obj instanceof Version) {
85 Version o = (Version) obj;
86 return getVersion().equals(o.getVersion()) && getMajor().equals(o.getMajor()) && getMinor().equals(o.getMinor())
87 && getDot().equals(o.getDot());
88 }
89 return false;
90 }
91
92 public Locale getLocale() {
93 return locale;
94 }
95
96 }