[josm-dev] [PATCH] timestamp & parsedTimestamp in OsmPrimitive

Dirk Stöcker openstreetmap at dstoecker.de
Sun Mar 8 22:17:52 GMT 2009


On Sun, 8 Mar 2009, Jiri Klement wrote:

> Attached patch replaces timestamp and parsedTimestamp in OsmPrimitive
> with DateContainer class accessible only using setter and getter. The
> patch is not much usefull on itself but hopefully its the first step
> to make OsmPrimitive encalupsed (without public variables) so things
> like spatial index or better caching will be possible in future.

Generally ok, but some points you should fix:

a) I hate constructs like this:
   if (n.getTimestamp().getAsString() != null)
   {
     wpt.attr.put("time", n.getTimestamp().getAsString());

Calling functions twice is always bad design for multiple reasons. Use a 
temporary variable here.

b) This whole block should be in the new class. It's pure time logic.
   String timestr = p.getString("time");
   if(timestr != null)
   {
     timestr = timestr.replace("Z","+00:00");
     n.setTimestamp(new DateContainer(timestr.replace("Z","+00:00")));
   }

c) Same for this one.
   public int compareTo(HistoryItem o) {
     return unifyDate(osm.getTimestamp().getAsDate()).compareTo(unifyDate(o.osm.getTimestamp().getAsDate()));

d) And this one (using getAsNonZeroDate() or the like):
    Date otherd = other.getTimestamp().getAsDate();
    if (otherd == null) {
        otherd = new Date(0);
    }

Ciao
-- 
http://www.dstoecker.eu/ (PGP key available)




More information about the josm-dev mailing list