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

Last change on this file since 16438 was 16438, checked in by simon04, 4 years ago

see #19251 - Java 8: use Stream

  • Property svn:eol-style set to native
File size: 1.5 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.command.ChangePropertyCommand;
13import org.openstreetmap.josm.command.SequenceCommand;
14import org.openstreetmap.josm.data.APIDataSet;
15import org.openstreetmap.josm.data.UndoRedoHandler;
16import org.openstreetmap.josm.data.osm.AbstractPrimitive;
17import org.openstreetmap.josm.data.osm.OsmPrimitive;
18
19/**
20 * Removes discardable tags such as created_by from all modified objects before upload
21 */
22public class DiscardTagsHook implements UploadHook {
23
24 @Override
25 public boolean checkUpload(APIDataSet apiDataSet) {
26 List<OsmPrimitive> objectsToUpload = apiDataSet.getPrimitives();
27 Collection<String> discardableKeys = new HashSet<>(AbstractPrimitive.getDiscardableKeys());
28
29 boolean needsChange = objectsToUpload.stream().flatMap(osm -> osm.keySet().stream())
30 .anyMatch(discardableKeys::contains);
31
32 if (needsChange) {
33 Map<String, String> map = new HashMap<>();
34 for (String key : discardableKeys) {
35 map.put(key, null);
36 }
37
38 SequenceCommand removeKeys = new SequenceCommand(tr("Removed obsolete tags"),
39 new ChangePropertyCommand(objectsToUpload, map));
40 UndoRedoHandler.getInstance().add(removeKeys);
41 }
42 return true;
43 }
44
45}
Note: See TracBrowser for help on using the repository browser.