Changeset 16328 in josm


Ignore:
Timestamp:
2020-04-17T21:27:35+02:00 (5 years ago)
Author:
simon04
Message:

AddTagsDialog: use TextTagParser.readTagsByRegexp

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java

    r15319 r16328  
    1111import java.awt.event.KeyEvent;
    1212import java.awt.event.MouseEvent;
    13 import java.util.Arrays;
    1413import java.util.Collection;
    1514import java.util.HashMap;
     
    1817import java.util.Map.Entry;
    1918import java.util.Set;
    20 import java.util.stream.Collectors;
    2119
    2220import javax.swing.AbstractAction;
     
    3836import org.openstreetmap.josm.gui.util.TableHelper;
    3937import org.openstreetmap.josm.tools.GBC;
     38import org.openstreetmap.josm.tools.TextTagParser;
    4039
    4140/**
     
    293292     * @since 15316
    294293     */
    295     public static String[][] parseUrlTagsToKeyValues(String urlSection) {
    296         return Arrays.stream(urlSection.split("\\|"))
    297                 .map(String::trim)
    298                 .filter(tag -> !tag.isEmpty() && tag.contains("="))
    299                 .map(tag -> tag.split("\\s*=\\s*", 2))
    300                 .map(pair -> {
    301                     pair[1] = pair.length < 2 ? "" : pair[1];
    302                     return pair;
    303                 })
    304                 .collect(Collectors.toList()).toArray(new String[][] {});
     294    public static Map<String, String> parseUrlTagsToKeyValues(String urlSection) {
     295        return TextTagParser.readTagsByRegexp(urlSection, "\\|", "(.*?)=(.*?)", false);
    305296    }
    306297
     
    313304     */
    314305    public static void addTags(String[][] keyValue, String sender, Collection<? extends OsmPrimitive> primitives) {
    315         if (trustedSenders.contains(sender)) {
    316             if (MainApplication.getLayerManager().getEditDataSet() != null) {
    317                 for (String[] row : keyValue) {
    318                     UndoRedoHandler.getInstance().add(new ChangePropertyCommand(primitives, row[0], row[1]));
    319                 }
    320             }
    321         } else {
    322             new AddTagsDialog(keyValue, sender, primitives).showDialog();
    323         }
     306        new AddTagsDialog(keyValue, sender, primitives).showDialog();
    324307    }
    325308}
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java

    r16324 r16328  
    269269                DataSet ds = MainApplication.getLayerManager().getEditDataSet();
    270270                if (ds != null) {
    271                     for (String[] key : AddTagsDialog.parseUrlTagsToKeyValues(args.get("changeset_tags"))) {
    272                         ds.addChangeSetTag(key[0], key[1]);
    273                     }
     271                    AddTagsDialog.parseUrlTagsToKeyValues(args.get("changeset_tags")).forEach(ds::addChangeSetTag);
    274272                }
    275273            });
  • trunk/test/unit/org/openstreetmap/josm/io/remotecontrol/AddTagsDialogTest.java

    r16327 r16328  
    44import static org.junit.Assert.assertEquals;
    55
    6 import java.util.Arrays;
     6import java.util.Map;
    77
     8import org.junit.Rule;
    89import org.junit.Test;
     10import org.openstreetmap.josm.testutils.JOSMTestRules;
     11
     12import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
    913
    1014/**
     
    1216 */
    1317public class AddTagsDialogTest {
     18    /**
     19     * Setup test.
     20     */
     21    @Rule
     22    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
     23    public JOSMTestRules test = new JOSMTestRules().preferences();
    1424
    1525    /**
     
    1828    @Test
    1929    public void testParseUrlTagsToKeyValues() {
    20         String[][] strings = AddTagsDialog.parseUrlTagsToKeyValues("wikipedia:de=Residenzschloss Dresden|name:en=Dresden Castle");
    21         assertEquals("[[wikipedia:de, Residenzschloss Dresden], [name:en, Dresden Castle]]", Arrays.deepToString(strings));
     30        Map<String, String> strings = AddTagsDialog.parseUrlTagsToKeyValues("wikipedia:de=Residenzschloss Dresden|name:en=Dresden Castle");
     31        assertEquals(2, strings.size());
     32        assertEquals("Residenzschloss Dresden", strings.get("wikipedia:de"));
     33        assertEquals("Dresden Castle", strings.get("name:en"));
    2234    }
    2335}
Note: See TracChangeset for help on using the changeset viewer.