Ignore:
Timestamp:
2005-10-09T20:06:06+02:00 (19 years ago)
Author:
imi
Message:

added Server connection to osm server.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/data/osm/DataSet.java

    r17 r18  
    33import java.util.Collection;
    44import java.util.Collections;
     5import java.util.HashMap;
    56import java.util.HashSet;
     7import java.util.Iterator;
    68import java.util.LinkedList;
     9import java.util.Map;
     10import java.util.Set;
    711
    812import org.openstreetmap.josm.data.Bounds;
     
    196200         */
    197201        public void mergeFrom(DataSet ds, boolean mergeEqualNodes) {
     202                System.out.println(nodes.size()+" "+pendingLineSegments.size()+" "+tracks.size());
    198203                if (mergeEqualNodes) {
    199                         LinkedList<Node> nodesToAdd = new LinkedList<Node>();
    200                         for (Node n : ds.nodes)
    201                                 for (Node mynode : nodes) {
    202                                         if (mynode.coor.equalsLatLon(n.coor))
    203                                                 mynode.mergeFrom(n);
    204                                         else
    205                                                 nodesToAdd.add(n);
     204                        Map<Node, Node> mergeMap = new HashMap<Node, Node>();
     205                        Set<Node> nodesToAdd = new HashSet<Node>();
     206                        for (Node n : nodes) {
     207                                for (Iterator<Node> it = ds.nodes.iterator(); it.hasNext();) {
     208                                        Node dsn = it.next();
     209                                        if (n.coor.equalsLatLon(dsn.coor)) {
     210                                                mergeMap.put(dsn, n);
     211                                                n.mergeFrom(dsn);
     212                                                it.remove();
     213                                        } else {
     214                                                nodesToAdd.add(dsn);
     215                                        }
    206216                                }
    207                 } else
     217                        }
     218                        nodes.addAll(nodesToAdd);
     219                        for (Track t : ds.tracks) {
     220                                for (LineSegment ls : t.segments()) {
     221                                        Node n = mergeMap.get(ls.getStart());
     222                                        if (n != null)
     223                                                ls.start = n;
     224                                        n = mergeMap.get(ls.getEnd());
     225                                        if (n != null)
     226                                                ls.end = n;
     227                                }
     228                        }
     229                        tracks.addAll(ds.tracks);
     230                        for (LineSegment ls : ds.pendingLineSegments) {
     231                                Node n = mergeMap.get(ls.getStart());
     232                                if (n != null)
     233                                        ls.start = n;
     234                                n = mergeMap.get(ls.getEnd());
     235                                if (n != null)
     236                                        ls.end = n;
     237                        }
     238                        pendingLineSegments.addAll(ds.pendingLineSegments);
     239                } else {
    208240                        nodes.addAll(ds.nodes);
    209                 tracks.addAll(ds.tracks);
    210                 pendingLineSegments.addAll(ds.pendingLineSegments);
     241                        tracks.addAll(ds.tracks);
     242                        pendingLineSegments.addAll(ds.pendingLineSegments);
     243                }
     244                System.out.println(nodes.size()+" "+pendingLineSegments.size()+" "+tracks.size());
    211245        }
    212246
Note: See TracChangeset for help on using the changeset viewer.