Ignore:
Timestamp:
2020-02-06T01:03:07+01:00 (4 years ago)
Author:
Don-vip
Message:

fix #18654 - Separate unique identifiers per primitive type

This allows to easily update .osm files with negative ids across multiple sessions, such as internal JOSM boundaries file.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitiveType.java

    r13766 r15820  
    1616
    1717    /** Node type */
    18     NODE(marktr(/* ICON(data/) */"node"), Node.class, NodeData.class),
     18    NODE(marktr(/* ICON(data/) */"node"), Node.class, NodeData.class, Node.idGenerator),
    1919    /** Way type */
    20     WAY(marktr(/* ICON(data/) */"way"), Way.class, WayData.class),
     20    WAY(marktr(/* ICON(data/) */"way"), Way.class, WayData.class, Way.idGenerator),
    2121    /** Relation type */
    22     RELATION(marktr(/* ICON(data/) */"relation"), Relation.class, RelationData.class),
     22    RELATION(marktr(/* ICON(data/) */"relation"), Relation.class, RelationData.class, Relation.idGenerator),
    2323
    2424    /** Closed way: only for display, no real type */
    25     CLOSEDWAY(marktr(/* ICON(data/) */"closedway"), null, WayData.class),
     25    CLOSEDWAY(marktr(/* ICON(data/) */"closedway"), null, WayData.class, Way.idGenerator),
    2626    /** Multipolygon: only for display, no real type */
    27     MULTIPOLYGON(marktr(/* ICON(data/) */"multipolygon"), null, RelationData.class);
     27    MULTIPOLYGON(marktr(/* ICON(data/) */"multipolygon"), null, RelationData.class, Relation.idGenerator);
    2828
    2929    private static final Collection<OsmPrimitiveType> DATA_VALUES = Arrays.asList(NODE, WAY, RELATION);
     
    3232    private final Class<? extends OsmPrimitive> osmClass;
    3333    private final Class<? extends PrimitiveData> dataClass;
     34    private final UniqueIdGenerator idGenerator;
    3435
    35     OsmPrimitiveType(String apiTypeName, Class<? extends OsmPrimitive> osmClass, Class<? extends PrimitiveData> dataClass) {
     36    OsmPrimitiveType(String apiTypeName, Class<? extends OsmPrimitive> osmClass, Class<? extends PrimitiveData> dataClass,
     37            UniqueIdGenerator idGenerator) {
    3638        this.apiTypeName = apiTypeName;
    3739        this.osmClass = osmClass;
    3840        this.dataClass = dataClass;
     41        this.idGenerator = idGenerator;
    3942    }
    4043
     
    154157    }
    155158
     159    /**
     160     * Returns the unique identifier generator.
     161     * @return the unique identifier generator
     162     * @since 15820
     163     */
     164    public final UniqueIdGenerator getIdGenerator() {
     165        return idGenerator;
     166    }
     167
    156168    @Override
    157169    public String toString() {
Note: See TracChangeset for help on using the changeset viewer.