[josm-dev] [PATCH 03/24] clean up OsmPrimitive.equals()
Dave Hansen
dave at sr71.net
Sat May 3 20:15:04 BST 2008
---
core-dave/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java | 21 ++++++----
1 file changed, 13 insertions(+), 8 deletions(-)
diff -puN src/org/openstreetmap/josm/data/osm/OsmPrimitive.java~osmprim src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
--- core/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java~osmprim 2008-05-03 12:08:38.000000000 -0700
+++ core-dave/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java 2008-05-03 12:08:38.000000000 -0700
@@ -154,15 +154,20 @@ abstract public class OsmPrimitive imple
}
/**
- * Equal, if the id (and class) is equal. If both ids are 0, use the super classes
- * equal instead.
- *
- * An primitive is equal to its incomplete counter part.
+ * Equal, if the id (and class) is equal.
+ *
+ * Note: an primitive is equal to its incomplete counterpart.
*/
@Override public final boolean equals(Object obj) {
- if (obj == null || getClass() != obj.getClass() || id == 0 || ((OsmPrimitive)obj).id == 0)
- return super.equals(obj);
- return id == ((OsmPrimitive)obj).id;
+ // Unassigned id, only equal if exact same object
+ if (id == 0)
+ return obj == this;
+ if (obj == null)
+ return false;
+ // Never equal to different types
+ if (this.getClass() != obj.getClass())
+ return false;
+ return ((OsmPrimitive)obj).id == id;
}
/**
@@ -259,7 +264,7 @@ abstract public class OsmPrimitive imple
(semanticOnly || (visible == osm.visible)) &&
(keys == null ? osm.keys==null : keys.equals(osm.keys));
}
-
+
public String getTimeStr() {
return timestamp == null ? null : new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(timestamp);
}
_
More information about the josm-dev
mailing list