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.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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        }
Note: See TracChangeset for help on using the changeset viewer.