Ignore:
Timestamp:
2014-01-31T01:31:48+01:00 (10 years ago)
Author:
Don-vip
Message:

refactor UnconnectedWays test

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java

    r6763 r6791  
    167167    }
    168168
    169     @Override
    170     public void endTest() {
     169    protected Map<Node, Way> getWayEndNodesNearOtherHighway() {
    171170        Map<Node, Way> map = new HashMap<Node, Way>();
    172171        for (int iter = 0; iter < 1; iter++) {
    173172            for (MyWaySegment s : ways) {
    174                 Collection<Node> nearbyNodes = s.nearbyNodes(mindist);
    175                 for (Node en : nearbyNodes) {
     173                if (isCanceled()) {
     174                    map.clear();
     175                    return map;
     176                }
     177                for (Node en : s.nearbyNodes(mindist)) {
    176178                    if (en == null || !s.highway || !endnodes_highway.contains(en)) {
    177179                        continue;
     
    191193                    map.put(en, s.w);
    192194                }
    193                 if(isCanceled())
    194                     return;
    195             }
    196         }
    197         for (Map.Entry<Node, Way> error : map.entrySet()) {
    198             errors.add(new TestError(this, Severity.WARNING,
    199                     tr("Way end node near other highway"),
    200                     UNCONNECTED_WAYS,
    201                     Arrays.asList(error.getKey(), error.getValue()),
    202                     Arrays.asList(error.getKey())));
    203         }
    204         map.clear();
     195            }
     196        }
     197        return map;
     198    }
     199
     200    protected Map<Node, Way> getWayEndNodesNearOtherWay() {
     201        Map<Node, Way> map = new HashMap<Node, Way>();
    205202        for (MyWaySegment s : ways) {
    206             if(isCanceled())
    207                 return;
     203            if (isCanceled()) {
     204                map.clear();
     205                return map;
     206            }
    208207            for (Node en : s.nearbyNodes(mindist)) {
    209208                if (en.isConnectedTo(s.w.getNodes(), 3 /* hops */, null)) {
     
    217216            }
    218217        }
    219         for (Map.Entry<Node, Way> error : map.entrySet()) {
    220             errors.add(new TestError(this, Severity.WARNING,
    221                     tr("Way end node near other way"),
    222                     UNCONNECTED_WAYS,
     218        return map;
     219    }
     220
     221    protected Map<Node, Way> getWayNodesNearOtherWay() {
     222        Map<Node, Way> map = new HashMap<Node, Way>();
     223        for (MyWaySegment s : ways) {
     224            if (isCanceled()) {
     225                map.clear();
     226                return map;
     227            }
     228            for (Node en : s.nearbyNodes(minmiddledist)) {
     229                if (en.isConnectedTo(s.w.getNodes(), 3 /* hops */, null)) {
     230                    continue;
     231                }
     232                if (!middlenodes.contains(en)) {
     233                    continue;
     234                }
     235                map.put(en, s.w);
     236            }
     237        }
     238        return map;
     239    }
     240
     241    protected Map<Node, Way> getConnectedWayEndNodesNearOtherWay() {
     242        Map<Node, Way> map = new HashMap<Node, Way>();
     243        for (MyWaySegment s : ways) {
     244            if (isCanceled()) {
     245                map.clear();
     246                return map;
     247            }
     248            for (Node en : s.nearbyNodes(minmiddledist)) {
     249                if (en.isConnectedTo(s.w.getNodes(), 3 /* hops */, null)) {
     250                    continue;
     251                }
     252                if (!othernodes.contains(en)) {
     253                    continue;
     254                }
     255                map.put(en, s.w);
     256            }
     257        }
     258        return map;
     259    }
     260
     261    protected final void addErrors(Severity severity, Map<Node, Way> errorMap, String message) {
     262        for (Map.Entry<Node, Way> error : errorMap.entrySet()) {
     263            errors.add(new TestError(this, severity, message, UNCONNECTED_WAYS,
    223264                    Arrays.asList(error.getKey(), error.getValue()),
    224265                    Arrays.asList(error.getKey())));
    225266        }
     267    }
     268
     269    @Override
     270    public void endTest() {
     271        addErrors(Severity.WARNING, getWayEndNodesNearOtherHighway(), tr("Way end node near other highway"));
     272        addErrors(Severity.WARNING, getWayEndNodesNearOtherWay(), tr("Way end node near other way"));
    226273        /* the following two use a shorter distance */
    227274        if (minmiddledist > 0.0) {
    228             map.clear();
    229             for (MyWaySegment s : ways) {
    230                 if(isCanceled())
    231                     return;
    232                 for (Node en : s.nearbyNodes(minmiddledist)) {
    233                     if (en.isConnectedTo(s.w.getNodes(), 3 /* hops */, null)) {
    234                         continue;
    235                     }
    236                     if (!middlenodes.contains(en)) {
    237                         continue;
    238                     }
    239                     map.put(en, s.w);
    240                 }
    241             }
    242             for (Map.Entry<Node, Way> error : map.entrySet()) {
    243                 errors.add(new TestError(this, Severity.OTHER,
    244                         tr("Way node near other way"),
    245                         UNCONNECTED_WAYS,
    246                         Arrays.asList(error.getKey(), error.getValue()),
    247                         Arrays.asList(error.getKey())));
    248             }
    249             map.clear();
    250             for (MyWaySegment s : ways) {
    251                 for (Node en : s.nearbyNodes(minmiddledist)) {
    252                     if (en.isConnectedTo(s.w.getNodes(), 3 /* hops */, null)) {
    253                         continue;
    254                     }
    255                     if(isCanceled())
    256                         return;
    257                     if (!othernodes.contains(en)) {
    258                         continue;
    259                     }
    260                     map.put(en, s.w);
    261                 }
    262             }
    263             for (Map.Entry<Node, Way> error : map.entrySet()) {
    264                 errors.add(new TestError(this, Severity.OTHER,
    265                         tr("Connected way end node near other way"),
    266                         UNCONNECTED_WAYS,
    267                         Arrays.asList(error.getKey(), error.getValue()),
    268                         Arrays.asList(error.getKey())));
    269             }
     275            addErrors(Severity.OTHER, getWayNodesNearOtherWay(), tr("Way node near other way"));
     276            addErrors(Severity.OTHER, getConnectedWayEndNodesNearOtherWay(), tr("Connected way end node near other way"));
    270277        }
    271278        ways = null;
Note: See TracChangeset for help on using the changeset viewer.