Changeset 5767 in josm for trunk/src/org


Ignore:
Timestamp:
2013-03-09T09:45:55+01:00 (12 years ago)
Author:
Don-vip
Message:

fix #8495 - fix FixDataHook$FixDataSpace.fixKeys algo

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/upload/FixDataHook.java

    r5623 r5767  
    66import java.util.Collection;
    77import java.util.Collections;
     8import java.util.HashMap;
    89import java.util.LinkedList;
    910import java.util.List;
    10 import java.util.HashMap;
    1111import java.util.Map;
    1212import java.util.Map.Entry;
     
    7373        @Override
    7474        public boolean fixKeys(Map<String, String> keys, OsmPrimitive osm) {
    75             boolean changed = false;
    76             for(Entry<String, String> e : keys.entrySet()) {
     75            Map<String, String> newKeys = new HashMap<String, String>(keys);
     76            for (Entry<String, String> e : keys.entrySet()) {
    7777                String v = e.getValue().trim();
    7878                String k = e.getKey().trim();
    7979                if(!e.getKey().equals(k)) {
    80                     changed = true;
    8180                    boolean drop = k.isEmpty() || v.isEmpty();
    8281                    if(drop || !keys.containsKey(k)) {
    83                         keys.remove(e.getKey());
     82                        newKeys.remove(e.getKey());
    8483                        if(!drop)
    85                             keys.put(k, v);
     84                            newKeys.put(k, v);
    8685                    }
    8786                } else if(!e.getValue().equals(v)) {
    8887                    if(v.isEmpty())
    89                         keys.remove(k);
     88                        newKeys.remove(k);
    9089                    else
    91                         keys.put(k, v);
    92                     changed = true;
     90                        newKeys.put(k, v);
    9391                }
     92            }
     93            boolean changed = !keys.equals(newKeys);
     94            if (changed) {
     95                keys.clear();
     96                keys.putAll(newKeys);
    9497            }
    9598            return changed;
     
    180183        Collection<Command> cmds = new LinkedList<Command>();
    181184
    182         boolean needsChange = false;
    183185        for (OsmPrimitive osm : objectsToUpload) {
    184186            Map<String, String> keys = osm.getKeys();
Note: See TracChangeset for help on using the changeset viewer.