source: josm/trunk/src/org/openstreetmap/josm/actions/upload/DiscardTagsHook.java@ 8338

Last change on this file since 8338 was 8338, checked in by Don-vip, 9 years ago

fix squid:S1319 - Declarations should use Java collection interfaces rather than specific implementation classes

  • Property svn:eol-style set to native
File size: 1.6 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.actions.upload;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.util.Collection;
7import java.util.HashMap;
8import java.util.HashSet;
9import java.util.List;
10import java.util.Map;
11
12import org.openstreetmap.josm.Main;
13import org.openstreetmap.josm.command.ChangePropertyCommand;
14import org.openstreetmap.josm.command.SequenceCommand;
15import org.openstreetmap.josm.data.APIDataSet;
16import org.openstreetmap.josm.data.osm.OsmPrimitive;
17
18/**
19 * Removes discardable tags such as created_by from all modified objects before upload
20 */
21public class DiscardTagsHook implements UploadHook {
22
23 @Override
24 public boolean checkUpload(APIDataSet apiDataSet) {
25 List<OsmPrimitive> objectsToUpload = apiDataSet.getPrimitives();
26 Collection<String> discardableKeys = new HashSet<>(OsmPrimitive.getDiscardableKeys());
27
28 boolean needsChange = false;
29 OUTER: for (OsmPrimitive osm : objectsToUpload) {
30 for (String key : osm.keySet()) {
31 if (discardableKeys.contains(key)) {
32 needsChange = true;
33 break OUTER;
34 }
35 }
36 }
37
38 if (needsChange) {
39 Map<String, String> map = new HashMap<>();
40 for (String key : discardableKeys) {
41 map.put(key, null);
42 }
43
44 SequenceCommand removeKeys = new SequenceCommand(tr("Removed obsolete tags"),
45 new ChangePropertyCommand(objectsToUpload, map));
46 Main.main.undoRedo.add(removeKeys);
47 }
48 return true;
49 }
50
51}
Note: See TracBrowser for help on using the repository browser.