Ignore:
Timestamp:
2008-06-02T11:27:13+02:00 (16 years ago)
Author:
stoecker
Message:

applied patch for bug #774

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/OverlappingWays.java

    r6302 r8043  
    33import static org.openstreetmap.josm.tools.I18n.tr;
    44
    5 import java.util.List;
    6 import java.util.ArrayList;
     5import java.util.*;
    76
    87import org.openstreetmap.josm.data.coor.LatLon;
     
    4847        public void endTest()
    4948        {
     49                Map<List<Way>, List<WaySegment>> ways_seen =
     50                        new HashMap<List<Way>, List<WaySegment>>(500);
     51
    5052                for (List<WaySegment> duplicated : nodePairs.values())
    5153                {
     54                        int highway = 0;
     55                        int railway = 0;
     56
    5257                        if (duplicated.size() > 1)
    5358                        {
    5459                                List<OsmPrimitive> prims = new ArrayList<OsmPrimitive>();
    55                                 for (WaySegment ws : duplicated) prims.add(ws.way);
    56                                 errors.add(new TestError(this, Severity.OTHER,
    57                                         tr("Overlapping ways"), prims, duplicated));
     60                                List<Way> current_ways = new ArrayList<Way>();
     61                                List<WaySegment> highlight;
     62
     63                                for (WaySegment ws : duplicated)
     64                                {
     65                                        if (ws.way.get("highway") != null)
     66                                                highway++;
     67                                        else if (ws.way.get("railway") != null)
     68                                                railway++;
     69
     70                                        prims.add(ws.way);
     71                                        current_ways.add(ws.way);
     72                                }
     73                                /* These ways not seen before
     74                                 * If two or more of the overlapping ways are
     75                                 * highways or railways mark a seperate error   
     76                                */
     77                                if ((highlight = ways_seen.get(current_ways)) == null)
     78                                {
     79                                    String errortype = tr("Overlapping ways");
     80
     81                                     if (highway >1)
     82                                        errortype = tr("Overlapping highways");
     83                                     else if (railway >1)
     84                                        errortype = tr("Overlapping railways");
     85
     86                                     errors.add(new TestError(this, Severity.OTHER,
     87                                        tr(errortype), prims, duplicated));
     88                                     ways_seen.put(current_ways, duplicated);
     89                                }
     90                                else    /* way seen, mark highlight layer only */
     91                                {
     92                                        for (WaySegment ws : duplicated)
     93                                            highlight.add(ws);
     94                                }
    5895                        }
    5996                }
Note: See TracChangeset for help on using the changeset viewer.