Changeset 16436 in josm for trunk/src/org
- Timestamp:
- 2020-05-17T12:08:17+02:00 (4 years ago)
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 61 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/command/AddPrimitivesCommand.java
r15735 r16436 6 6 import java.util.ArrayList; 7 7 import java.util.Collection; 8 import java.util.HashSet;9 8 import java.util.List; 10 9 import java.util.Objects; … … 20 19 import org.openstreetmap.josm.data.osm.PrimitiveData; 21 20 import org.openstreetmap.josm.tools.CheckParameterUtil; 22 import org.openstreetmap.josm.tools.JosmRuntimeException;23 21 24 22 /** … … 160 158 return createdPrimitives; 161 159 162 Collection<OsmPrimitive> prims = new HashSet<>(); 163 for (PrimitiveData d : data) { 164 prims.add(Optional.ofNullable(getAffectedDataSet().getPrimitiveById(d)).orElseThrow( 165 () -> new JosmRuntimeException("No primitive found for " + d))); 166 } 167 return prims; 160 return data.stream() 161 .map(d -> Objects.requireNonNull(getAffectedDataSet().getPrimitiveById(d), () -> "No primitive found for " + d)) 162 .collect(Collectors.toSet()); 168 163 } 169 164 -
trunk/src/org/openstreetmap/josm/command/ChangePropertyCommand.java
r15905 r16436 229 229 } 230 230 } else { 231 boolean allnull = true; 232 for (Map.Entry<String, String> tag : this.tags.entrySet()) { 233 if (tag.getValue() != null && !tag.getValue().isEmpty()) { 234 allnull = false; 235 break; 236 } 237 } 238 239 if (allnull) { 231 boolean allNull = this.tags.entrySet().stream() 232 .allMatch(tag -> tag.getValue() == null || tag.getValue().isEmpty()); 233 234 if (allNull) { 240 235 /* I18n: plural form detected for objects only (but value < 2 not possible!), try to do your best for tags */ 241 236 text = trn("Deleted {0} tags for {1} object", "Deleted {0} tags for {1} objects", objects.size(), tags.size(), objects.size()); -
trunk/src/org/openstreetmap/josm/command/DeleteCommand.java
r15874 r16436 10 10 import java.util.Collection; 11 11 import java.util.Collections; 12 import java.util.EnumSet;13 12 import java.util.HashMap; 14 13 import java.util.HashSet; … … 224 223 } 225 224 226 private EnumSet<OsmPrimitiveType> getTypesToDelete() { 227 EnumSet<OsmPrimitiveType> typesToDelete = EnumSet.noneOf(OsmPrimitiveType.class); 228 for (OsmPrimitive osm : toDelete) { 229 typesToDelete.add(OsmPrimitiveType.from(osm)); 230 } 231 return typesToDelete; 225 private Set<OsmPrimitiveType> getTypesToDelete() { 226 return toDelete.stream().map(OsmPrimitiveType::from).collect(Collectors.toSet()); 232 227 } 233 228 … … 278 273 return null; 279 274 else { 280 List<PseudoCommand> children = new ArrayList<>(toDelete.size()); 281 for (final OsmPrimitive osm : toDelete) { 282 children.add(new DeleteChildCommand(osm)); 283 } 284 return children; 285 275 return toDelete.stream().map(DeleteChildCommand::new).collect(Collectors.toList()); 286 276 } 287 277 } … … 369 359 Collection<OsmPrimitive> referringPrimitives = n.getReferrers(); 370 360 referringPrimitives.removeAll(primitivesToDelete); 371 int count = 0; 372 for (OsmPrimitive p : referringPrimitives) { 373 if (!p.isDeleted()) { 374 count++; 375 } 376 } 377 if (count == 0) { 361 if (referringPrimitives.stream().allMatch(OsmPrimitive::isDeleted)) { 378 362 nodesToDelete.add(n); 379 363 } -
trunk/src/org/openstreetmap/josm/command/PurgeCommand.java
r16187 r16436 13 13 import java.util.Objects; 14 14 import java.util.Set; 15 import java.util.stream.Collectors; 15 16 16 17 import javax.swing.Icon; … … 26 27 import org.openstreetmap.josm.data.osm.Relation; 27 28 import org.openstreetmap.josm.data.osm.RelationData; 28 import org.openstreetmap.josm.data.osm.RelationMember;29 29 import org.openstreetmap.josm.data.osm.Storage; 30 30 import org.openstreetmap.josm.data.osm.Way; … … 222 222 } 223 223 } 224 Set<Relation> childlessR = new HashSet<>(); 225 for (Relation r : inR) { 226 if (numChilds.get(r).equals(0)) { 227 childlessR.add(r); 228 } 229 } 224 Set<Relation> childlessR = inR.stream().filter(r -> numChilds.get(r).equals(0)).collect(Collectors.toSet()); 230 225 231 226 List<Relation> outR = new ArrayList<>(inR.size()); … … 409 404 private static boolean hasOnlyIncompleteMembers( 410 405 Relation r, Collection<OsmPrimitive> toPurge, Collection<? extends OsmPrimitive> moreToPurge) { 411 for (RelationMember m : r.getMembers()) { 412 if (!m.getMember().isIncomplete() && !toPurge.contains(m.getMember()) && !moreToPurge.contains(m.getMember())) 413 return false; 414 } 415 return true; 406 return r.getMembers().stream() 407 .allMatch(m -> m.getMember().isIncomplete() || toPurge.contains(m.getMember()) || moreToPurge.contains(m.getMember())); 416 408 } 417 409 } -
trunk/src/org/openstreetmap/josm/command/conflict/TagConflictResolveCommand.java
r14214 r16436 34 34 */ 35 35 public int getNumDecidedConflicts() { 36 int n = 0; 37 for (TagMergeItem item: mergeItems) { 38 if (item.getMergeDecision() != MergeDecisionType.UNDECIDED) { 39 n++; 40 } 41 } 42 return n; 36 return (int) mergeItems.stream().filter(item -> item.getMergeDecision() != MergeDecisionType.UNDECIDED).count(); 43 37 } 44 38 -
trunk/src/org/openstreetmap/josm/data/APIDataSet.java
r13164 r16436 267 267 List<Relation> ret = new LinkedList<>(); 268 268 for (Relation relation: relations) { 269 boolean refersToNewRelation = false; 270 for (RelationMember m : relation.getMembers()) { 271 if (m.isRelation() && m.getMember().isNewOrUndeleted()) { 272 refersToNewRelation = true; 273 break; 274 } 275 } 269 boolean refersToNewRelation = relation.getMembers().stream() 270 .anyMatch(m -> m.isRelation() && m.getMember().isNewOrUndeleted()); 276 271 if (!refersToNewRelation) { 277 272 ret.add(relation); -
trunk/src/org/openstreetmap/josm/data/DataSource.java
r11634 r16436 4 4 import java.awt.geom.Area; 5 5 import java.awt.geom.Path2D; 6 import java.util.ArrayList;7 6 import java.util.Collection; 8 7 import java.util.List; 9 8 import java.util.Objects; 9 import java.util.stream.Collectors; 10 10 11 11 import org.openstreetmap.josm.tools.CheckParameterUtil; … … 104 104 return null; 105 105 } 106 List<Bounds> ret = new ArrayList<>(dataSources.size()); 107 for (DataSource ds : dataSources) { 108 if (ds.bounds != null) { 109 ret.add(ds.bounds); 110 } 111 } 112 return ret; 106 return dataSources.stream() 107 .filter(ds -> ds.bounds != null).map(ds -> ds.bounds) 108 .collect(Collectors.toList()); 113 109 } 114 110 } -
trunk/src/org/openstreetmap/josm/data/ImageData.java
r15352 r16436 10 10 11 11 import org.openstreetmap.josm.data.coor.LatLon; 12 import org.openstreetmap.josm.data.gpx.GpxImageEntry; 12 13 import org.openstreetmap.josm.gui.layer.geoimage.ImageEntry; 13 14 import org.openstreetmap.josm.tools.ListenerList; … … 75 76 */ 76 77 public boolean isModified() { 77 for (ImageEntry e : data) { 78 if (e.hasNewGpsData()) { 79 return true; 80 } 81 } 82 return false; 78 return data.stream().anyMatch(GpxImageEntry::hasNewGpsData); 83 79 } 84 80 -
trunk/src/org/openstreetmap/josm/data/StructUtils.java
r15906 r16436 123 123 if (l == null) 124 124 return null; 125 List<Map<String, String>> vals = new ArrayList<>(); 126 for (T struct : l) { 127 if (struct != null) { 128 vals.add(serializeStruct(struct, klass)); 129 } 130 } 131 return vals; 125 return l.stream().filter(Objects::nonNull) 126 .map(struct -> serializeStruct(struct, klass)).collect(Collectors.toList()); 132 127 } 133 128 -
trunk/src/org/openstreetmap/josm/data/Version.java
r14480 r16436 6 6 import java.io.IOException; 7 7 import java.io.InputStream; 8 import java.util.Map.Entry;9 8 import java.util.Optional; 10 9 import java.util.Properties; 10 import java.util.stream.Collectors; 11 11 12 12 import org.openstreetmap.josm.tools.LanguageInfo; … … 94 94 // the revision info 95 95 // 96 StringBuilder sb = new StringBuilder(); 97 for (Entry<Object, Object> property: properties.entrySet()) { 98 sb.append(property.getKey()).append(':').append(property.getValue()).append('\n'); 99 } 100 releaseDescription = sb.toString(); 96 releaseDescription = properties.entrySet().stream() 97 .map(property -> property.getKey() + ":" + property.getValue() + "\n") 98 .collect(Collectors.joining()); 101 99 } 102 100 -
trunk/src/org/openstreetmap/josm/data/gpx/GpxData.java
r15760 r16436 380 380 381 381 private boolean anySegmentOverlapsWith(GpxTrackSegmentSpan other) { 382 for (GpxTrackSegmentSpan s : getSegmentSpans()) { 383 if (s.overlapsWith(other)) { 384 return true; 385 } 386 } 387 return false; 382 return getSegmentSpans().stream().anyMatch(s -> s.overlapsWith(other)); 388 383 } 389 384 -
trunk/src/org/openstreetmap/josm/data/gpx/GpxExtension.java
r15629 r16436 136 136 return this; 137 137 } else { 138 for (GpxExtension child : getExtensions()) { 139 GpxExtension ext = child.findExtension(sPrefix, sKey); 140 if (ext != null) { 141 return ext; 142 } 143 } 144 return null; 138 return getExtensions().stream() 139 .map(child -> child.findExtension(sPrefix, sKey)) 140 .filter(Objects::nonNull) 141 .findFirst().orElse(null); 145 142 } 146 143 } -
trunk/src/org/openstreetmap/josm/data/gpx/GpxExtensionCollection.java
r16398 r16436 202 202 */ 203 203 public GpxExtension find(String prefix, String key) { 204 for (GpxExtension child : this) { 205 GpxExtension ext = child.findExtension(prefix, key); 206 if (ext != null) { 207 return ext; 208 } 209 } 210 return null; 204 return this.stream() 205 .map(child -> child.findExtension(prefix, key)).filter(Objects::nonNull) 206 .findFirst().orElse(null); 211 207 } 212 208 -
trunk/src/org/openstreetmap/josm/data/gpx/GpxTrack.java
r15560 r16436 3 3 4 4 import java.awt.Color; 5 import java.util.ArrayList;6 5 import java.util.Collection; 7 6 import java.util.Collections; … … 15 14 import org.openstreetmap.josm.tools.ListenerList; 16 15 import org.openstreetmap.josm.tools.Logging; 16 import org.openstreetmap.josm.tools.StreamUtils; 17 17 18 18 /** … … 37 37 */ 38 38 public GpxTrack(Collection<Collection<WayPoint>> trackSegs, Map<String, Object> attributes) { 39 List<IGpxTrackSegment> newSegments = new ArrayList<>(); 40 for (Collection<WayPoint> trackSeg: trackSegs) { 41 if (trackSeg != null && !trackSeg.isEmpty()) { 42 newSegments.add(new GpxTrackSegment(trackSeg)); 43 } 44 } 45 this.segments = Collections.unmodifiableList(newSegments); 39 this.segments = trackSegs.stream() 40 .filter(trackSeg -> trackSeg != null && !trackSeg.isEmpty()) 41 .map(GpxTrackSegment::new) 42 .collect(StreamUtils.toUnmodifiableList()); 46 43 this.length = calculateLength(); 47 44 this.bounds = calculateBounds(); … … 65 62 66 63 private double calculateLength() { 67 double result = 0.0; // in meters 68 69 for (IGpxTrackSegment trkseg : segments) { 70 result += trkseg.length(); 71 } 72 return result; 64 return segments.stream().mapToDouble(IGpxTrackSegment::length).sum(); 73 65 } 74 66 -
trunk/src/org/openstreetmap/josm/data/imagery/GetCapabilitiesParseHelper.java
r15586 r16436 5 5 import java.net.MalformedURLException; 6 6 import java.net.URL; 7 import java.util.Arrays; 7 8 import java.util.Locale; 8 9 import java.util.function.BiPredicate; … … 35 36 36 37 static TransferMode fromString(String s) { 37 for (TransferMode type : TransferMode.values()) { 38 if (type.getTypeString().equals(s)) { 39 return type; 40 } 41 } 42 return null; 38 return Arrays.stream(TransferMode.values()) 39 .filter(type -> type.getTypeString().equals(s)) 40 .findFirst().orElse(null); 43 41 } 44 42 } -
trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
r16130 r16436 48 48 import org.openstreetmap.josm.tools.Logging; 49 49 import org.openstreetmap.josm.tools.MultiMap; 50 import org.openstreetmap.josm.tools.StreamUtils; 50 51 import org.openstreetmap.josm.tools.Utils; 51 52 … … 95 96 */ 96 97 public static ImageryType fromString(String s) { 97 for (ImageryType type : ImageryType.values()) { 98 if (type.getTypeString().equals(s)) { 99 return type; 100 } 101 } 102 return null; 98 return Arrays.stream(ImageryType.values()) 99 .filter(type -> type.getTypeString().equals(s)) 100 .findFirst().orElse(null); 103 101 } 104 102 } … … 170 168 */ 171 169 public static ImageryCategory fromString(String s) { 172 for (ImageryCategory category : ImageryCategory.values()) { 173 if (category.getCategoryString().equals(s)) { 174 return category; 175 } 176 } 177 return null; 170 return Arrays.stream(ImageryCategory.values()) 171 .filter(category -> category.getCategoryString().equals(s)) 172 .findFirst().orElse(null); 178 173 } 179 174 } … … 403 398 if (i.bounds != null) { 404 399 bounds = i.bounds.encodeAsString(","); 405 StringBuilder shapesString = new StringBuilder(); 406 for (Shape s : i.bounds.getShapes()) { 407 if (shapesString.length() > 0) { 408 shapesString.append(';'); 409 } 410 shapesString.append(s.encodeAsString(",")); 411 } 412 if (shapesString.length() > 0) { 413 shapes = shapesString.toString(); 400 String shapesString = Shape.encodeAsString(i.bounds.getShapes()); 401 if (!shapesString.isEmpty()) { 402 shapes = shapesString; 414 403 } 415 404 } … … 1093 1082 */ 1094 1083 public static Collection<String> getActiveIds() { 1095 ArrayList<String> ids = new ArrayList<>();1096 1084 IPreferences pref = Config.getPref(); 1097 if (pref != null) {1098 List<ImageryPreferenceEntry> entries = StructUtils.getListOfStructs(1099 pref, "imagery.entries", null, ImageryPreferenceEntry.class);1100 if (entries != null) {1101 for (ImageryPreferenceEntry prefEntry : entries) {1102 if (prefEntry.id != null && !prefEntry.id.isEmpty())1103 ids.add(prefEntry.id);1104 }1105 Collections.sort(ids);1106 }1107 }1108 return ids;1085 if (pref == null) { 1086 return Collections.emptyList(); 1087 } 1088 List<ImageryPreferenceEntry> entries = StructUtils.getListOfStructs(pref, "imagery.entries", null, ImageryPreferenceEntry.class); 1089 if (entries == null) { 1090 return Collections.emptyList(); 1091 } 1092 return entries.stream() 1093 .filter(prefEntry -> prefEntry.id != null && !prefEntry.id.isEmpty()) 1094 .map(prefEntry -> prefEntry.id) 1095 .sorted() 1096 .collect(Collectors.toList()); 1109 1097 } 1110 1098 … … 1230 1218 this.serverProjections = serverProjections.stream() 1231 1219 .map(String::intern) 1232 .collect( Collectors.collectingAndThen(Collectors.toList(), Utils::toUnmodifiableList));1220 .collect(StreamUtils.toUnmodifiableList()); 1233 1221 } 1234 1222 -
trunk/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java
r16426 r16436 17 17 import java.util.TreeSet; 18 18 import java.util.concurrent.ExecutorService; 19 import java.util.stream.Collectors; 19 20 20 21 import org.openstreetmap.josm.data.StructUtils; … … 266 267 if (def.getId() != null) { 267 268 newKnownDefaults.add(def.getId()); 268 for (ImageryInfo i : layers) { 269 if (isSimilar(def, i)) { 270 isInUserList = true; 271 break; 272 } 273 } 269 isInUserList = layers.stream().anyMatch(i -> isSimilar(def, i)); 274 270 } else { 275 271 Logging.error("Default imagery ''{0}'' has no id. Skipping.", def.getName()); … … 362 358 */ 363 359 public void save() { 364 List<ImageryPreferenceEntry> entries = new ArrayList<>(); 365 for (ImageryInfo info : layers) { 366 entries.add(new ImageryPreferenceEntry(info)); 367 } 360 List<ImageryPreferenceEntry> entries = layers.stream() 361 .map(ImageryPreferenceEntry::new) 362 .collect(Collectors.toList()); 368 363 StructUtils.putListOfStructs(Config.getPref(), "imagery.entries", entries, ImageryPreferenceEntry.class); 369 364 } -
trunk/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java
r14120 r16436 348 348 */ 349 349 public static OffsetBookmark getBookmarkByName(ImageryLayer layer, String name) { 350 for (OffsetBookmark b : allBookmarks) { 351 if (b.isUsable(layer) && name.equals(b.name)) 352 return b; 353 } 354 return null; 350 return allBookmarks.stream() 351 .filter(b -> b.isUsable(layer) && name.equals(b.name)) 352 .findFirst().orElse(null); 355 353 } 356 354 -
trunk/src/org/openstreetmap/josm/data/imagery/Shape.java
r12453 r16436 8 8 import java.util.List; 9 9 import java.util.Objects; 10 import java.util.stream.Collectors; 11 import java.util.stream.Stream; 10 12 11 13 import org.openstreetmap.gui.jmapviewer.Coordinate; … … 43 45 } 44 46 47 /** 48 * Encodes this as a string so that it may be parsed using {@link #Shape(String, String)} 49 * @param separator The separator 50 * @return The string encoded shape 51 */ 45 52 public String encodeAsString(String separator) { 46 StringBuilder sb = new StringBuilder(); 47 for (Coordinate c : coords) { 48 if (sb.length() != 0) { 49 sb.append(separator); 50 } 51 sb.append(c.getLat()).append(separator).append(c.getLon()); 52 } 53 return sb.toString(); 53 return coords.stream() 54 .flatMap(c -> Stream.of(c.getLat(), c.getLon())) 55 .map(String::valueOf) 56 .collect(Collectors.joining(separator)); 57 } 58 59 /** 60 * Encodes the shapes as a string using {@code ,} and {@code ;} as separators 61 * @return The string encoded shapes 62 */ 63 public static String encodeAsString(List<Shape> shapes) { 64 return shapes.stream() 65 .map(s -> s.encodeAsString(",")) 66 .collect(Collectors.joining(";")); 54 67 } 55 68 … … 61 74 if (latlon == null) 62 75 return false; 63 List<Node> nodes = new ArrayList<>(coords.size()); 64 for (Coordinate c : coords) { 65 nodes.add(new Node(new LatLon(c.getLat(), c.getLon()))); 66 } 76 List<Node> nodes = coords.stream() 77 .map(c -> new Node(new LatLon(c.getLat(), c.getLon()))) 78 .collect(Collectors.toList()); 67 79 return Geometry.nodeInsidePolygon(new Node(latlon), nodes); 68 80 } -
trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
r16106 r16436 856 856 if (this.currentLayer != null) { 857 857 this.currentTileMatrixSet = this.currentLayer.tileMatrixSet; 858 Collection<Double> scales = new ArrayList<>(currentTileMatrixSet.tileMatrix.size()); 859 for (TileMatrix tileMatrix : currentTileMatrixSet.tileMatrix) { 860 scales.add(tileMatrix.scaleDenominator * 0.28e-03); 861 } 858 Collection<Double> scales = currentTileMatrixSet.tileMatrix.stream() 859 .map(tileMatrix -> tileMatrix.scaleDenominator * 0.28e-03) 860 .collect(Collectors.toList()); 862 861 this.nativeScaleList = new ScaleList(scales); 863 862 } … … 1061 1060 Matcher m = Pattern.compile("\\{[^}]*\\}").matcher(url); 1062 1061 while (m.find()) { 1063 boolean isSupportedPattern = false; 1064 for (String pattern : ALL_PATTERNS) { 1065 if (m.group().matches(pattern)) { 1066 isSupportedPattern = true; 1067 break; 1068 } 1069 } 1062 boolean isSupportedPattern = Arrays.stream(ALL_PATTERNS).anyMatch(pattern -> m.group().matches(pattern)); 1070 1063 if (!isSupportedPattern) { 1071 1064 throw new IllegalArgumentException( … … 1089 1082 */ 1090 1083 public Collection<String> getSupportedProjections() { 1091 Collection<String> ret = new LinkedHashSet<>(); 1092 if (currentLayer == null) { 1093 for (Layer layer: this.layers) { 1094 ret.add(layer.tileMatrixSet.crs); 1095 } 1096 } else { 1097 for (Layer layer: this.layers) { 1098 if (currentLayer.identifier.equals(layer.identifier)) { 1099 ret.add(layer.tileMatrixSet.crs); 1100 } 1101 } 1102 } 1103 return ret; 1084 return this.layers.stream() 1085 .filter(layer -> currentLayer == null || currentLayer.identifier.equals(layer.identifier)) 1086 .map(layer -> layer.tileMatrixSet.crs) 1087 .collect(Collectors.toCollection(LinkedHashSet::new)); 1104 1088 } 1105 1089 -
trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java
r14058 r16436 14 14 import java.util.regex.Matcher; 15 15 import java.util.regex.Pattern; 16 import java.util.stream.IntStream; 16 17 17 18 import org.openstreetmap.josm.data.Bounds; … … 521 522 } 522 523 } 523 boolean isCentric = true; 524 for (Double param : towgs84Param) { 525 if (param != 0) { 526 isCentric = false; 527 break; 528 } 529 } 524 boolean isCentric = towgs84Param.stream().noneMatch(param -> param != 0); 530 525 if (isCentric) 531 526 return Ellipsoid.WGS84.equals(ellps) ? WGS84Datum.INSTANCE : new CentricDatum(null, null, ellps); 532 boolean is3Param = true; 533 for (int i = 3; i < towgs84Param.size(); i++) { 534 if (towgs84Param.get(i) != 0) { 535 is3Param = false; 536 break; 537 } 538 } 527 boolean is3Param = IntStream.range(3, towgs84Param.size()).noneMatch(i -> towgs84Param.get(i) != 0); 539 528 if (is3Param) 540 529 return new ThreeParameterDatum(null, null, ellps, -
trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2Proj4DirGridShiftFileSource.java
r14624 r16436 43 43 @Override 44 44 public InputStream getNTV2GridShiftFile(String gridFileName) { 45 File grid = null;46 45 // Check is the grid is installed in default PROJ.4 directories 47 for (File dir : Platform.determinePlatform().accept(this)) { 48 File file = new File(dir, gridFileName); 49 if (file.exists() && file.isFile()) { 50 grid = file; 51 break; 52 } 53 } 46 File grid = Platform.determinePlatform().accept(this).stream() 47 .map(dir -> new File(dir, gridFileName)) 48 .filter(file -> file.exists() && file.isFile()) 49 .findFirst().orElse(null); 54 50 // If not, search into PROJ_LIB directory 55 51 if (grid == null) { -
trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java
r13627 r16436 24 24 import java.io.Serializable; 25 25 import java.nio.charset.StandardCharsets; 26 import java.util.Arrays; 26 27 27 28 import org.openstreetmap.josm.tools.Logging; … … 171 172 */ 172 173 public NTV2SubGrid getSubGridForCoord(double lon, double lat) { 173 if (isCoordWithin(lon, lat)) { 174 if (subGrid == null) 175 return this; 176 else { 177 for (NTV2SubGrid aSubGrid : subGrid) { 178 if (aSubGrid.isCoordWithin(lon, lat)) 179 return aSubGrid.getSubGridForCoord(lon, lat); 180 } 181 return this; 182 } 183 } else 184 return null; 174 return !isCoordWithin(lon, lat) 175 ? null 176 : subGrid == null 177 ? this 178 : Arrays.stream(subGrid) 179 .filter(aSubGrid -> aSubGrid.isCoordWithin(lon, lat)) 180 .map(aSubGrid -> aSubGrid.getSubGridForCoord(lon, lat)) 181 .findFirst().orElse(this); 185 182 } 186 183 -
trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java
r15893 r16436 343 343 */ 344 344 public synchronized AutoFilterRule getAutoFilterRule(String key) { 345 for (AutoFilterRule r : rules) { 346 if (key.equals(r.getKey())) { 347 return r; 348 } 349 } 350 return null; 345 return rules.stream() 346 .filter(r -> Objects.equals(key, r.getKey())) 347 .findFirst().orElse(null); 351 348 } 352 349 -
trunk/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java
r14710 r16436 18 18 import java.util.Map; 19 19 import java.util.Set; 20 import java.util.stream.Collectors; 21 import java.util.stream.IntStream; 20 22 21 23 import javax.swing.AbstractListModel; … … 369 371 370 372 protected void alertCopyFailedForDeletedPrimitives(List<PrimitiveId> deletedIds) { 371 List<String> items = new ArrayList<>(); 372 for (int i = 0; i < Math.min(MAX_DELETED_PRIMITIVE_IN_DIALOG, deletedIds.size()); i++) { 373 items.add(deletedIds.get(i).toString()); 374 } 373 List<String> items = deletedIds.stream().limit(MAX_DELETED_PRIMITIVE_IN_DIALOG).map(Object::toString).collect(Collectors.toList()); 375 374 if (deletedIds.size() > MAX_DELETED_PRIMITIVE_IN_DIALOG) { 376 375 items.add(tr("{0} more...", deletedIds.size() - MAX_DELETED_PRIMITIVE_IN_DIALOG)); … … 422 421 getMergedEntries().clear(); 423 422 424 int[] rows = new int[entries.get(source).size()]; 425 for (int i = 0; i < rows.length; i++) { 426 rows[i] = i; 427 } 423 int[] rows = IntStream.range(0, entries.get(source).size()).toArray(); 428 424 copy(source, rows, 0); 429 425 } … … 588 584 */ 589 585 protected boolean myAndTheirEntriesEqual() { 590 if (getMyEntriesSize() != getTheirEntriesSize()) 591 return false; 592 for (int i = 0; i < getMyEntriesSize(); i++) { 593 if (!isEqualEntry(getMyEntries().get(i), getTheirEntries().get(i))) 594 return false; 595 } 596 return true; 586 return getMyEntriesSize() == getTheirEntriesSize() 587 && IntStream.range(0, getMyEntriesSize()).allMatch(i -> isEqualEntry(getMyEntries().get(i), getTheirEntries().get(i))); 597 588 } 598 589 -
trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
r15706 r16436 19 19 import java.util.concurrent.ExecutionException; 20 20 import java.util.concurrent.Future; 21 import java.util.stream.Collectors; 21 22 22 23 import javax.swing.AbstractAction; … … 305 306 if (ds == null || ids == null) 306 307 return; 307 Set<OsmPrimitive> sel = new HashSet<>(); 308 for (OsmPrimitive p: ds.allPrimitives()) { 309 if (ids.contains(p.getChangesetId())) { 310 sel.add(p); 311 } 312 } 308 Set<OsmPrimitive> sel = ds.allPrimitives().stream() 309 .filter(p -> ids.contains(p.getChangesetId())) 310 .collect(Collectors.toSet()); 313 311 ds.setSelected(sel); 314 312 } -
trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
r16433 r16436 18 18 import java.awt.event.WindowEvent; 19 19 import java.util.Collection; 20 import java.util.HashSet;21 20 import java.util.List; 22 21 import java.util.Objects; … … 739 738 return; 740 739 } 741 Set<Changeset> toSelect = new HashSet<>();742 740 ChangesetCache cc = ChangesetCache.getInstance(); 743 for (int id: ids) { 744 if (cc.contains(id)) { 745 toSelect.add(cc.get(id)); 746 } 747 } 741 Set<Changeset> toSelect = ids.stream() 742 .filter(cc::contains) 743 .map(cc::get) 744 .collect(Collectors.toSet()); 748 745 setSelectedChangesets(toSelect); 749 746 } -
trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManagerModel.java
r16121 r16436 7 7 import java.util.Collection; 8 8 import java.util.Comparator; 9 import java.util.HashSet;10 9 import java.util.List; 11 10 import java.util.Set; 11 import java.util.stream.Collectors; 12 12 13 13 import javax.swing.DefaultListSelectionModel; … … 102 102 */ 103 103 public Set<Integer> getSelectedChangesetIds() { 104 Set<Integer> ret = new HashSet<>(); 105 for (Changeset cs: getSelectedChangesets()) { 106 ret.add(cs.getId()); 107 } 108 return ret; 104 return getSelectedChangesets().stream().map(Changeset::getId).collect(Collectors.toSet()); 109 105 } 110 106 -
trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
r16216 r16436 12 12 import java.beans.PropertyChangeEvent; 13 13 import java.beans.PropertyChangeListener; 14 import java.util.ArrayList;15 14 import java.util.Collection; 16 15 import java.util.Collections; … … 263 262 264 263 protected List<HistoryOsmPrimitive> filterPrimitivesWithUnloadedHistory(Collection<HistoryOsmPrimitive> primitives) { 265 List<HistoryOsmPrimitive> ret = new ArrayList<>(primitives.size()); 266 for (HistoryOsmPrimitive p: primitives) { 267 if (HistoryDataSet.getInstance().getHistory(p.getPrimitiveId()) == null) { 268 ret.add(p); 269 } 270 } 271 return ret; 264 return primitives.stream() 265 .filter(p -> HistoryDataSet.getInstance().getHistory(p.getPrimitiveId()) == null) 266 .collect(Collectors.toList()); 272 267 } 273 268 -
trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java
r16218 r16436 3 3 4 4 import java.util.ArrayList; 5 import java.util. HashSet;5 import java.util.Arrays; 6 6 import java.util.Iterator; 7 7 import java.util.List; 8 8 import java.util.Set; 9 import java.util.stream.Collectors; 9 10 10 11 import javax.swing.DefaultListSelectionModel; … … 65 66 */ 66 67 public Set<HistoryOsmPrimitive> getSelectedPrimitives(JTable table) { 67 Set<HistoryOsmPrimitive> ret = new HashSet<>();68 68 int[] selection = table.getSelectedRows(); 69 for (int i = 0; i < selection.length; i++) { 70 ret.add(data.get(table.convertRowIndexToModel(selection[i])).getPrimitive()); 71 } 72 return ret; 69 return Arrays.stream(selection) 70 .mapToObj(i -> data.get(table.convertRowIndexToModel(i)).getPrimitive()) 71 .collect(Collectors.toSet()); 73 72 } 74 73 -
trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java
r16305 r16436 16 16 import java.util.Collections; 17 17 import java.util.Date; 18 import java.util.HashSet;19 18 import java.util.Set; 19 import java.util.stream.Collectors; 20 20 21 21 import javax.swing.AbstractAction; … … 372 372 return; 373 373 } 374 Set<OsmPrimitive> target = new HashSet<>(); 375 for (OsmPrimitive p: ds.allPrimitives()) { 376 if (p.isUsable() && p.getChangesetId() == currentChangeset.getId()) { 377 target.add(p); 378 } 379 } 374 Set<OsmPrimitive> target = ds.allPrimitives().stream() 375 .filter(p -> p.isUsable() && p.getChangesetId() == currentChangeset.getId()) 376 .collect(Collectors.toSet()); 380 377 if (target.isEmpty()) { 381 378 alertNoPrimitivesToSelect(); … … 431 428 return; 432 429 } 433 Set<OsmPrimitive> target = new HashSet<>(); 434 for (OsmPrimitive p: ds.allPrimitives()) { 435 if (p.isUsable() && p.getChangesetId() == currentChangeset.getId()) { 436 target.add(p); 437 } 438 } 430 Set<OsmPrimitive> target = ds.allPrimitives().stream() 431 .filter(p -> p.isUsable() && p.getChangesetId() == currentChangeset.getId()) 432 .collect(Collectors.toSet()); 439 433 if (target.isEmpty()) { 440 434 alertNoPrimitivesToZoomTo(); -
trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListModel.java
r14344 r16436 5 5 import java.util.Collection; 6 6 import java.util.Comparator; 7 import java.util.HashSet;8 7 import java.util.List; 9 8 import java.util.Set; 9 import java.util.stream.Collectors; 10 import java.util.stream.IntStream; 10 11 11 12 import javax.swing.DefaultListModel; 12 13 import javax.swing.DefaultListSelectionModel; 13 14 15 import org.openstreetmap.josm.data.osm.AbstractPrimitive; 14 16 import org.openstreetmap.josm.data.osm.Changeset; 15 17 import org.openstreetmap.josm.data.osm.ChangesetCache; … … 42 44 */ 43 45 public synchronized Set<Changeset> getSelectedChangesets() { 44 Set<Changeset> ret = new HashSet<>(); 45 for (int i = 0; i < getSize(); i++) { 46 if (selectionModel.isSelectedIndex(i)) { 47 ret.add(data.get(i)); 48 } 49 } 50 return ret; 46 return IntStream.range(0, getSize()).filter(selectionModel::isSelectedIndex) 47 .mapToObj(data::get).collect(Collectors.toSet()); 51 48 } 52 49 … … 56 53 */ 57 54 public synchronized Set<Integer> getSelectedChangesetIds() { 58 Set<Integer> ret = new HashSet<>(); 59 for (int i = 0; i < getSize(); i++) { 60 if (selectionModel.isSelectedIndex(i)) { 61 ret.add(data.get(i).getId()); 62 } 63 } 64 return ret; 55 return IntStream.range(0, getSize()).filter(selectionModel::isSelectedIndex) 56 .mapToObj(data::get).map(Changeset::getId).collect(Collectors.toSet()); 65 57 } 66 58 … … 115 107 return; 116 108 } 117 Set<Changeset> changesets = new HashSet<>(ids.size()); 118 for (int id: ids) { 119 if (id <= 0) { 120 continue; 121 } 122 changesets.add(new Changeset(id)); 123 } 109 Set<Changeset> changesets = ids.stream().mapToInt(id -> id) 110 .filter(id -> id > 0).mapToObj(Changeset::new).collect(Collectors.toSet()); 124 111 setChangesets(changesets); 125 112 } … … 134 121 return; 135 122 } 136 Set<Changeset> changesets = new HashSet<>(); 137 for (OsmPrimitive p: primitives) { 138 if (p.getChangesetId() <= 0) { 139 continue; 140 } 141 changesets.add(new Changeset(p.getChangesetId())); 142 } 143 setChangesets(changesets); 123 initFromChangesetIds(primitives.stream().map(AbstractPrimitive::getChangesetId).collect(Collectors.toList())); 144 124 } 145 125 … … 153 133 return; 154 134 } 155 Set<Changeset> changesets = new HashSet<>(); 156 for (OsmPrimitive p: ds.allPrimitives()) { 157 if (p.getChangesetId() <= 0) { 158 continue; 159 } 160 changesets.add(new Changeset(p.getChangesetId())); 161 } 162 setChangesets(changesets); 135 initFromChangesetIds(ds.allPrimitives().stream().map(AbstractPrimitive::getChangesetId).collect(Collectors.toList())); 163 136 } 164 137 … … 192 165 */ 193 166 public synchronized List<Changeset> getSelectedOpenChangesets() { 194 List<Changeset> ret = new ArrayList<>(); 195 for (int i = 0; i < getSize(); i++) { 196 if (selectionModel.isSelectedIndex(i)) { 197 Changeset cs = data.get(i); 198 if (cs.isOpen()) { 199 ret.add(cs); 200 } 201 } 202 } 203 return ret; 167 return IntStream.range(0, getSize()) 168 .filter(selectionModel::isSelectedIndex) 169 .mapToObj(data::get) 170 .filter(Changeset::isOpen) 171 .collect(Collectors.toList()); 204 172 } 205 173 -
trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java
r16075 r16436 10 10 import java.awt.event.ItemEvent; 11 11 import java.awt.event.ItemListener; 12 import java.util.Arrays; 12 13 import java.util.EnumMap; 13 14 import java.util.Map; … … 178 179 179 180 protected BasicQuery getSelectedQuery() { 180 for (BasicQuery q : BasicQuery.values()) { 181 if (rbQueries.get(q).isSelected()) 182 return q; 183 } 184 return null; 181 return Arrays.stream(BasicQuery.values()) 182 .filter(q -> rbQueries.get(q).isSelected()) 183 .findFirst().orElse(null); 185 184 } 186 185 -
trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java
r16189 r16436 14 14 import java.io.IOException; 15 15 import java.util.Arrays; 16 import java.util.HashSet;17 16 import java.util.List; 18 17 import java.util.Set; … … 302 301 if (selection == null || selection.length == 0) 303 302 return; 304 Set<Relation> relations = new HashSet<>(); 305 for (TreePath aSelection : selection) { 306 relations.add((Relation) aSelection.getLastPathComponent()); 307 } 303 Set<Relation> relations = Arrays.stream(selection) 304 .map(s -> (Relation) s.getLastPathComponent()) 305 .collect(Collectors.toSet()); 308 306 MainApplication.worker.submit(new DownloadRelationSetTask(getParentDialog(), relations)); 309 307 } -
trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
r15696 r16436 479 479 */ 480 480 public int getNumMembersWithPrimitive(OsmPrimitive primitive) { 481 int count = 0; 482 for (RelationMember member : members) { 483 if (member.getMember().equals(primitive)) { 484 count++; 485 } 486 } 487 return count; 481 return (int) members.stream().filter(member -> member.getMember().equals(primitive)).count(); 488 482 } 489 483 -
trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
r15963 r16436 1701 1701 */ 1702 1702 private List<Action> getMenuAdditions() { 1703 final LinkedList<Action> menuAdds = new LinkedList<>(); 1704 for (MenuAddition menuAdd: menuAdditions) { 1705 if (menuAdd.clazz.isInstance(this)) { 1706 menuAdds.add(menuAdd.addition); 1707 } 1708 } 1703 final LinkedList<Action> menuAdds = menuAdditions.stream() 1704 .filter(menuAdd -> menuAdd.clazz.isInstance(this)) 1705 .map(menuAdd -> menuAdd.addition) 1706 .collect(Collectors.toCollection(LinkedList::new)); 1709 1707 if (!menuAdds.isEmpty()) { 1710 1708 menuAdds.addFirst(SeparatorLayerAction.INSTANCE); -
trunk/src/org/openstreetmap/josm/gui/layer/AutosaveTask.java
r14746 r16436 178 178 while (true) { 179 179 String filename = getFileName(layer.layer.getName(), index); 180 boolean foundTheSame = false; 181 for (AutosaveLayerInfo<?> info: layersInfo) { 182 if (info != layer && filename.equals(info.layerFileName)) { 183 foundTheSame = true; 184 break; 185 } 186 } 187 180 boolean foundTheSame = layersInfo.stream().anyMatch(info -> info != layer && filename.equals(info.layerFileName)); 188 181 if (!foundTheSame) { 189 182 layer.layerFileName = filename; -
trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java
r16398 r16436 14 14 import java.awt.event.MouseListener; 15 15 import java.io.Serializable; 16 import java.util.ArrayList;17 16 import java.util.Arrays; 18 17 import java.util.Comparator; … … 21 20 import java.util.Objects; 22 21 import java.util.Optional; 22 import java.util.stream.Collectors; 23 23 24 24 import javax.swing.AbstractAction; … … 297 297 protected void buttonAction(int buttonIndex, ActionEvent evt) { 298 298 if (buttonIndex == 0) { 299 List<IGpxTrack> trks = new ArrayList<>(); 300 for (int i : table.getSelectedRows()) { 301 Object trk = content[i][5]; 302 if (trk != null && trk instanceof IGpxTrack) { 303 trks.add((IGpxTrack) trk); 304 } 305 } 299 List<IGpxTrack> trks = Arrays.stream(table.getSelectedRows()) 300 .mapToObj(i -> content[i][5]) 301 .filter(trk -> trk instanceof IGpxTrack) 302 .map(IGpxTrack.class::cast) 303 .collect(Collectors.toList()); 306 304 showColorDialog(trks); 307 305 } else { -
trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java
r16252 r16436 10 10 import java.util.TreeSet; 11 11 import java.util.regex.Pattern; 12 import java.util.stream.Collectors; 12 13 13 14 import org.openstreetmap.josm.gui.mappaint.mapcss.CSSColors; … … 240 241 @Override 241 242 public String toString() { 242 StringBuilder res = new StringBuilder("Cascade{ ");243 243 // List properties in alphabetical order to be deterministic, without changing "prop" to a TreeMap 244 244 // (no reason too, not sure about the potential memory/performance impact of such a change) … … 257 257 props.add(sb.toString()); 258 258 } 259 for (String s : props) { 260 res.append(s); 261 } 262 return res.append('}').toString(); 259 return props.stream().collect(Collectors.joining("", "Cascade{ ", "}")); 263 260 } 264 261 -
trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java
r15736 r16436 16 16 import java.util.Set; 17 17 import java.util.function.Function; 18 import java.util.stream.Collectors; 18 19 19 20 import org.openstreetmap.josm.data.osm.DataSet; … … 233 234 234 235 protected Collection<String> getUserInputKeys() { 235 List<String> keys = new ArrayList<>(); 236 for (UserInputTag tag : USER_INPUT_TAG_CACHE) { 237 if (!tag.defaultKey) { 238 keys.add(tag.key); 239 } 240 } 236 List<String> keys = USER_INPUT_TAG_CACHE.stream() 237 .filter(tag -> !tag.defaultKey) 238 .map(tag -> tag.key) 239 .collect(Collectors.toList()); 241 240 Collections.reverse(keys); 242 241 return new LinkedHashSet<>(keys); … … 255 254 256 255 protected static Collection<String> getUserInputValues(String key) { 257 List<String> values = new ArrayList<>(); 258 for (UserInputTag tag : USER_INPUT_TAG_CACHE) { 259 if (key.equals(tag.key)) { 260 values.add(tag.value); 261 } 262 } 256 List<String> values = USER_INPUT_TAG_CACHE.stream() 257 .filter(tag -> Objects.equals(key, tag.key)) 258 .map(tag -> tag.value) 259 .collect(Collectors.toList()); 263 260 Collections.reverse(values); 264 261 return new LinkedHashSet<>(values); -
trunk/src/org/openstreetmap/josm/io/Capabilities.java
r13901 r16436 218 218 */ 219 219 public boolean isOnImageryBlacklist(String url) { 220 if (url != null && imageryBlacklist != null) { 221 for (String blacklistRegex : imageryBlacklist) { 222 if (url.matches(blacklistRegex)) 223 return true; 224 } 225 } 226 return false; 220 return url != null && imageryBlacklist.stream().anyMatch(url::matches); 227 221 } 228 222 -
trunk/src/org/openstreetmap/josm/io/CertificateAmendment.java
r16120 r16436 288 288 throws KeyStoreException, InvalidAlgorithmParameterException { 289 289 PKIXParameters params = new PKIXParameters(keyStore); 290 String id = crt.getSubjectX500Principal().getName(); 291 for (TrustAnchor ta : params.getTrustAnchors()) { 292 X509Certificate cert = ta.getTrustedCert(); 293 if (Objects.equals(id, cert.getSubjectX500Principal().getName())) 294 return false; 295 } 296 return true; 290 return params.getTrustAnchors().stream() 291 .map(TrustAnchor::getTrustedCert) 292 .noneMatch(c -> Objects.equals(crt.getSubjectX500Principal().getName(), c.getSubjectX500Principal().getName())); 297 293 } 298 294 } -
trunk/src/org/openstreetmap/josm/io/OsmServerUserInfoReader.java
r14159 r16436 5 5 6 6 import java.time.DateTimeException; 7 import java.util.LinkedList;8 7 import java.util.List; 8 import java.util.stream.Collectors; 9 import java.util.stream.IntStream; 9 10 10 11 import javax.xml.xpath.XPath; … … 109 110 NodeList xmlNodeList = (NodeList) xpath.compile("/osm/user[1]/languages[1]/lang/text()").evaluate(document, XPathConstants.NODESET); 110 111 if (xmlNodeList != null) { 111 List<String> languages = new LinkedList<>(); 112 for (int i = 0; i < xmlNodeList.getLength(); i++) { 113 languages.add(xmlNodeList.item(i).getNodeValue()); 114 } 112 List<String> languages = IntStream.range(0, xmlNodeList.getLength()) 113 .mapToObj(i -> xmlNodeList.item(i).getNodeValue()) 114 .collect(Collectors.toList()); 115 115 userInfo.setLanguages(languages); 116 116 } -
trunk/src/org/openstreetmap/josm/io/nmea/NmeaReader.java
r15496 r16436 10 10 import java.text.SimpleDateFormat; 11 11 import java.util.ArrayList; 12 import java.util.Arrays; 12 13 import java.util.Collection; 13 14 import java.util.Collections; … … 295 296 */ 296 297 static boolean isSentence(String address, Sentence formatter) { 297 for (TalkerId talker : TalkerId.values()) { 298 if (address.equals('$' + talker.name() + formatter.name())) { 299 return true; 300 } 301 } 302 return false; 298 return Arrays.stream(TalkerId.values()) 299 .anyMatch(talker -> address.equals('$' + talker.name() + formatter.name())); 303 300 } 304 301 -
trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java
r16328 r16436 15 15 import java.util.HashSet; 16 16 import java.util.Map; 17 import java.util.Map.Entry;18 17 import java.util.Set; 18 import java.util.stream.Collectors; 19 19 20 20 import javax.swing.AbstractAction; … … 104 104 @Override 105 105 public String toString() { 106 StringBuilder sb = new StringBuilder(); 107 for (String k: valueCount.keySet()) { 108 if (sb.length() > 0) sb.append(", "); 109 sb.append(k); 110 } 111 return sb.toString(); 106 return String.join(", ", valueCount.keySet()); 112 107 } 113 108 114 109 private String getToolTip() { 115 StringBuilder sb = new StringBuilder(64); 116 sb.append("<html>") 117 .append(tr("Old values of")) 118 .append(" <b>") 119 .append(tag) 120 .append("</b><br/>"); 121 for (Entry<String, Integer> e : valueCount.entrySet()) { 122 sb.append("<b>") 123 .append(e.getValue()) 124 .append(" x </b>") 125 .append(e.getKey()) 126 .append("<br/>"); 127 } 128 sb.append("</html>"); 129 return sb.toString(); 110 return valueCount.entrySet().stream() 111 .map(e -> "<b>" + e.getValue() + " x </b>" + e.getKey() + "<br/>") 112 .collect(Collectors.joining("", "<html>" + tr("Old values of") + " <b>" + tag + "</b><br/>", "</html>")); 130 113 } 131 114 } -
trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java
r15720 r16436 49 49 50 50 protected static ImageryInfo findBingEntry() { 51 for (ImageryInfo i : ImageryLayerInfo.instance.getDefaultLayers()) { 52 if (ImageryType.BING == i.getImageryType()) { 53 return i; 54 } 55 } 56 return null; 51 return ImageryLayerInfo.instance.getDefaultLayers().stream() 52 .filter(i -> ImageryType.BING == i.getImageryType()) 53 .findFirst().orElse(null); 57 54 } 58 55 -
trunk/src/org/openstreetmap/josm/io/session/ImagerySessionImporter.java
r12851 r16436 5 5 6 6 import java.io.IOException; 7 import java.util.HashMap;8 7 import java.util.Map; 8 import java.util.stream.Collectors; 9 import java.util.stream.IntStream; 9 10 10 11 import org.openstreetmap.josm.data.StructUtils; … … 87 88 88 89 private static Map<String, String> readProperties(Element elem) { 89 Map<String, String> attributes = new HashMap<>();90 90 NodeList nodes = elem.getChildNodes(); 91 for (int i = 0; i < nodes.getLength(); ++i) { 92 Node node = nodes.item(i); 93 if (node.getNodeType() == Node.ELEMENT_NODE && node.getChildNodes().getLength() <= 1) { 94 Element e = (Element) node; 95 attributes.put(e.getTagName(), e.getTextContent()); 96 } 97 } 98 return attributes; 91 return IntStream.range(0, nodes.getLength()).mapToObj(nodes::item) 92 .filter(node -> node.getNodeType() == Node.ELEMENT_NODE && node.getChildNodes().getLength() <= 1) 93 .map(node -> (Element) node) 94 .collect(Collectors.toMap(Element::getTagName, Node::getTextContent, (a, b) -> b)); 99 95 } 100 96 } -
trunk/src/org/openstreetmap/josm/io/session/SessionReader.java
r15077 r16436 24 24 import java.util.Map.Entry; 25 25 import java.util.TreeMap; 26 import java.util.stream.Collectors; 27 import java.util.stream.IntStream; 26 28 import java.util.zip.ZipEntry; 27 29 import java.util.zip.ZipException; … … 651 653 Element parametersEl = getElementByTagName(projectionChoiceEl, "parameters"); 652 654 if (parametersEl == null) return null; 653 Collection<String> parameters = new ArrayList<>();654 655 NodeList paramNl = parametersEl.getElementsByTagName("param"); 655 656 int length = paramNl.getLength(); 656 for (int i = 0; i < length; i++) { 657 Element paramEl = (Element) paramNl.item(i); 658 parameters.add(paramEl.getTextContent()); 659 } 657 Collection<String> parameters = IntStream.range(0, length) 658 .mapToObj(i -> (Element) paramNl.item(i)).map(Node::getTextContent) 659 .collect(Collectors.toList()); 660 660 return new SessionProjectionChoiceData(id, parameters); 661 661 } -
trunk/src/org/openstreetmap/josm/spi/preferences/AbstractPreferences.java
r14147 r16436 7 7 import java.util.Map.Entry; 8 8 import java.util.TreeMap; 9 import java.util.stream.Collectors; 9 10 10 11 import org.openstreetmap.josm.tools.Logging; … … 158 159 */ 159 160 public Map<String, String> getAllPrefix(String prefix) { 160 final Map<String, String> all = new TreeMap<>(); 161 for (final Entry<String, Setting<?>> e : getAllSettings().entrySet()) { 162 if (e.getKey().startsWith(prefix) && (e.getValue() instanceof StringSetting)) { 163 all.put(e.getKey(), ((StringSetting) e.getValue()).getValue()); 164 } 165 } 166 return all; 161 return getAllSettings().entrySet().stream() 162 .filter(e -> e.getKey().startsWith(prefix) && (e.getValue() instanceof StringSetting)) 163 .collect(Collectors.toMap(Entry::getKey, e -> ((StringSetting) e.getValue()).getValue(), (a, b) -> b, TreeMap::new)); 167 164 } 168 165 … … 173 170 */ 174 171 public List<String> getAllPrefixCollectionKeys(String prefix) { 175 final List<String> all = new LinkedList<>(); 176 for (Entry<String, Setting<?>> entry : getAllSettings().entrySet()) { 177 if (entry.getKey().startsWith(prefix) && entry.getValue() instanceof ListSetting) { 178 all.add(entry.getKey()); 179 } 180 } 181 return all; 172 return getAllSettings().entrySet().stream() 173 .filter(entry -> entry.getKey().startsWith(prefix) && entry.getValue() instanceof ListSetting) 174 .map(Entry::getKey) 175 .collect(Collectors.toCollection(LinkedList::new)); 182 176 } 183 177 } -
trunk/src/org/openstreetmap/josm/spi/preferences/ListListSetting.java
r12882 r16436 4 4 import java.util.ArrayList; 5 5 import java.util.Collection; 6 import java.util.Collections;7 6 import java.util.List; 7 import java.util.stream.Collectors; 8 9 import org.openstreetmap.josm.tools.StreamUtils; 10 import org.openstreetmap.josm.tools.Utils; 8 11 9 12 /** … … 29 32 public static ListListSetting create(Collection<Collection<String>> value) { 30 33 if (value != null) { 31 List<List<String>> valueList = new ArrayList<>(value.size()); 32 for (Collection<String> lst : value) { 33 valueList.add(new ArrayList<>(lst)); 34 } 34 List<List<String>> valueList = value.stream() 35 .map(ArrayList::new) 36 .collect(Collectors.toList()); 35 37 return new ListListSetting(valueList); 36 38 } … … 43 45 return new ListListSetting(null); 44 46 45 List<List<String>> copy = new ArrayList<>(value.size()); 46 for (Collection<String> lst : value) { 47 List<String> lstCopy = new ArrayList<>(lst); 48 copy.add(Collections.unmodifiableList(lstCopy)); 49 } 50 return new ListListSetting(Collections.unmodifiableList(copy)); 47 List<List<String>> copy = value.stream() 48 .map(Utils::toUnmodifiableList) 49 .collect(StreamUtils.toUnmodifiableList()); 50 return new ListListSetting(copy); 51 51 } 52 52 -
trunk/src/org/openstreetmap/josm/spi/preferences/MapListSetting.java
r14827 r16436 2 2 package org.openstreetmap.josm.spi.preferences; 3 3 4 import java.util.ArrayList;5 import java.util.Collections;6 4 import java.util.LinkedHashMap; 7 5 import java.util.List; 8 6 import java.util.Map; 9 7 import java.util.SortedMap; 8 9 import org.openstreetmap.josm.tools.StreamUtils; 10 import org.openstreetmap.josm.tools.Utils; 10 11 11 12 /** … … 28 29 if (value == null) 29 30 return new MapListSetting(null); 30 List<Map<String, String>> copy = new ArrayList<>(value.size()); 31 for (Map<String, String> map : value) { 32 Map<String, String> mapCopy = new LinkedHashMap<>(map); 33 copy.add(Collections.unmodifiableMap(mapCopy)); 34 } 35 return new MapListSetting(Collections.unmodifiableList(copy)); 31 List<Map<String, String>> copy = value.stream() 32 .map(LinkedHashMap::new) 33 .map(Utils::toUnmodifiableMap) 34 .collect(StreamUtils.toUnmodifiableList()); 35 return new MapListSetting(copy); 36 36 } 37 37 -
trunk/src/org/openstreetmap/josm/tools/Geometry.java
r16056 r16436 760 760 */ 761 761 public static double multipolygonArea(Relation multipolygon) { 762 double area = 0.0;763 762 final Multipolygon mp = MultipolygonCache.getInstance().get(multipolygon); 764 for (Multipolygon.PolyData pd : mp.getCombinedPolygons()) { 765 area += pd.getAreaAndPerimeter(Projections.getProjectionByCode("EPSG:54008")).getArea(); 766 } 767 return area; 763 return mp.getCombinedPolygons().stream() 764 .mapToDouble(pd -> pd.getAreaAndPerimeter(Projections.getProjectionByCode("EPSG:54008")).getArea()) 765 .sum(); 768 766 } 769 767 … … 1053 1051 ? nodeInsidePolygon(nodes.get(0), out.nodes) 1054 1052 : PolygonIntersection.FIRST_INSIDE_SECOND == polygonIntersection(a1, out.area)) { 1055 boolean insideInner = false;1056 1053 // If inside an outer, check it is not inside an inner 1057 for (JoinedPolygon in : outerInner.b) { 1058 if (a1 == null ? nodeInsidePolygon(nodes.get(0), in.nodes) 1059 : in.area.getBounds2D().contains(a1.getBounds2D()) 1060 && polygonIntersection(a1, in.area) == PolygonIntersection.FIRST_INSIDE_SECOND 1061 && polygonIntersection(in.area, out.area) == PolygonIntersection.FIRST_INSIDE_SECOND) { 1062 insideInner = true; 1063 break; 1064 } 1065 } 1054 boolean insideInner = outerInner.b.stream().anyMatch(in -> a1 == null 1055 ? nodeInsidePolygon(nodes.get(0), in.nodes) 1056 : in.area.getBounds2D().contains(a1.getBounds2D()) 1057 && polygonIntersection(a1, in.area) == PolygonIntersection.FIRST_INSIDE_SECOND 1058 && polygonIntersection(in.area, out.area) == PolygonIntersection.FIRST_INSIDE_SECOND); 1066 1059 if (!insideInner) { 1067 1060 // Final check using predicate … … 1184 1177 } else if (p.isMultipolygon()) { 1185 1178 Multipolygon mp = new Multipolygon((Relation) p); 1186 boolean inside = true;1187 1179 // a (valid) multipolygon is inside multiPolygon if all outer rings are inside 1188 for (PolyData outer : mp.getOuterPolygons()) { 1189 if (!outer.isClosed() || !isPolygonInsideMultiPolygon(outer.getNodes(), outerInner, null)) { 1190 inside = false; 1191 break; 1192 } 1193 } 1180 boolean inside = mp.getOuterPolygons().stream() 1181 .allMatch(outer -> outer.isClosed() && isPolygonInsideMultiPolygon(outer.getNodes(), outerInner, null)); 1194 1182 if (inside) { 1195 1183 res.add(p); -
trunk/src/org/openstreetmap/josm/tools/ImageProvider.java
r16318 r16436 53 53 import java.util.regex.Matcher; 54 54 import java.util.regex.Pattern; 55 import java.util.stream.IntStream; 55 56 import java.util.zip.ZipEntry; 56 57 import java.util.zip.ZipFile; … … 1967 1968 1968 1969 private static Color parseRGB(String... s) { 1969 int[] rgb = new int[3];1970 1970 try { 1971 for (int i = 0; i < 3; i++) { 1972 rgb[i] = Integer.parseInt(s[i]); 1973 } 1971 int[] rgb = IntStream.range(0, 3).map(i -> Integer.parseInt(s[i])).toArray(); 1974 1972 return new Color(rgb[0], rgb[1], rgb[2]); 1975 1973 } catch (IllegalArgumentException e) { -
trunk/src/org/openstreetmap/josm/tools/ReflectionUtils.java
r14978 r16436 7 7 import java.util.Collection; 8 8 import java.util.function.Function; 9 import java.util.stream.IntStream; 9 10 10 11 import org.openstreetmap.josm.plugins.PluginHandler; … … 63 64 private static <T extends Object> T findCaller(Function<StackTraceElement, T> getter, Collection<T> exclusions) { 64 65 StackTraceElement[] stack = Thread.currentThread().getStackTrace(); 65 for (int i = 3; i < stack.length; i++) { 66 T t = getter.apply(stack[i]); 67 if (exclusions == null || !exclusions.contains(t)) { 68 return t; 69 } 70 } 71 return null; 66 return IntStream.range(3, stack.length) 67 .mapToObj(i -> getter.apply(stack[i])) 68 .filter(t -> exclusions == null || !exclusions.contains(t)) 69 .findFirst().orElse(null); 72 70 } 73 71 } -
trunk/src/org/openstreetmap/josm/tools/StreamUtils.java
r15732 r16436 6 6 import java.util.StringJoiner; 7 7 import java.util.stream.Collector; 8 import java.util.stream.Collectors; 8 9 import java.util.stream.IntStream; 9 10 import java.util.stream.Stream; … … 58 59 ); 59 60 } 61 62 /** 63 * Creates a new Collector that collects the items in an unmodifiable list 64 * @param <T> the type of the input elements 65 * @return a new Collector that collects the items in an unmodifiable list 66 * @see Utils#toUnmodifiableList 67 * @since xxx 68 */ 69 public static <T> Collector<T, ?, List<T>> toUnmodifiableList() { 70 // Java 10: use java.util.stream.Collectors.toUnmodifiableList 71 return Collectors.collectingAndThen(Collectors.toList(), Utils::toUnmodifiableList); 72 } 60 73 } -
trunk/src/org/openstreetmap/josm/tools/Utils.java
r16330 r16436 48 48 import java.util.Locale; 49 49 import java.util.Map; 50 import java.util.Objects; 50 51 import java.util.Optional; 51 52 import java.util.concurrent.ExecutionException; … … 156 157 @SafeVarargs 157 158 public static <T> T firstNonNull(T... items) { 158 for (T i : items) { 159 if (i != null) { 160 return i; 161 } 162 } 163 return null; 159 return Arrays.stream(items).filter(Objects::nonNull) 160 .findFirst().orElse(null); 164 161 } 165 162 … … 586 583 List<T> sorted = new ArrayList<>(); 587 584 for (int i = 0; i < size; ++i) { 588 T parentless = null; 589 for (T key : deps.keySet()) { 590 if (deps.get(key).isEmpty()) { 591 parentless = key; 592 break; 593 } 594 } 585 T parentless = deps.keySet().stream() 586 .filter(key -> deps.get(key).isEmpty()) 587 .findFirst().orElse(null); 595 588 if (parentless == null) throw new JosmRuntimeException("parentless"); 596 589 sorted.add(parentless); … … 723 716 */ 724 717 public static String firstNotEmptyString(String defaultString, String... candidates) { 725 for (String candidate : candidates) { 726 if (!Utils.isStripEmpty(candidate)) { 727 return candidate; 728 } 729 } 730 return defaultString; 718 return Arrays.stream(candidates) 719 .filter(candidate -> !Utils.isStripEmpty(candidate)) 720 .findFirst().orElse(defaultString); 731 721 } 732 722 … … 739 729 */ 740 730 public static boolean isStripEmpty(String str) { 741 if (str != null) { 742 for (int i = 0; i < str.length(); i++) { 743 if (!isStrippedChar(str.charAt(i), null)) { 744 return false; 745 } 746 } 747 } 748 return true; 731 return str == null || IntStream.range(0, str.length()).allMatch(i -> isStrippedChar(str.charAt(i), null)); 749 732 } 750 733 -
trunk/src/org/openstreetmap/josm/tools/WikiReader.java
r15293 r16436 5 5 import java.io.IOException; 6 6 import java.net.URL; 7 import java.util.stream.Collectors; 7 8 8 9 import org.openstreetmap.josm.spi.preferences.Config; … … 103 104 } 104 105 105 private static String readNormal(BufferedReader in, boolean html) throws IOException { 106 StringBuilder b = new StringBuilder(); 107 for (String line = in.readLine(); line != null; line = in.readLine()) { 108 if (!line.contains("[[TranslatedPages]]")) { 109 b.append(line.replace(" />", ">")).append('\n'); 110 } 111 } 112 return html ? "<html>" + b + "</html>" : b.toString(); 106 private static String readNormal(BufferedReader in, boolean html) { 107 String string = in.lines() 108 .filter(line -> !line.contains("[[TranslatedPages]]")) 109 .map(line -> line.replace(" />", ">") + '\n').collect(Collectors.joining()); 110 return html ? "<html>" + string + "</html>" : string; 113 111 } 114 112 -
trunk/src/org/openstreetmap/josm/tools/XmlUtils.java
r16069 r16436 4 4 import java.io.IOException; 5 5 import java.io.InputStream; 6 import java.util.stream.IntStream; 6 7 7 8 import javax.xml.XMLConstants; … … 171 172 public static Element getFirstChildElement(Node parent) { 172 173 NodeList children = parent.getChildNodes(); 173 for (int i = 0; i < children.getLength(); i++) { 174 Node child = children.item(i); 175 if (child instanceof Element) { 176 return (Element) child; 177 } 178 } 179 return null; 174 return (Element) IntStream.range(0, children.getLength()) 175 .mapToObj(children::item) 176 .filter(child -> child instanceof Element) 177 .findFirst().orElse(null); 180 178 } 181 179 } -
trunk/src/org/openstreetmap/josm/tools/template_engine/CompoundTemplateEntry.java
r14098 r16436 3 3 4 4 import java.util.Arrays; 5 import java.util.stream.Collectors; 5 6 6 7 /** … … 41 42 @Override 42 43 public boolean isValid(TemplateEngineDataProvider dataProvider) { 43 for (TemplateEntry te: entries) { 44 if (!te.isValid(dataProvider)) 45 return false; 46 } 47 return true; 44 return Arrays.stream(entries).allMatch(te -> te.isValid(dataProvider)); 48 45 } 49 46 50 47 @Override 51 48 public String toString() { 52 StringBuilder result = new StringBuilder(); 53 for (TemplateEntry te: entries) { 54 result.append(te); 55 } 56 return result.toString(); 49 return Arrays.stream(entries).map(String::valueOf).collect(Collectors.joining()); 57 50 } 58 51 -
trunk/src/org/openstreetmap/josm/tools/template_engine/Condition.java
r14093 r16436 46 46 @Override 47 47 public boolean isValid(TemplateEngineDataProvider dataProvider) { 48 49 for (TemplateEntry entry: entries) { 50 if (entry.isValid(dataProvider)) 51 return true; 52 } 53 54 return false; 48 return entries.stream().anyMatch(entry -> entry.isValid(dataProvider)); 55 49 } 56 50 -
trunk/src/org/openstreetmap/josm/tools/template_engine/ContextSwitchTemplate.java
r14093 r16436 8 8 import java.util.Collections; 9 9 import java.util.List; 10 import java.util.stream.Collectors; 11 import java.util.stream.Stream; 10 12 11 13 import org.openstreetmap.josm.data.osm.Node; … … 94 96 } 95 97 96 List<OsmPrimitive> result = new ArrayList<>(); 97 for (OsmPrimitive child: children) { 98 for (OsmPrimitive parent: child.getReferrers(true)) { 99 if (condition == null || condition.match(parent)) { 100 result.add(parent); 101 } 102 } 103 } 104 return result; 98 return children.stream() 99 .flatMap(child -> child.getReferrers(true).stream()) 100 .filter(parent -> condition == null || condition.match(parent)) 101 .collect(Collectors.toList()); 105 102 } 106 103 … … 205 202 @Override 206 203 List<OsmPrimitive> getPrimitives(OsmPrimitive root) { 207 List<OsmPrimitive> result = new ArrayList<>(); 208 for (OsmPrimitive o: lhs.getPrimitives(root)) { 209 if (condition == null || condition.match(o)) { 210 result.add(o); 211 } 212 } 213 for (OsmPrimitive o: rhs.getPrimitives(root)) { 214 if (condition == null || (condition.match(o) && !result.contains(o))) { 215 result.add(o); 216 } 217 } 218 return result; 204 return Stream.concat(lhs.getPrimitives(root).stream(), rhs.getPrimitives(root).stream()) 205 .filter(o -> condition == null || condition.match(o)) 206 .distinct() 207 .collect(Collectors.toList()); 219 208 } 220 209 … … 265 254 @Override 266 255 List<OsmPrimitive> getPrimitives(OsmPrimitive root) { 267 List<OsmPrimitive> result = new ArrayList<>();268 256 List<OsmPrimitive> lhsList = lhs.getPrimitives(root); 269 for (OsmPrimitive o: rhs.getPrimitives(root)) { 270 if (lhsList.contains(o) && (condition == null || condition.match(o))) { 271 result.add(o); 272 } 273 } 274 return result; 257 return rhs.getPrimitives(root).stream() 258 .filter(lhsList::contains) 259 .filter(o -> condition == null || condition.match(o)) 260 .collect(Collectors.toList()); 275 261 } 276 262
Note:
See TracChangeset
for help on using the changeset viewer.