Ticket #18929: 18929.2.patch

File 18929.2.patch, 2.2 KB (added by GerdP, 4 years ago)

ignore discardable tags only

  • src/reverter/DataSetCommandMerger.java

     
    55
    66import java.util.ArrayList;
    77import java.util.Collection;
     8import java.util.HashMap;
    89import java.util.LinkedHashSet;
    910import java.util.LinkedList;
    1011import java.util.List;
     12import java.util.Map;
    1113
    1214import org.openstreetmap.josm.command.ChangeCommand;
    1315import org.openstreetmap.josm.command.Command;
    1416import org.openstreetmap.josm.data.conflict.Conflict;
    1517import org.openstreetmap.josm.data.conflict.ConflictCollection;
     18import org.openstreetmap.josm.data.osm.AbstractPrimitive;
    1619import org.openstreetmap.josm.data.osm.DataSet;
    1720import org.openstreetmap.josm.data.osm.Node;
    1821import org.openstreetmap.josm.data.osm.OsmPrimitive;
     
    4952    }
    5053
    5154    private void addChangeCommandIfNotEquals(OsmPrimitive target, OsmPrimitive newTarget, boolean nominal) {
    52         if (!target.hasEqualSemanticAttributes(newTarget) || target.isDeleted() != newTarget.isDeleted() || target.isVisible() != newTarget.isVisible()) {
    53             cmds.add(new ChangeCommand(target, newTarget));
    54             if (nominal) {
    55                 nominalRevertedPrimitives.add(target);
    56             }
    57             Logging.debug("Reverting "+target+" to "+newTarget);
     55                if (target.isIncomplete() != newTarget.isIncomplete() || target.isDeleted() != newTarget.isDeleted()
     56                                || target.isVisible() != newTarget.isVisible()
     57                                || !getNonDiscardableTags(target).equals(getNonDiscardableTags(newTarget))) {
     58                        cmds.add(new ChangeCommand(target, newTarget));
     59                        if (nominal) {
     60                                nominalRevertedPrimitives.add(target);
     61                        }
     62                        Logging.debug("Reverting " + target + " to " + newTarget);
     63                }
     64    }
     65
     66    private static Map<String, String> getNonDiscardableTags(OsmPrimitive p) {
     67        Map<String, String> result = new HashMap<>();
     68        for (Map.Entry<String, String> e : p.getKeys().entrySet()) {
     69                if (!AbstractPrimitive.getDiscardableKeys().contains(e.getKey()))
     70                        result.put(e.getKey(), e.getValue());
    5871        }
     72        return result;
    5973    }
    6074
    6175    private OsmPrimitive getMergeTarget(OsmPrimitive mergeSource) {