Changeset 15846 in josm for trunk/src


Ignore:
Timestamp:
2020-02-12T07:15:15+01:00 (5 years ago)
Author:
GerdP
Message:

fix #18701: Simplify MultiFetchServerObjectReader implementation

Location:
trunk/src/org/openstreetmap/josm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesTask.java

    r15811 r15846  
    5656        getProgressMonitor().indeterminateSubTask(tr("Initializing nodes to download ..."));
    5757        reader.setRecurseDownRelations(fullRelation);
    58         reader.appendIds(ids);
     58        if (ids != null) {
     59            ids.forEach(reader::append);
     60        }
    5961    }
    6062}
  • trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java

    r15811 r15846  
    5252 * <pre>
    5353 *    MultiFetchServerObjectReader reader = MultiFetchServerObjectReader()
    54  *         .append(2345,2334,4444)
    5554 *         .append(new Node(72343));
    5655 *    reader.parseOsm();
     
    132131     * @param id  the id
    133132     */
    134     protected void remember(PrimitiveId id) {
     133    public void append(PrimitiveId id) {
    135134        if (id.isNew()) return;
    136135        switch(id.getType()) {
     
    153152    public MultiFetchServerObjectReader append(DataSet ds, long id, OsmPrimitiveType type) {
    154153        OsmPrimitive p = ds.getPrimitiveById(id, type);
    155         switch(type) {
    156         case NODE:
    157             return appendNode((Node) p);
    158         case WAY:
    159             return appendWay((Way) p);
    160         case RELATION:
    161             return appendRelation((Relation) p);
    162         default:
    163             return this;
    164         }
     154        return append(p);
    165155    }
    166156
     
    173163    public MultiFetchServerObjectReader appendNode(Node node) {
    174164        if (node == null || node.isNew()) return this;
    175         remember(node.getPrimitiveId());
     165        append(node.getPrimitiveId());
    176166        return this;
    177167    }
     
    186176        if (way == null || way.isNew()) return this;
    187177        if (recurseDownAppended) {
    188             for (Node node : way.getNodes()) {
    189                 if (!node.isNew()) {
    190                     remember(node.getPrimitiveId());
    191                 }
    192             }
    193         }
    194         remember(way.getPrimitiveId());
     178            append(way.getNodes());
     179        }
     180        append(way.getPrimitiveId());
    195181        return this;
    196182    }
     
    204190    protected MultiFetchServerObjectReader appendRelation(Relation relation) {
    205191        if (relation == null || relation.isNew()) return this;
    206         remember(relation.getPrimitiveId());
     192        append(relation.getPrimitiveId());
    207193        if (recurseDownAppended) {
    208194            for (RelationMember member : relation.getMembers()) {
     
    246232    public MultiFetchServerObjectReader append(Collection<? extends OsmPrimitive> primitives) {
    247233        if (primitives == null) return this;
    248         for (OsmPrimitive primitive : primitives) {
    249             append(primitive);
    250         }
    251         return this;
    252     }
    253 
    254     /**
    255      * appends a list of {@link PrimitiveId} to the list of ids which will be fetched from the server.
    256      *
    257      * @param ids the list of primitive Ids (ignored, if null)
    258      * @return this
    259      * @since 15811
    260      *
    261      */
    262     public MultiFetchServerObjectReader appendIds(Collection<PrimitiveId> ids) {
    263         if (ids == null)
    264             return this;
    265         for (PrimitiveId id : ids) {
    266             if (id.isNew()) continue;
    267             switch (id.getType()) {
    268             case NODE:
    269                 nodes.add(id.getUniqueId());
    270                 break;
    271             case WAY:
    272             case CLOSEDWAY:
    273                 ways.add(id.getUniqueId());
    274                 break;
    275             case MULTIPOLYGON:
    276             case RELATION:
    277                 relations.add(id.getUniqueId());
    278                 break;
    279             default:
    280                 throw new AssertionError();
    281             }
    282         }
     234        primitives.forEach(this::append);
    283235        return this;
    284236    }
Note: See TracChangeset for help on using the changeset viewer.