Ignore:
Timestamp:
2020-01-13T21:45:29+01:00 (5 years ago)
Author:
simon04
Message:

JOSM/comfort0: 2020 compatibility

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/comfort0/src/net/simon04/comfort0/OsmToLevel0L.java

    r35282 r35289  
    11package net.simon04.comfort0;
    22
    3 import java.util.Collections;
    4 import java.util.List;
     3import java.util.Collection;
    54
    65import org.openstreetmap.josm.data.coor.LatLon;
    7 import org.openstreetmap.josm.data.osm.AbstractPrimitive;
    8 import org.openstreetmap.josm.data.osm.Changeset;
     6import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
     7import org.openstreetmap.josm.data.osm.KeyValueVisitor;
    98import org.openstreetmap.josm.data.osm.Node;
    109import org.openstreetmap.josm.data.osm.OsmPrimitive;
     
    1211import org.openstreetmap.josm.data.osm.Relation;
    1312import org.openstreetmap.josm.data.osm.RelationMember;
     13import org.openstreetmap.josm.data.osm.Tagged;
    1414import org.openstreetmap.josm.data.osm.Way;
    15 import org.openstreetmap.josm.data.osm.visitor.Visitor;
    16 import org.openstreetmap.josm.gui.DefaultNameFormatter;
     15import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
    1716
    18 public class OsmToLevel0L implements Visitor, AbstractPrimitive.KeyValueVisitor {
     17/**
     18 * Implements a conversion from {@link OsmPrimitive} to <a href="https://wiki.openstreetmap.org/wiki/Level0L">Level0L</a>.
     19 */
     20public class OsmToLevel0L implements OsmPrimitiveVisitor, KeyValueVisitor {
    1921
    2022    private final StringBuilder sb = new StringBuilder();
    2123
    22     public void visit(List<OsmPrimitive> primitives) {
    23         Collections.sort(primitives, new OsmPrimitiveComparator());
    24         for (OsmPrimitive primitive : primitives) {
    25             primitive.accept(this);
    26         }
     24    public void visit(Collection<OsmPrimitive> primitives) {
     25        primitives.stream()
     26                .sorted(OsmPrimitiveComparator.orderingWaysRelationsNodes().thenComparing(OsmPrimitiveComparator.comparingUniqueId()))
     27                .forEachOrdered(p -> p.accept(this));
    2728    }
    2829
     
    5657                    sb.append("rel ");
    5758                    break;
     59                default:
     60                    break;
    5861            }
    5962            sb.append(member.getUniqueId()).append(" ");
     
    6669        sb.append("\n");
    6770        sb.append(p.getType().getAPIName()).append(" ").append(p.getUniqueId());
    68         if (p instanceof Node && ((Node) p).isLatLonKnown()) {
    69             final LatLon coor = ((Node) p).getCoor();
    70             sb.append(": ").append(coor.lat()).append(", ").append(coor.lon());
     71        if (p instanceof Node) {
     72            final LatLon latLon = ((Node) p).getCoor();
     73            if (latLon != null) {
     74                sb.append(": ").append(latLon.lat()).append(", ").append(latLon.lon());
     75            }
    7176        }
    7277        appendDisplayName(p);
     
    7984
    8085    @Override
    81     public void visit(Changeset cs) {
    82     }
    83 
    84     @Override
    85     public void visitKeyValue(AbstractPrimitive primitive, String key, String value) {
     86    public void visitKeyValue(Tagged primitive, String key, String value) {
    8687        if (key.contains("#") || key.contains("=")) {
    8788            throw new UnsupportedOperationException("# and = are not supported in keys");
Note: See TracChangeset for help on using the changeset viewer.