Changeset 224 in josm for src/org/openstreetmap/josm


Ignore:
Timestamp:
2007-05-05T23:33:16+02:00 (17 years ago)
Author:
framm
Message:

Fixed MergeVisitor so that it will never merge between objects that are
part of the group of objects being added - only between pre-existing
objects and those being added.

Location:
src/org/openstreetmap/josm
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/actions/DownloadIncompleteAction.java

    r218 r224  
    4848
    4949                @Override protected void finish() {
    50                         MergeVisitor merger = new MergeVisitor(Main.ds);
     50                        MergeVisitor merger = new MergeVisitor(Main.ds, reader.data);
    5151                        for (OsmPrimitive osm : reader.data.allPrimitives())
    5252                                osm.visit(merger);
  • src/org/openstreetmap/josm/data/osm/visitor/MergeVisitor.java

    r203 r224  
    2929
    3030        private final DataSet ds;
     31        private final DataSet mergeds;
    3132
    3233        /**
     
    4344        private final Map<Segment, Segment> mergedSegments = new HashMap<Segment, Segment>();
    4445
    45         public MergeVisitor(DataSet ds) {
     46        public MergeVisitor(DataSet ds, DataSet mergeds) {
    4647                this.ds = ds;
     48                this.mergeds = mergeds;
    4749        }
    4850
     
    5759                Node my = null;
    5860                for (Node n : ds.nodes) {
    59                         if (match(n, other)) {
     61                        if (match(n, other) && ((mergeds == null) || (!mergeds.nodes.contains(n)))) {
    6062                                my = n;
    6163                                break;
     
    8789                Segment my = null;
    8890                for (Segment ls : ds.segments) {
    89                         if (match(other, ls)) {
     91                        if (match(other, ls) && ((mergeds == null) || (!mergeds.segments.contains(ls)))) {
    9092                                my = ls;
    9193                                break;
    9294                        }
    9395                }
     96               
    9497                if (my == null)
    9598                        ds.segments.add(other);
     
    145148                Way my = null;
    146149                for (Way w : ds.ways) {
    147                         if (match(other, w)) {
     150                        if (match(other, w) && ((mergeds == null) || (!mergeds.ways.contains(w)))) {
    148151                                my = w;
    149152                                break;
     
    291294                else
    292295                        my.keys.putAll(other.keys);
     296               
    293297                my.modified = true;
    294298        }
  • src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java

    r186 r224  
    157157
    158158        @Override public void mergeFrom(final Layer from) {
    159                 final MergeVisitor visitor = new MergeVisitor(data);
     159                final MergeVisitor visitor = new MergeVisitor(data,((OsmDataLayer)from).data);
    160160                for (final OsmPrimitive osm : ((OsmDataLayer)from).data.allPrimitives())
    161161                        osm.visit(visitor);
  • src/org/openstreetmap/josm/io/IncompleteDownloader.java

    r219 r224  
    4444         */
    4545        private final Collection<Way> toDownload;
    46         private MergeVisitor merger = new MergeVisitor(data);
     46        private MergeVisitor merger = new MergeVisitor(data, null);
    4747
    4848        public IncompleteDownloader(Collection<Way> toDownload) {
Note: See TracChangeset for help on using the changeset viewer.