Changeset 2412 in josm for trunk


Ignore:
Timestamp:
2009-11-08T17:51:35+01:00 (14 years ago)
Author:
jttt
Message:

Use refererrers in Draw, SplitWay and UnGlue actions

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

Legend:

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

    r2381 r2412  
    22package org.openstreetmap.josm.actions;
    33
     4import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
    45import static org.openstreetmap.josm.tools.I18n.tr;
    5 import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
    66import static org.openstreetmap.josm.tools.I18n.trn;
    77
     
    1515import java.util.LinkedList;
    1616import java.util.List;
     17import java.util.Map;
    1718import java.util.Set;
    1819import java.util.Map.Entry;
     
    101102        // is exactly one way that all nodes are part of.
    102103        if (selectedWay == null && selectedNodes != null) {
    103             HashMap<Way, Integer> wayOccurenceCounter = new HashMap<Way, Integer>();
     104            Map<Way, Integer> wayOccurenceCounter = new HashMap<Way, Integer>();
    104105            for (Node n : selectedNodes) {
    105                 for (Way w : getCurrentDataSet().getWays()) {
     106                for (Way w : OsmPrimitive.getFilteredList(n.getReferrers(), Way.class)) {
    106107                    if (!w.isUsable()) {
    107108                        continue;
     
    294295        // now copy all relations to new way also
    295296
    296         for (Relation r : getCurrentDataSet().getRelations()) {
     297        for (Relation r : OsmPrimitive.getFilteredList(selectedWay.getReferrers(), Relation.class)) {
    297298            if (!r.isUsable()) {
    298299                continue;
  • trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java

    r2410 r2412  
    6767        if (checkSelection(selection)) {
    6868            int count = 0;
    69             for (Way w : getCurrentDataSet().getWays()) {
     69            for (Way w : OsmPrimitive.getFilteredList(selectedNode.getReferrers(), Way.class)) {
    7070                if (!w.isUsable() || w.getNodesCount() < 1) {
    71                     continue;
    72                 }
    73                 if (!w.containsNode(selectedNode)) {
    7471                    continue;
    7572                }
     
    9289            for (Node n : selectedNodes) {
    9390                int count = 0;
    94                 for (Way w : getCurrentDataSet().getWays()) {
     91                for (Way w : OsmPrimitive.getFilteredList(n.getReferrers(), Way.class)) {
    9592                    if (w.isDeleted() || w.incomplete || w.getNodesCount() < 1) {
    96                         continue;
    97                     }
    98                     if (!w.containsNode(n)) {
    9993                        continue;
    10094                    }
     
    189183        if (!(n instanceof Node))
    190184            return false;
    191         boolean isPartOfWay = false;
    192         for (Way w : getCurrentDataSet().getWays()) {
    193             if (w.containsNode((Node) n)) {
    194                 isPartOfWay = true;
    195                 break;
    196             }
    197         }
    198         if (!isPartOfWay)
     185        if (OsmPrimitive.getFilteredList(n.getReferrers(), Way.class).isEmpty())
    199186            return false;
    200187
     
    320307        Relation newRel = null;
    321308        HashSet<String> rolesToReAdd = null;
    322         for (Relation r : getCurrentDataSet().getRelations()) {
     309        for (Relation r : OsmPrimitive.getFilteredList(originalNode.getReferrers(), Relation.class)) {
    323310            if (r.isDeleted() || r.incomplete) {
    324311                continue;
     
    365352            boolean firstway = true;
    366353            // modify all ways containing the nodes
    367             for (Way w : getCurrentDataSet().getWays()) {
     354            for (Way w : OsmPrimitive.getFilteredList(selectedNode.getReferrers(), Way.class)) {
    368355                if (w.isDeleted() || w.incomplete || w.getNodesCount() < 1) {
    369                     continue;
    370                 }
    371                 if (!w.containsNode(selectedNode)) {
    372356                    continue;
    373357                }
  • trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java

    r2407 r2412  
    773773    public Way getWayForNode(Node n) {
    774774        Way way = null;
    775         for (Way w : getCurrentDataSet().getWays()) {
     775        for (Way w : OsmPrimitive.getFilteredList(n.getReferrers(), Way.class)) {
    776776            if (!w.isUsable() || w.getNodesCount() < 1) {
    777777                continue;
  • trunk/src/org/openstreetmap/josm/data/osm/DataSet.java

    r2405 r2412  
    753753    }
    754754
    755     public Set<Relation> getReferringRelations(Collection<? extends OsmPrimitive> primitives) {
    756         return this.getReferringRelations(new HashSet<OsmPrimitive>(primitives));
    757     }
    758     public Set<Relation> getReferringRelations(Set<? extends OsmPrimitive> referred) {
    759         HashSet<Relation> ret = new HashSet<Relation>();
    760         if (referred == null) return ret;
    761         referred.remove(null); // just in case - remove null element from primitives
    762         for (Relation r: relations) {
    763             if (r.isDeleted() || r.incomplete) {
    764                 continue;
    765             }
    766             Set<OsmPrimitive> memberPrimitives = r.getMemberPrimitives();
    767             memberPrimitives.retainAll(referred);
    768             if (!memberPrimitives.isEmpty()) {
    769                 ret.add(r);
    770             }
    771         }
    772         return ret;
    773     }
    774 
    775755    /**
    776756     * Reindex all nodes and ways after their coordinates were changed. This is a temporary solution, reindexing should
Note: See TracChangeset for help on using the changeset viewer.