Ignore:
Timestamp:
2019-01-06T20:22:48+01:00 (5 years ago)
Author:
simon04
Message:

Deprecate OsmPrimitive.getFilteredList/getFilteredSet in favour of Stream

Most use-cases involved filtering referring primitives. This can now be
accomplished using OsmPrimitive.referrers involving the Stream API and
thus avoids creation of intermediate collections.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java

    r14466 r14654  
    2424import org.openstreetmap.josm.data.osm.OsmUtils;
    2525import org.openstreetmap.josm.data.osm.Relation;
     26import org.openstreetmap.josm.data.osm.Way;
    2627import org.openstreetmap.josm.data.osm.visitor.PrimitiveVisitor;
    2728import org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache;
     
    3334import org.openstreetmap.josm.tools.Logging;
    3435import org.openstreetmap.josm.tools.Pair;
    35 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
    3636import org.openstreetmap.josm.tools.Utils;
    3737
     
    354354                    // if right selector also matches relations and if matched primitive is a way which is part of a multipolygon,
    355355                    // use the multipolygon for further analysis
    356                     if (!(e.osm instanceof IWay)
     356                    if (!(e.osm instanceof Way)
    357357                            || (right instanceof OptimizedGeneralSelector
    358358                            && !((OptimizedGeneralSelector) right).matchesBase(OsmPrimitiveType.RELATION))) {
    359359                        throw new NoSuchElementException();
    360360                    }
    361                     final Collection<Relation> multipolygons = Utils.filteredCollection(SubclassFilteredCollection.filter(
    362                             e.osm.getReferrers(), p -> p.hasTag("type", "multipolygon")), Relation.class);
    363                     final Relation multipolygon = multipolygons.iterator().next();
    364                     if (multipolygon == null) throw new NoSuchElementException();
     361                    final Relation multipolygon = ((Way) e.osm).referrers(Relation.class)
     362                            .filter(p -> p.hasTag("type", "multipolygon"))
     363                            .findFirst()
     364                            .orElseThrow(NoSuchElementException::new);
    365365                    final Set<OsmPrimitive> members = multipolygon.getMemberPrimitives();
    366366                    containsFinder = new ContainsFinder(new Environment(multipolygon)) {
Note: See TracChangeset for help on using the changeset viewer.