summaryrefslogtreecommitdiffstats
path: root/src/main/java/derms/replica/replica1/ResourceID.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/derms/replica/replica1/ResourceID.java')
-rw-r--r--src/main/java/derms/replica/replica1/ResourceID.java49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/main/java/derms/replica/replica1/ResourceID.java b/src/main/java/derms/replica/replica1/ResourceID.java
new file mode 100644
index 0000000..008b766
--- /dev/null
+++ b/src/main/java/derms/replica/replica1/ResourceID.java
@@ -0,0 +1,49 @@
+package derms.replica.replica1;
+
+import java.io.Serializable;
+
+public class ResourceID implements Serializable {
+ public String city;
+ public short num;
+
+ public ResourceID (String city, short num) {
+ this.city = city;
+ this.num = num;
+ }
+
+ public ResourceID() {
+ this("XXX", (short) 1111);
+ }
+
+ public static ResourceID parse(String s) throws IllegalArgumentException {
+ if (s.length() != City.codeLen+ID.nDigits) {
+ throw new IllegalArgumentException("invalid resource ID: "+s);
+ }
+ try {
+ String cityCode = s.substring(0, City.codeLen);
+ short num = Short.parseShort(s.substring(City.codeLen));
+ return new ResourceID(cityCode, num);
+ } catch (NumberFormatException e) {
+ throw new IllegalArgumentException("invalid resource ID: "+e.getMessage());
+ }
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null || obj.getClass() != this.getClass()) {
+ return false;
+ }
+ ResourceID other = (ResourceID) obj;
+ return (this.city.equals(other.city)) && (this.num == other.num);
+ }
+
+ @Override
+ public int hashCode() {
+ return city.hashCode() * num;
+ }
+
+ @Override
+ public String toString() {
+ return city+num;
+ }
+}