Changeset 15152 in josm


Ignore:
Timestamp:
2019-06-02T15:25:38+02:00 (5 years ago)
Author:
Don-vip
Message:

more uses of Java 8 stream API

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

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java

    r14397 r15152  
    1818import java.util.Map;
    1919import java.util.Set;
     20import java.util.stream.Collectors;
    2021
    2122import javax.swing.JOptionPane;
     
    367368
    368369        // put the nodes of all ways in a set
    369         final Set<Node> allNodes = new HashSet<>();
    370         for (WayData w : wayDataList) {
    371             allNodes.addAll(w.wayNodes);
    372         }
     370        final Set<Node> allNodes = wayDataList.stream().flatMap(w -> w.wayNodes.stream()).collect(Collectors.toSet());
    373371
    374372        // the new x and y value for each node
  • trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java

    r14971 r15152  
    229229        if (newNodes.size() == w.getNodesCount()) return null;
    230230
    231         Set<Node> delNodes = new HashSet<>();
    232         delNodes.addAll(w.getNodes());
     231        Set<Node> delNodes = new HashSet<>(w.getNodes());
    233232        delNodes.removeAll(newNodes);
    234233
  • trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java

    r14706 r15152  
    1717import java.util.Map;
    1818import java.util.Set;
     19import java.util.stream.Collectors;
    1920
    2021import javax.swing.JOptionPane;
     
    610611    }
    611612
    612     protected void notifyWayPartOfRelation(final Iterable<Way> ways) {
    613         final Set<String> affectedRelations = new HashSet<>();
    614         for (Way way : ways) {
    615             for (OsmPrimitive ref : way.getReferrers()) {
    616                 if (ref instanceof Relation && ref.isUsable()) {
    617                     affectedRelations.add(ref.getDisplayName(DefaultNameFormatter.getInstance()));
    618                 }
    619             }
    620         }
     613    protected void notifyWayPartOfRelation(final Collection<Way> ways) {
     614        final Set<String> affectedRelations = ways.stream()
     615                .flatMap(w -> w.getReferrers().stream())
     616                .filter(ref -> ref instanceof Relation && ref.isUsable())
     617                .map(ref -> ref.getDisplayName(DefaultNameFormatter.getInstance()))
     618                .collect(Collectors.toSet());
    621619        if (affectedRelations.isEmpty()) {
    622620            return;
    623621        }
    624622
     623        final int size = affectedRelations.size();
    625624        final String msg1 = trn("Unglueing affected {0} relation: {1}", "Unglueing affected {0} relations: {1}",
    626                 affectedRelations.size(), affectedRelations.size(), Utils.joinAsHtmlUnorderedList(affectedRelations));
     625                size, size, Utils.joinAsHtmlUnorderedList(affectedRelations));
    627626        final String msg2 = trn("Ensure that the relation has not been broken!", "Ensure that the relations have not been broken!",
    628                 affectedRelations.size());
     627                size);
    629628        new Notification("<html>" + msg1 + msg2).setIcon(JOptionPane.WARNING_MESSAGE).show();
    630629    }
  • trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java

    r14397 r15152  
    1212import java.util.Set;
    1313import java.util.Stack;
     14import java.util.stream.Collectors;
    1415
    1516import javax.swing.JOptionPane;
     
    7071
    7172    protected Set<OsmPrimitive> getDeletedPrimitives(DataSet ds) {
    72         Set<OsmPrimitive> ret = new HashSet<>();
    73         for (OsmPrimitive p: ds.allPrimitives()) {
    74             if (p.isDeleted() && !p.isNew() && p.isVisible() && p.isModified()) {
    75                 ret.add(p);
    76             }
    77         }
    78         return ret;
     73        return ds.allPrimitives().stream()
     74                .filter(p -> p.isDeleted() && !p.isNew() && p.isVisible() && p.isModified())
     75                .collect(Collectors.toSet());
    7976    }
    8077
    8178    protected Set<OsmPrimitive> getModifiedPrimitives(Collection<OsmPrimitive> primitives) {
    82         Set<OsmPrimitive> ret = new HashSet<>();
    83         for (OsmPrimitive p: primitives) {
    84             if (p.isNewOrUndeleted() || (p.isModified() && !p.isIncomplete())) {
    85                 ret.add(p);
    86             }
    87         }
    88         return ret;
     79        return primitives.stream()
     80                .filter(p -> p.isNewOrUndeleted() || (p.isModified() && !p.isIncomplete()))
     81                .collect(Collectors.toSet());
    8982    }
    9083
     
    292285         */
    293286        protected Set<OsmPrimitive> getPrimitivesToCheckForParents() {
    294             Set<OsmPrimitive> ret = new HashSet<>();
    295             for (OsmPrimitive p: toUpload) {
    296                 if (p.isDeleted() && !p.isNewOrUndeleted()) {
    297                     ret.add(p);
    298                 }
    299             }
    300             return ret;
     287            return toUpload.stream().filter(p -> p.isDeleted() && !p.isNewOrUndeleted()).collect(Collectors.toSet());
    301288        }
    302289
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetHeaderDownloadTask.java

    r14154 r15152  
    99import java.util.Collections;
    1010import java.util.HashSet;
     11import java.util.Objects;
    1112import java.util.Set;
     13import java.util.stream.Collectors;
    1214
    1315import org.openstreetmap.josm.data.osm.Changeset;
     
    1618import org.openstreetmap.josm.gui.MainApplication;
    1719import org.openstreetmap.josm.io.OsmTransferException;
    18 import org.openstreetmap.josm.tools.CheckParameterUtil;
    1920import org.xml.sax.SAXException;
    2021
     
    134135     * @param changesets the collection of changesets. Assumes an empty collection if null.
    135136     * @return the download task
    136      * @throws IllegalArgumentException if parent is null
     137     * @throws NullPointerException if parent is null
    137138     */
    138139    public static ChangesetHeaderDownloadTask buildTaskForChangesets(Component parent, Collection<Changeset> changesets) {
    139         CheckParameterUtil.ensureParameterNotNull(parent, "parent");
    140 
    141         Set<Integer> ids = new HashSet<>();
    142         for (Changeset cs: changesets != null ? changesets : Collections.<Changeset>emptyList()) {
    143             if (cs == null || cs.isNew()) {
    144                 continue;
    145             }
    146             ids.add(cs.getId());
    147         }
    148         return new ChangesetHeaderDownloadTask(parent, ids);
     140        return new ChangesetHeaderDownloadTask(Objects.requireNonNull(parent, "parent"),
     141                changesets == null ? Collections.<Integer>emptySet() :
     142                    changesets.stream().filter(cs -> cs != null && !cs.isNew()).map(Changeset::getId).collect(Collectors.toSet()));
    149143    }
    150144}
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java

    r14153 r15152  
    99import java.util.Collection;
    1010import java.util.HashMap;
    11 import java.util.HashSet;
    1211import java.util.Map;
    1312import java.util.Map.Entry;
    1413import java.util.Set;
     14import java.util.stream.Collectors;
    1515
    1616import javax.swing.JOptionPane;
     
    148148        Collection<Way> ways = ds.getWays();
    149149
    150         DataSetMerger merger;
    151150        if (!ways.isEmpty()) {
    152             Set<Node> nodes = new HashSet<>();
    153             for (Way w: ways) {
    154                 // Ensure each node is only listed once
    155                 nodes.addAll(w.getNodes());
    156             }
     151            // Ensure each node is only listed once
     152            Set<Node> nodes = ways.stream().flatMap(w -> w.getNodes().stream()).collect(Collectors.toSet());
    157153            // Don't retrieve any nodes we've already grabbed
    158154            nodes.removeAll(targetLayer.data.getNodes());
     
    164160                    reader = null;
    165161                }
    166                 merger = new DataSetMerger(ds, wayNodes);
    167                 merger.merge();
     162                new DataSetMerger(ds, wayNodes).merge();
    168163            }
    169164        }
    170         merger = new DataSetMerger(parents, ds);
    171         merger.merge();
     165        new DataSetMerger(parents, ds).merge();
    172166    }
    173167
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java

    r14153 r15152  
    1111import java.util.ArrayList;
    1212import java.util.Collection;
    13 import java.util.HashSet;
    1413import java.util.LinkedHashSet;
    1514import java.util.LinkedList;
    1615import java.util.List;
     16import java.util.Objects;
    1717import java.util.Set;
    1818import java.util.concurrent.CancellationException;
    1919import java.util.concurrent.ExecutionException;
    2020import java.util.concurrent.Future;
     21import java.util.stream.Collectors;
    2122
    2223import javax.swing.JOptionPane;
     
    126127     */
    127128    protected Set<OsmPrimitive> getCompletePrimitives(DataSet ds) {
    128         Set<OsmPrimitive> ret = new HashSet<>();
    129         for (OsmPrimitive primitive : ds.allPrimitives()) {
    130             if (!primitive.isIncomplete() && !primitive.isNew()) {
    131                 ret.add(primitive);
    132             }
    133         }
    134         return ret;
     129        return ds.allPrimitives().stream().filter(p -> !p.isIncomplete() && !p.isNew()).collect(Collectors.toSet());
    135130    }
    136131
     
    210205     */
    211206    public Set<OsmPrimitive> getDownloadedPrimitives() {
    212         Set<OsmPrimitive> ret = new HashSet<>();
    213         for (DownloadTask task : tasks) {
    214             if (task instanceof DownloadOsmTask) {
    215                 DataSet ds = ((DownloadOsmTask) task).getDownloadedData();
    216                 if (ds != null) {
    217                     ret.addAll(ds.allPrimitives());
    218                 }
    219             }
    220         }
    221         return ret;
     207        return tasks.stream()
     208                .filter(t -> t instanceof DownloadOsmTask)
     209                .map(t -> ((DownloadOsmTask) t).getDownloadedData())
     210                .filter(Objects::nonNull)
     211                .flatMap(ds -> ds.allPrimitives().stream())
     212                .collect(Collectors.toSet());
    222213    }
    223214
  • trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java

    r15126 r15152  
    202202            return;
    203203
    204         Set<OsmPrimitive> newHighlights = new HashSet<>();
    205204        DeleteParameters parameters = getDeleteParameters(e, modifiers);
    206205
     
    208207            // deleting segments is the only action not working on OsmPrimitives
    209208            // so we have to handle them separately.
    210             repaintIfRequired(newHighlights, parameters.nearestSegment);
     209            repaintIfRequired(Collections.emptySet(), parameters.nearestSegment);
    211210        } else {
    212211            // don't call buildDeleteCommands for DeleteMode.segment because it doesn't support
    213212            // silent operation and SplitWayAction will show dialogs. A lot.
    214213            Command delCmd = buildDeleteCommands(e, modifiers, true);
    215             if (delCmd != null) {
    216                 // all other cases delete OsmPrimitives directly, so we can safely do the following
    217                 for (OsmPrimitive osm : delCmd.getParticipatingPrimitives()) {
    218                     newHighlights.add(osm);
    219                 }
    220             }
    221             repaintIfRequired(newHighlights, null);
     214            // all other cases delete OsmPrimitives directly, so we can safely do the following
     215            repaintIfRequired(delCmd == null ? Collections.emptySet() : new HashSet<>(delCmd.getParticipatingPrimitives()), null);
    222216        }
    223217    }
  • trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java

    r13957 r15152  
    66import java.awt.event.ActionEvent;
    77import java.util.Collection;
    8 import java.util.HashSet;
    98import java.util.Set;
     9import java.util.stream.Collectors;
    1010
    1111import org.openstreetmap.josm.data.osm.IPrimitive;
     
    4242     */
    4343    public static Set<IPrimitive> buildSetOfIncompleteMembers(Collection<IRelation<?>> rels) {
    44         Set<IPrimitive> ret = new HashSet<>();
    45         for (IRelation<?> r : rels) {
    46             ret.addAll(SubclassFilteredCollection.filter(r.getIncompleteMembers(), osm -> !osm.isNew()));
    47         }
    48         return ret;
     44        return rels.stream()
     45                .flatMap(r -> SubclassFilteredCollection.filter(r.getIncompleteMembers(), osm -> !osm.isNew()).stream())
     46                .collect(Collectors.toSet());
    4947    }
    5048
  • trunk/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java

    r14153 r15152  
    77import java.awt.event.ActionEvent;
    88import java.util.Collection;
    9 import java.util.HashSet;
     9import java.util.Collections;
    1010import java.util.Set;
     11import java.util.stream.Collectors;
    1112
    1213import javax.swing.JOptionPane;
     
    4647     */
    4748    public static Set<RelationMember> getMembersForCurrentSelection(Relation r) {
    48         Set<RelationMember> members = new HashSet<>();
    4949        if (MainApplication.isDisplayingMapView()) {
    5050            OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
    5151            if (editLayer != null && editLayer.data != null) {
    5252                Collection<OsmPrimitive> selection = editLayer.data.getSelected();
    53                 for (RelationMember member: r.getMembers()) {
    54                     if (selection.contains(member.getMember())) {
    55                         members.add(member);
    56                     }
    57                 }
     53                return r.getMembers().stream().filter(m -> selection.contains(m.getMember())).collect(Collectors.toSet());
    5854            }
    5955        }
    60         return members;
     56        return Collections.emptySet();
    6157    }
    6258
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java

    r13929 r15152  
    44import static org.openstreetmap.josm.tools.I18n.tr;
    55
    6 import java.util.Collection;
    7 import java.util.HashSet;
    86import java.util.LinkedList;
    97import java.util.List;
     8import java.util.stream.Collectors;
    109
    1110import org.openstreetmap.josm.data.osm.DataSet;
    12 import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1311import org.openstreetmap.josm.data.osm.PrimitiveId;
    1412import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
     
    7573                if (downloaded != null) {
    7674                    GuiHelper.runInEDT(() -> ds.setSelected(downloaded));
    77                     Collection<OsmPrimitive> downlPrim = new HashSet<>();
    78                     for (PrimitiveId id : downloaded) {
    79                         downlPrim.add(ds.getPrimitiveById(id));
    80                     }
    81                     AddTagsDialog.addTags(args, sender, downlPrim);
     75                    AddTagsDialog.addTags(args, sender, downloaded.stream().map(ds::getPrimitiveById).collect(Collectors.toSet()));
    8276                }
    8377                ps.clear();
Note: See TracChangeset for help on using the changeset viewer.