Ignore:
Timestamp:
2017-07-27T20:09:31+02:00 (7 years ago)
Author:
giackserva
Message:

[pt_assistant] #josm15037

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/CreatePlatformNodeAction.java

    r33461 r33477  
    99import java.util.List;
    1010import java.util.Map.Entry;
     11import java.util.Set;
     12import java.util.SortedSet;
     13import java.util.TreeSet;
    1114
    1215import org.openstreetmap.josm.Main;
     
    2124import org.openstreetmap.josm.data.osm.TagCollection;
    2225import org.openstreetmap.josm.data.osm.Way;
     26import org.openstreetmap.josm.data.validation.routines.RegexValidator;
    2327import org.openstreetmap.josm.gui.conflict.tags.CombinePrimitiveResolverDialog;
    2428import org.openstreetmap.josm.tools.UserCancelException;
     
    7276        dummy3 = new Node(platformNode.getEastNorth());
    7377
     78        SortedSet<String> refs = new TreeSet<>();
     79
    7480        Main.main.undoRedo.add(new AddCommand(dummy1));
    7581        Main.main.undoRedo.add(new AddCommand(dummy2));
    7682        Main.main.undoRedo.add(new AddCommand(dummy3));
    7783
    78         populateMap(stopPositionNode);
    79         populateMap(platformNode);
     84        refs.addAll(populateMap(stopPositionNode));
     85        refs.addAll(populateMap(platformNode));
    8086
    8187        if (platformWay != null) {
    82             populateMap(platformWay);
     88            refs.addAll(populateMap(platformWay));
    8389            platformWay.removeAll();
    8490            platformWay.put("public_transport", "platform");
     
    9399        platformNode.put("public_transport", "platform");
    94100        platformNode.put("highway", "bus_stop");
     101        if (!refs.isEmpty()) {
     102            platformNode.put("route_ref", getRefs(refs));
     103        }
    95104
    96105        List<OsmPrimitive> prims = new ArrayList<>();
     
    114123    }
    115124
    116     public void populateMap(OsmPrimitive prim) {
     125    public List<String> populateMap(OsmPrimitive prim) {
    117126        List<String> unInterestingTags = new ArrayList<>();
    118127        unInterestingTags.add("public_transport");
     
    120129        unInterestingTags.add("source");
    121130
     131        List<String> refs = new ArrayList<>();
    122132        for (Entry<String, String> tag: prim.getKeys().entrySet()) {
    123             if (unInterestingTags.contains(tag.getKey())) {
     133            if ("note".equals(tag.getKey())
     134                    || "lines".equals(tag.getKey())) {
     135                refs.addAll(addRefs(tag.getValue()));
    124136                continue;
    125137            }
    126             if (dummy1.get(tag.getKey()) == null) {
    127                 dummy1.put(tag.getKey(), tag.getValue());
    128             } else if (dummy2.get(tag.getKey()) == null) {
    129                 dummy2.put(tag.getKey(), tag.getValue());
    130             } else if (dummy3.get(tag.getKey()) == null) {
    131                 dummy3.put(tag.getKey(), tag.getValue());
     138
     139            if (!unInterestingTags.contains(tag.getKey())) {
     140                if (dummy1.get(tag.getKey()) == null) {
     141                    dummy1.put(tag.getKey(), tag.getValue());
     142                } else if (dummy2.get(tag.getKey()) == null) {
     143                    dummy2.put(tag.getKey(), tag.getValue());
     144                } else if (dummy3.get(tag.getKey()) == null) {
     145                    dummy3.put(tag.getKey(), tag.getValue());
     146                }
    132147            }
    133148        }
     149        return refs;
     150    }
     151
     152    private List<String> addRefs(String value) {
     153        List<String> refs = new ArrayList<>();
     154        if (new RegexValidator("\\w+([,;].+)*").isValid(value)) {
     155            for (String ref : value.split("[,;]")) {
     156                refs.add(ref.trim());
     157            }
     158        }
     159        return refs;
     160    }
     161
     162    private String getRefs(Set<String> refs) {
     163        StringBuilder sb = new StringBuilder();
     164        if (refs.isEmpty())
     165            return sb.toString();
     166
     167        for (String ref : refs) {
     168            sb.append(ref).append(';');
     169        }
     170
     171        return sb.toString().substring(0, sb.length() - 1);
    134172    }
    135173
Note: See TracChangeset for help on using the changeset viewer.