[josm-dev] [PATCH 01/26] Enhance OsmPrimitive a bit

Dave Hansen dave at sr71.net
Tue Apr 29 03:02:43 BST 2008


1. allow .delete() to be overridden
2. Clean up .equals() to make it more readable
3. Let .realEqual() work with a single OsmPrimitive argument
4. include .mayDelete() method for use with ConditionalDeleteCommand

---

 core-dave/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java |   13 ++++++++--
 1 file changed, 11 insertions(+), 2 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-04-28 18:59:23.000000000 -0700
+++ core-dave/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	2008-04-28 18:59:23.000000000 -0700
@@ -131,7 +131,7 @@ abstract public class OsmPrimitive imple
 	 */
 	abstract public void visit(Visitor visitor);
 
-	public final void delete(boolean deleted) {
+	public void delete(boolean deleted) {
 		this.deleted = deleted;
 		selected = false;
 		modified = true;
@@ -160,7 +160,9 @@ abstract public class OsmPrimitive imple
 	 * An primitive is equal to its incomplete counter part.
 	 */
 	@Override public final boolean equals(Object obj) {
-		if (obj == null || getClass() != obj.getClass() || id == 0 || ((OsmPrimitive)obj).id == 0)
+		if (obj == null || getClass() != obj.getClass())
+			return super.equals(obj);
+		if (id == 0 && ((OsmPrimitive)obj).id == 0)
 			return super.equals(obj);
 		return id == ((OsmPrimitive)obj).id;
 	}
@@ -259,7 +261,14 @@ abstract public class OsmPrimitive imple
 			(semanticOnly || (visible == osm.visible)) &&
 			(keys == null ? osm.keys==null : keys.equals(osm.keys));
 	}
+
+	public boolean realEqual(OsmPrimitive osm) {
+		return this.realEqual(osm, false);
+    }
 	
+	public boolean mayDelete() {
+			return false;
+	}
 	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