Ticket #4146: FixDownloadIncompleteWays.patch

File FixDownloadIncompleteWays.patch, 3.6 KB (added by mjulius, 14 years ago)
  • src/org/openstreetmap/josm/data/osm/DataSetMerger.java

     
    144144        Way myWay = (Way)getMergeTarget(other);
    145145        if (myWay == null)
    146146            throw new RuntimeException(tr("Missing merge target for way with id {0}", other.getUniqueId()));
    147         myWay.setHasIncompleteNodes();
    148147    }
    149148
    150149    /**
     
    162161        if (myNode == null)
    163162            throw new RuntimeException(tr("Missing merge target for node with id {0}", other.getUniqueId()));
    164163        if (myNode.isIncomplete() || myNode.isDeleted() || !myNode.isVisible()) return;
    165 
    166         for (Way w: OsmPrimitive.getFilteredList(myNode.getReferrers(), Way.class)) {
    167             w.setHasIncompleteNodes();
    168         }
    169164    }
    170165
    171166    /**
  • src/org/openstreetmap/josm/data/osm/Way.java

     
    2525     */
    2626    private Node[] nodes = new Node[0];
    2727    private BBox bbox;
    28     private boolean hasIncompleteNodes;
    2928
    3029    /**
    3130     *
     
    376375        bbox = new BBox(this);
    377376    }
    378377
    379     //TODO This method should not be necessary. hasIncomplete state should be updated automatically when incomplete state of nodes change
    380     public void setHasIncompleteNodes() {
    381         hasIncompleteNodes = false;
     378    public boolean hasIncompleteNodes() {
    382379        for (Node node:getNodes()) {
    383             if (node.isIncomplete()) {
    384                 hasIncompleteNodes = true;
    385                 break;
    386             }
     380            if (node.isIncomplete())
     381                return true;
    387382        }
     383        return false;
    388384    }
    389385
    390     public boolean hasIncompleteNodes() {
    391         return hasIncompleteNodes;
    392     }
    393 
    394386    @Override
    395387    public boolean isUsable() {
    396388        return super.isUsable() && !hasIncompleteNodes();
  • src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java

     
    192192                    continue;
    193193                }
    194194            }
    195             appendGeneric(member.getMember());
     195            if (!member.getMember().isIncomplete()) {
     196                appendGeneric(member.getMember());
     197            }
    196198        }
    197199        return this;
    198200    }
     
    374376
    375377    protected void rememberNodesOfIncompleteWaysToLoad(DataSet from) {
    376378        for (Way w: from.getWays()) {
    377             if (w.isIncomplete()) {
     379            if (w.hasIncompleteNodes()) {
    378380                for (Node n: w.getNodes()) {
    379381                    if (n.isIncomplete()) {
    380382                        nodes.add(n.getId());
  • src/org/openstreetmap/josm/io/OsmReader.java

     
    481481                wayNodes.add(n);
    482482            }
    483483            w.setNodes(wayNodes);
    484             w.setHasIncompleteNodes();
    485484            if (w.hasIncompleteNodes()) {
    486485                if (logger.isLoggable(Level.FINE)) {
    487486                    logger.fine(tr("Marked way {0} with {1} nodes incomplete because at least one node was missing in the " +