Changeset 3823 in josm
- Timestamp:
- 2011-01-26T22:12:31+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/PurgeAction.java
r3479 r3823 34 34 import org.openstreetmap.josm.data.osm.OsmPrimitive; 35 35 import org.openstreetmap.josm.data.osm.Relation; 36 import org.openstreetmap.josm.data.osm.RelationMember; 36 37 import org.openstreetmap.josm.data.osm.Way; 37 38 import org.openstreetmap.josm.gui.ExtendedDialog; … … 156 157 } 157 158 159 if (Main.pref.getBoolean("purge.add_relations_with_only_incomplete_members", true)) { 160 Set<Relation> relSet = new HashSet<Relation>(); 161 for (OsmPrimitive osm : toPurgeChecked) { 162 for (OsmPrimitive parent : osm.getReferrers()) { 163 if (parent instanceof Relation 164 && !(toPurgeChecked.contains(parent)) 165 && hasOnlyIncompleteMembers((Relation) parent, toPurgeChecked, relSet)) { 166 relSet.add((Relation) parent); 167 } 168 } 169 } 170 171 /** 172 * Add higher level relations (list gets extended while looping over it) 173 */ 174 List<Relation> relLst = new ArrayList<Relation>(relSet); 175 for (int i=0; i<relLst.size(); ++i) { 176 for (OsmPrimitive parent : relLst.get(i).getReferrers()) { 177 if (!(toPurgeChecked.contains(parent)) 178 && hasOnlyIncompleteMembers((Relation) parent, toPurgeChecked, relLst)) { 179 relLst.add((Relation) parent); 180 } 181 } 182 } 183 relSet = new HashSet<Relation>(relLst); 184 toPurgeChecked.addAll(relSet); 185 toPurgeAdditionally.addAll(relSet); 186 } 187 158 188 boolean modified = false; 159 189 for (OsmPrimitive osm : toPurgeChecked) { … … 269 299 setEnabled(selection != null && !selection.isEmpty()); 270 300 } 301 302 private boolean hasOnlyIncompleteMembers(Relation r, Collection<OsmPrimitive> toPurge, Collection<? extends OsmPrimitive> moreToPurge) { 303 for (RelationMember m : r.getMembers()) { 304 if (!m.getMember().isIncomplete() && !toPurge.contains(m.getMember()) && !moreToPurge.contains(m.getMember())) 305 return false; 306 } 307 return true; 308 } 271 309 }
Note:
See TracChangeset
for help on using the changeset viewer.