Ticket #6592: 6592.patch

File 6592.patch, 6.8 KB (added by simon04, 15 years ago)
  • src/org/openstreetmap/josm/data/osm/history/HistoryNode.java

    diff --git a/src/org/openstreetmap/josm/data/osm/history/HistoryNode.java b/src/org/openstreetmap/josm/data/osm/history/HistoryNode.java
    index bd45a5d..81eb6ec 100644
    a b package org.openstreetmap.josm.data.osm.history;  
    44import java.util.Date;
    55
    66import org.openstreetmap.josm.data.coor.LatLon;
     7import org.openstreetmap.josm.data.osm.Node;
    78import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
    89
    910/**
    public class HistoryNode extends HistoryOsmPrimitive {  
    1819
    1920    public HistoryNode(long id, long version, boolean visible, String user, long uid, long changesetId, Date timestamp, LatLon coords) {
    2021        super(id, version, visible, user, uid, changesetId, timestamp);
    21         setCoords(coords);
     22        this.coords = coords;
     23    }
     24
     25    public HistoryNode(Node p) {
     26        super(p);
     27        this.coords = p.getCoor();
    2228    }
    2329
    2430    @Override
  • src/org/openstreetmap/josm/data/osm/history/HistoryOsmPrimitive.java

    diff --git a/src/org/openstreetmap/josm/data/osm/history/HistoryOsmPrimitive.java b/src/org/openstreetmap/josm/data/osm/history/HistoryOsmPrimitive.java
    index c22e6c9..78181c9 100644
    a b import java.util.HashMap;  
    1010import java.util.Locale;
    1111import java.util.Map;
    1212
     13import org.openstreetmap.josm.data.osm.Node;
     14import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1315import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
    1416import org.openstreetmap.josm.data.osm.PrimitiveId;
     17import org.openstreetmap.josm.data.osm.Relation;
    1518import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
     19import org.openstreetmap.josm.data.osm.Way;
    1620import org.openstreetmap.josm.tools.CheckParameterUtil;
    1721
    1822/**
    public abstract class HistoryOsmPrimitive implements Comparable<HistoryOsmPrimit  
    6973        tags = new HashMap<String, String>();
    7074    }
    7175
     76    public HistoryOsmPrimitive(OsmPrimitive p) {
     77        this(p.getId(), p.getVersion(), p.isVisible(),
     78                p.getUser() == null ? null : p.getUser().getName(),
     79                p.getUser() == null ? 0 : p.getUser().getId(),
     80                p.getChangesetId(), p.getTimestamp());
     81    }
     82
     83    public static HistoryOsmPrimitive forOsmPrimitive(OsmPrimitive p) {
     84        if (p instanceof Node) {
     85            return new HistoryNode((Node) p);
     86        } else if (p instanceof Way) {
     87            return new HistoryWay((Way) p);
     88        } else if (p instanceof Relation) {
     89            return new HistoryRelation((Relation) p);
     90        } else {
     91            return null;
     92        }
     93    }
     94
    7295    public long getId() {
    7396        return id;
    7497    }
  • src/org/openstreetmap/josm/data/osm/history/HistoryRelation.java

    diff --git a/src/org/openstreetmap/josm/data/osm/history/HistoryRelation.java b/src/org/openstreetmap/josm/data/osm/history/HistoryRelation.java
    index 86258c0..c632a2f 100644
    a b import java.util.Date;  
    88import java.util.List;
    99
    1010import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
     11import org.openstreetmap.josm.data.osm.Relation;
    1112import org.openstreetmap.josm.tools.CheckParameterUtil;
    1213
    1314/**
    import org.openstreetmap.josm.tools.CheckParameterUtil;  
    1718 */
    1819public class HistoryRelation extends HistoryOsmPrimitive{
    1920
    20     private ArrayList<RelationMember> members;
     21    private ArrayList<RelationMember> members = new ArrayList<RelationMember>();
    2122
    2223    /**
    2324     * constructor
    public class HistoryRelation extends HistoryOsmPrimitive{  
    3536    public HistoryRelation(long id, long version, boolean visible, String user, long uid, long changesetId,
    3637            Date timestamp) throws IllegalArgumentException {
    3738        super(id, version, visible, user, uid, changesetId, timestamp);
    38         members = new ArrayList<RelationMember>();
    3939    }
    4040    /**
    4141     * constructor
    public class HistoryRelation extends HistoryOsmPrimitive{  
    5959        }
    6060    }
    6161
     62    public HistoryRelation(Relation p) {
     63        super(p);
     64    }
     65
    6266    /**
    6367     * replies an immutable list of members of this relation
    6468     *
  • src/org/openstreetmap/josm/data/osm/history/HistoryWay.java

    diff --git a/src/org/openstreetmap/josm/data/osm/history/HistoryWay.java b/src/org/openstreetmap/josm/data/osm/history/HistoryWay.java
    index 83b9d08..2d4e249 100644
    a b import java.util.Date;  
    99import java.util.List;
    1010
    1111import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
     12import org.openstreetmap.josm.data.osm.Way;
    1213/**
    1314 * Represents an immutable OSM way in the context of a historical view on
    1415 * OSM data.
    import org.openstreetmap.josm.data.osm.OsmPrimitiveType;  
    1617 */
    1718public class HistoryWay extends HistoryOsmPrimitive {
    1819
    19     private ArrayList<Long> nodeIds;
     20    private ArrayList<Long> nodeIds = new ArrayList<Long>();
    2021
    2122    public HistoryWay(long id, long version, boolean visible, String user, long uid, long changesetId, Date timestamp) {
    2223        super(id, version, visible, user, uid, changesetId, timestamp);
    23         nodeIds = new ArrayList<Long>();
    2424    }
    2525
    2626    public HistoryWay(long id, long version, boolean visible, String user, long uid, long changesetId, Date timestamp, ArrayList<Long> nodeIdList) {
    public class HistoryWay extends HistoryOsmPrimitive {  
    2828        this.nodeIds.addAll(nodeIdList);
    2929    }
    3030
     31    public HistoryWay(Way p) {
     32        super(p);
     33    }
     34
    3135    /**
    3236     * replies the number of nodes in this way
    3337     * @return the number of nodes
  • src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java

    diff --git a/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java b/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
    index 222c8ad..4614c68 100644
    a b public class HistoryBrowserModel extends Observable implements LayerChangeListen  
    144144    }
    145145    protected boolean canShowAsLatest(OsmPrimitive primitive) {
    146146        if (primitive == null) return false;
    147         if (primitive.isNew()) return false;
     147        if (primitive.isNew() || !primitive.isUsable()) return false;
     148       
     149        //try creating a history primitive. if that fails, the primitive cannot be used.
     150        try {
     151            HistoryOsmPrimitive.forOsmPrimitive(primitive);
     152        } catch (Exception ign) {
     153            return false;
     154        }
     155
    148156        if (history == null) return false;
    149         // only show latest of the same version if it is
    150         // modified
     157        // only show latest of the same version if it is modified
    151158        if (history.getByVersion(primitive.getVersion()) != null)
    152159            return primitive.isModified();
    153160