1 package org.codehaus.modello.model;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 public class VersionRange {
34 private static final String VERSION_SEPARATOR = "/";
35
36 private Version fromVersion;
37
38 private Version toVersion;
39
40 public VersionRange(String versionRange) {
41 if (versionRange.endsWith("+")) {
42 fromVersion = new Version(versionRange.substring(0, versionRange.length() - 1));
43
44 toVersion = Version.INFINITE;
45 } else if (versionRange.indexOf(VERSION_SEPARATOR) > 0 && !versionRange.endsWith(VERSION_SEPARATOR)) {
46 int pos = versionRange.indexOf(VERSION_SEPARATOR);
47
48 fromVersion = new Version(versionRange.substring(0, pos));
49
50 toVersion = new Version(versionRange.substring(pos + 1));
51 } else {
52 fromVersion = new Version(versionRange);
53
54 toVersion = new Version(versionRange);
55 }
56 }
57
58 public VersionRange(Version version) {
59 fromVersion = version;
60
61 toVersion = version;
62 }
63
64 public Version getFromVersion() {
65 return fromVersion;
66 }
67
68 public Version getToVersion() {
69 return toVersion;
70 }
71
72 public boolean isToInfinite() {
73 return toVersion == Version.INFINITE;
74 }
75
76
77
78
79
80 public int hashCode() {
81 return fromVersion.hashCode() + toVersion.hashCode();
82 }
83
84 public boolean equals(Object obj) {
85 if (!(obj instanceof VersionRange)) {
86 return false;
87 }
88
89 VersionRange other = (VersionRange) obj;
90
91 return fromVersion.equals(other.fromVersion) && toVersion.equals(other.toVersion);
92 }
93
94 public String toString() {
95 if (fromVersion.equals(toVersion)) {
96 return fromVersion.toString("", ".");
97 } else if (toVersion.equals(Version.INFINITE)) {
98 return fromVersion.toString("", ".") + "+";
99 } else {
100 return "[" + fromVersion.toString("", ".") + " => " + toVersion.toString("", ".") + "]";
101 }
102 }
103 }