Changeset 3801 in josm for trunk/src/org/openstreetmap
- Timestamp:
- 2011-01-22T14:36:36+01:00 (14 years ago)
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 4 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
r3782 r3801 34 34 import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent; 35 35 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager; 36 import org.openstreetmap.josm.tools.FilteredCollection; 36 37 import org.openstreetmap.josm.tools.Predicate; 38 import org.openstreetmap.josm.tools.SubclassFilteredCollection; 37 39 38 40 /** … … 174 176 175 177 private <T extends OsmPrimitive> Collection<T> getPrimitives(Predicate<OsmPrimitive> predicate) { 176 return new DatasetCollection<T>(allPrimitives, predicate);178 return new SubclassFilteredCollection<OsmPrimitive, T>(allPrimitives, predicate); 177 179 } 178 180 … … 386 388 387 389 public Collection<OsmPrimitive> getSelectedNodesAndWays() { 388 return new DatasetCollection<OsmPrimitive>(getSelected(), new Predicate<OsmPrimitive>() {390 return new FilteredCollection<OsmPrimitive>(getSelected(), new Predicate<OsmPrimitive>() { 389 391 @Override 390 392 public boolean evaluate(OsmPrimitive primitive) { … … 415 417 */ 416 418 public Collection<Node> getSelectedNodes() { 417 return new DatasetCollection<Node>(getSelected(), OsmPrimitive.nodePredicate);419 return new SubclassFilteredCollection<OsmPrimitive, Node>(getSelected(), OsmPrimitive.nodePredicate); 418 420 } 419 421 … … 422 424 */ 423 425 public Collection<Way> getSelectedWays() { 424 return new DatasetCollection<Way>(getSelected(), OsmPrimitive.wayPredicate);426 return new SubclassFilteredCollection<OsmPrimitive, Way>(getSelected(), OsmPrimitive.wayPredicate); 425 427 } 426 428 … … 429 431 */ 430 432 public Collection<Relation> getSelectedRelations() { 431 return new DatasetCollection<Relation>(getSelected(), OsmPrimitive.relationPredicate);433 return new SubclassFilteredCollection<OsmPrimitive, Relation>(getSelected(), OsmPrimitive.relationPredicate); 432 434 } 433 435 -
trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
r3443 r3801 38 38 import org.openstreetmap.josm.command.Command; 39 39 import org.openstreetmap.josm.command.PseudoCommand; 40 import org.openstreetmap.josm.data.osm.DatasetCollection;41 40 import org.openstreetmap.josm.data.osm.OsmPrimitive; 42 41 import org.openstreetmap.josm.gui.MapFrame; … … 45 44 import org.openstreetmap.josm.gui.layer.OsmDataLayer.CommandQueueListener; 46 45 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher; 46 import org.openstreetmap.josm.tools.FilteredCollection; 47 47 import org.openstreetmap.josm.tools.GBC; 48 48 import org.openstreetmap.josm.tools.ImageProvider; … … 331 331 final OsmDataLayer currentLayer = Main.map.mapView.getEditLayer(); 332 332 333 DatasetCollection<OsmPrimitive> prims = newDatasetCollection<OsmPrimitive>(333 FilteredCollection<OsmPrimitive> prims = new FilteredCollection<OsmPrimitive>( 334 334 c.getParticipatingPrimitives(), 335 335 new Predicate<OsmPrimitive>(){ -
trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java
r3750 r3801 17 17 import org.openstreetmap.josm.gui.ExtendedDialog; 18 18 import org.openstreetmap.josm.data.osm.DataSet; 19 import org.openstreetmap.josm. data.osm.DatasetCollection;19 import org.openstreetmap.josm.tools.SubclassFilteredCollection; 20 20 import org.openstreetmap.josm.data.osm.Node; 21 21 import org.openstreetmap.josm.data.osm.OsmPrimitive; … … 65 65 protected String buildText() { 66 66 StringBuilder s = new StringBuilder(); 67 for (Node n : new DatasetCollection<Node>(primitives, OsmPrimitive.nodePredicate)) {67 for (Node n : new SubclassFilteredCollection<OsmPrimitive, Node>(primitives, OsmPrimitive.nodePredicate)) { 68 68 s.append("Node id="+n.getUniqueId()); 69 69 if (!checkDataSet(n)) { … … 87 87 } 88 88 89 for (Way w : new DatasetCollection<Way>(primitives, OsmPrimitive.wayPredicate)) {89 for (Way w : new SubclassFilteredCollection<OsmPrimitive, Way>(primitives, OsmPrimitive.wayPredicate)) { 90 90 s.append("Way id="+ w.getUniqueId()); 91 91 if (!checkDataSet(w)) { … … 110 110 } 111 111 112 for (Relation r : new DatasetCollection<Relation>(primitives, OsmPrimitive.relationPredicate)) {112 for (Relation r : new SubclassFilteredCollection<OsmPrimitive, Relation>(primitives, OsmPrimitive.relationPredicate)) { 113 113 s.append("Relation id="+r.getUniqueId()); 114 114 if (!checkDataSet(r)) { … … 181 181 // add way referrer 182 182 List<OsmPrimitive> refs = n.getReferrers(); 183 DatasetCollection<Way> wayRefs = newDatasetCollection<Way>(refs, OsmPrimitive.wayPredicate);183 Collection<Way> wayRefs = new SubclassFilteredCollection<OsmPrimitive, Way>(refs, OsmPrimitive.wayPredicate); 184 184 if (wayRefs.size() > 0) { 185 185 s.append(" way referrer:\n"); … … 192 192 protected void addRelationReferrer(StringBuilder s, OsmPrimitive o) { 193 193 List<OsmPrimitive> refs = o.getReferrers(); 194 DatasetCollection<Relation> relRefs = newDatasetCollection<Relation>(refs, OsmPrimitive.relationPredicate);194 Collection<Relation> relRefs = new SubclassFilteredCollection<OsmPrimitive, Relation>(refs, OsmPrimitive.relationPredicate); 195 195 if (relRefs.size() > 0) { 196 196 s.append(" relation referrer:\n"); -
trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
r3669 r3801 50 50 import org.openstreetmap.josm.data.osm.DataSetMerger; 51 51 import org.openstreetmap.josm.data.osm.DataSource; 52 import org.openstreetmap.josm.data.osm.DatasetCollection;53 52 import org.openstreetmap.josm.data.osm.DatasetConsistencyTest; 54 53 import org.openstreetmap.josm.data.osm.Node; … … 71 70 import org.openstreetmap.josm.gui.dialogs.LayerListPopup; 72 71 import org.openstreetmap.josm.tools.DateUtils; 72 import org.openstreetmap.josm.tools.FilteredCollection; 73 73 import org.openstreetmap.josm.tools.GBC; 74 74 import org.openstreetmap.josm.tools.ImageProvider; … … 271 271 272 272 @Override public String getToolTipText() { 273 int nodes = new DatasetCollection<OsmPrimitive>(data.getNodes(), OsmPrimitive.nonDeletedPredicate).size();274 int ways = new DatasetCollection<OsmPrimitive>(data.getWays(), OsmPrimitive.nonDeletedPredicate).size();273 int nodes = new FilteredCollection<Node>(data.getNodes(), OsmPrimitive.nonDeletedPredicate).size(); 274 int ways = new FilteredCollection<Way>(data.getWays(), OsmPrimitive.nonDeletedPredicate).size(); 275 275 276 276 String tool = trn("{0} node", "{0} nodes", nodes, nodes)+", "; -
trunk/src/org/openstreetmap/josm/tools/SubclassFilteredCollection.java
r3800 r3801 1 1 // License: GPL. For details, see LICENSE file. 2 package org.openstreetmap.josm. data.osm;2 package org.openstreetmap.josm.tools; 3 3 4 4 import java.util.AbstractCollection; … … 6 6 import java.util.Iterator; 7 7 8 import org.openstreetmap.josm.tools.Predicate; 8 /** 9 * Filtered view of a collection. 10 * (read-only collection, but elements can be changed, of course) 11 * Lets you iterate through those elements of a given collection that satisfy a 12 * certain condition (imposed by a predicate). 13 * @param <S> element type of the underlying collection 14 * @param <T> element type of filtered collection (and subclass of S). The predicate 15 * must except only objects of type T. 16 */ 17 public class SubclassFilteredCollection<S, T extends S> extends AbstractCollection<T> { 9 18 10 public class DatasetCollection<T extends OsmPrimitive> extends AbstractCollection<T> { 19 private final Collection<? extends S> collection; 20 private final Predicate<? super S> predicate; 21 int size = -1; 11 22 12 23 private class FilterIterator implements Iterator<T> { 13 24 14 private final Iterator<? extends OsmPrimitive> iterator;15 private OsmPrimitivecurrent;25 private final Iterator<? extends S> iterator; 26 private S current; 16 27 17 public FilterIterator(Iterator<? extends OsmPrimitive> iterator) {28 public FilterIterator(Iterator<? extends S> iterator) { 18 29 this.iterator = iterator; 19 30 } … … 35 46 } 36 47 37 @SuppressWarnings("unchecked")38 48 public T next() { 39 49 findNext(); 40 OsmPrimitiveold = current;50 S old = current; 41 51 current = null; 42 return (T)old; 52 return (T) old; 43 53 } 44 54 … … 48 58 } 49 59 50 private final Collection<? extends OsmPrimitive> primitives; 51 private final Predicate<OsmPrimitive> predicate; 52 int size = -1; 53 54 public DatasetCollection(Collection<? extends OsmPrimitive> primitives, Predicate<OsmPrimitive> predicate) { 55 this.primitives = primitives; 60 public SubclassFilteredCollection(Collection<? extends S> collection, Predicate<? super S> predicate) { 61 this.collection = collection; 56 62 this.predicate = predicate; 57 63 } … … 59 65 @Override 60 66 public Iterator<T> iterator() { 61 return new FilterIterator( primitives.iterator());67 return new FilterIterator(collection.iterator()); 62 68 } 63 69
Note:
See TracChangeset
for help on using the changeset viewer.