Ticket #16978: 16978.patch

File 16978.patch, 11.8 KB (added by GerdP, 5 years ago)
  • org/openstreetmap/josm/data/validation/tests/CrossingWays.java

     
    3737    static final String WATERWAY = "waterway";
    3838    static final String LANDUSE = "landuse";
    3939
     40    private final class MessageHelper {
     41        final String message;
     42        final int code;
     43
     44        MessageHelper(String message, int code) {
     45            super();
     46            this.message = message;
     47            this.code = code;
     48        }
     49    }
     50
    4051    /**
    4152     * Type of way. Entries have to be declared in alphabetical order, see sort below.
    4253     */
     
    6475    /** The already detected ways in error */
    6576    private final Map<List<Way>, List<WaySegment>> seenWays = new HashMap<>(50);
    6677
    67     private final int code;
     78    protected final int code;
    6879
    6980    /**
    7081     * General crossing ways test.
     
    119130        }
    120131
    121132        @Override
    122         String createMessage(Way w1, Way w2) {
     133        MessageHelper createMessage(Way w1, Way w2) {
    123134            WayType[] types = {WayType.of(w1), WayType.of(w2)};
    124135            Arrays.sort(types);
    125136
     
    126137            if (types[0] == types[1]) {
    127138                switch(types[0]) {
    128139                    case BUILDING:
    129                         return tr("Crossing buildings");
     140                        return new MessageHelper(tr("Crossing buildings"), 610);
    130141                    case HIGHWAY:
    131                         return tr("Crossing highways");
     142                        return new MessageHelper(tr("Crossing highways"), 620);
    132143                    case RAILWAY:
    133                         return tr("Crossing railways");
     144                        return new MessageHelper(tr("Crossing railways"), 630);
    134145                    case RESIDENTIAL_AREA:
    135                         return tr("Crossing residential areas");
     146                        return new MessageHelper(tr("Crossing residential areas"), 640);
    136147                    case WATERWAY:
    137                         return tr("Crossing waterways");
     148                        return new MessageHelper(tr("Crossing waterways"), 650);
    138149                    case WAY:
    139150                    default:
    140                         return tr("Crossing ways");
     151                        return new MessageHelper(tr("Crossing ways"), CROSSING_WAYS);
    141152                }
    142153            } else {
    143154                switch (types[0]) {
     
    144155                    case BUILDING:
    145156                        switch (types[1]) {
    146157                            case HIGHWAY:
    147                                 return tr("Crossing building/highway");
     158                                return new MessageHelper(tr("Crossing building/highway"), 612);
    148159                            case RAILWAY:
    149                                 return tr("Crossing building/railway");
     160                                return new MessageHelper(tr("Crossing building/railway"), 613);
    150161                            case RESIDENTIAL_AREA:
    151                                 return tr("Crossing building/residential area");
     162                                return new MessageHelper(tr("Crossing building/residential area"), 614);
    152163                            case WATERWAY:
    153                                 return tr("Crossing building/waterway");
     164                                return new MessageHelper(tr("Crossing building/waterway"), 615);
    154165                            case WAY:
    155166                            default:
    156                                 return tr("Crossing building/way");
     167                                return new MessageHelper(tr("Crossing building/way"), 611);
    157168                        }
    158169                    case HIGHWAY:
    159170                        switch (types[1]) {
    160171                            case RAILWAY:
    161                                 return tr("Crossing highway/railway");
     172                                return new MessageHelper(tr("Crossing highway/railway"), 622);
    162173                            case WATERWAY:
    163                                 return tr("Crossing highway/waterway");
     174                                return new MessageHelper(tr("Crossing highway/waterway"), 623);
    164175                            case WAY:
    165176                            default:
    166                                 return tr("Crossing highway/way");
     177                                return new MessageHelper(tr("Crossing highway/way"), 621);
    167178                        }
    168179                    case RAILWAY:
    169180                        switch (types[1]) {
    170181                            case WATERWAY:
    171                                 return tr("Crossing railway/waterway");
     182                                return new MessageHelper(tr("Crossing railway/waterway"), 632);
    172183                            case WAY:
    173184                            default:
    174                                 return tr("Crossing railway/way");
     185                                return new MessageHelper(tr("Crossing railway/way"), 631);
    175186                        }
    176187                    case RESIDENTIAL_AREA:
    177188                        switch (types[1]) {
    178189                            case WAY:
    179190                            default:
    180                                 return tr("Crossing residential area/way");
     191                                return new MessageHelper(tr("Crossing residential area/way"), 641);
    181192                        }
    182193                    case WATERWAY:
    183194                    default:
    184                         return tr("Crossing waterway/way");
     195                        return new MessageHelper(tr("Crossing waterway/way"), 651);
    185196                }
    186197            }
    187198        }
     
    213224        }
    214225
    215226        @Override
    216         String createMessage(Way w1, Way w2) {
    217             return tr("Crossing boundaries");
     227        MessageHelper createMessage(Way w1, Way w2) {
     228            return new MessageHelper(tr("Crossing boundaries"), CROSSING_BOUNDARIES);
    218229        }
    219230
    220231        @Override
     
    250261        }
    251262
    252263        @Override
    253         String createMessage(Way w1, Way w2) {
    254             return tr("Crossing barriers");
     264        MessageHelper createMessage(Way w1, Way w2) {
     265            return new MessageHelper(tr("Crossing barriers"), CROSSING_BARRIERS);
    255266        }
    256267    }
    257268
     
    285296        }
    286297
    287298        @Override
    288         String createMessage(Way w1, Way w2) {
    289             return tr("Self-crossing ways");
     299        MessageHelper createMessage(Way w1, Way w2) {
     300            return new MessageHelper(tr("Self-crossing ways"), CROSSING_SELF);
    290301        }
    291302    }
    292303
     
    338349
    339350    abstract boolean ignoreWaySegmentCombination(Way w1, Way w2);
    340351
    341     abstract String createMessage(Way w1, Way w2);
     352    abstract MessageHelper createMessage(Way w1, Way w2);
    342353
    343354    @Override
    344355    public void visit(Way w) {
     
    354365            final EastNorth en1 = es1.getFirstNode().getEastNorth();
    355366            final EastNorth en2 = es1.getSecondNode().getEastNorth();
    356367            if (en1 == null || en2 == null) {
    357                 Logging.warn("Crossing ways test skipped "+es1);
     368                Logging.warn("Crossing ways test skipped " + es1);
    358369                continue;
    359370            }
    360371            for (List<WaySegment> segments : getSegments(cellSegments, en1, en2)) {
     
    375386                        highlight.add(es1);
    376387                        highlight.add(es2);
    377388
    378                         final String message = createMessage(es1.way, es2.way);
    379                         errors.add(TestError.builder(this, Severity.WARNING, code)
    380                                 .message(message)
     389                        final MessageHelper message = createMessage(es1.way, es2.way);
     390                        errors.add(TestError.builder(this, Severity.WARNING, message.code)
     391                                .message(message.message)
    381392                                .primitives(prims)
    382393                                .highlightWaySegments(highlight)
    383394                                .build());
  • org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java

     
    4545 * @author frsantos
    4646 */
    4747public abstract class UnconnectedWays extends Test {
     48    private final int code;
    4849
    4950    /**
    5051     * Unconnected highways test.
    5152     */
    5253    public static class UnconnectedHighways extends UnconnectedWays {
     54        static final int UNCONNECTED_HIGHWAYS = 1311;
    5355
    5456        /**
    5557         * Constructs a new {@code UnconnectedHighways} test.
    5658         */
    5759        public UnconnectedHighways() {
    58             super(tr("Unconnected highways"));
     60            super(tr("Unconnected highways"), UNCONNECTED_HIGHWAYS);
    5961        }
    6062
    6163        @Override
     
    6870     * Unconnected railways test.
    6971     */
    7072    public static class UnconnectedRailways extends UnconnectedWays {
    71 
     73        static final int UNCONNECTED_RAILWAYS = 1321;
    7274        /**
    7375         * Constructs a new {@code UnconnectedRailways} test.
    7476         */
    7577        public UnconnectedRailways() {
    76             super(tr("Unconnected railways"));
     78            super(tr("Unconnected railways"), UNCONNECTED_RAILWAYS);
    7779        }
    7880
    7981        @Override
     
    8688     * Unconnected waterways test.
    8789     */
    8890    public static class UnconnectedWaterways extends UnconnectedWays {
    89 
     91        static final int UNCONNECTED_WATERWAYS = 1331;
    9092        /**
    9193         * Constructs a new {@code UnconnectedWaterways} test.
    9294         */
    9395        public UnconnectedWaterways() {
    94             super(tr("Unconnected waterways"));
     96            super(tr("Unconnected waterways"), UNCONNECTED_WATERWAYS);
    9597        }
    9698
    9799        @Override
     
    104106     * Unconnected natural/landuse test.
    105107     */
    106108    public static class UnconnectedNaturalOrLanduse extends UnconnectedWays {
    107 
     109        static final int UNCONNECTED_NATURAL_OR_LANDUSE = 1341;
    108110        /**
    109111         * Constructs a new {@code UnconnectedNaturalOrLanduse} test.
    110112         */
    111113        public UnconnectedNaturalOrLanduse() {
    112             super(tr("Unconnected natural lands and landuses"));
     114            super(tr("Unconnected natural lands and landuses"), UNCONNECTED_NATURAL_OR_LANDUSE);
    113115        }
    114116
    115117        @Override
     
    122124     * Unconnected power ways test.
    123125     */
    124126    public static class UnconnectedPower extends UnconnectedWays {
    125 
     127        static final int UNCONNECTED_POWER = 1351;
    126128        /**
    127129         * Constructs a new {@code UnconnectedPower} test.
    128130         */
    129131        public UnconnectedPower() {
    130             super(tr("Unconnected power ways"));
     132            super(tr("Unconnected power ways"), UNCONNECTED_POWER);
    131133        }
    132134
    133135        @Override
     
    155157     * @since 6691
    156158     */
    157159    public UnconnectedWays(String title) {
     160        this(title, UNCONNECTED_WAYS);
     161
     162    }
     163
     164    /**
     165     * Constructs a new {@code UnconnectedWays} test with the given code.
     166     * @param title The test title
     167     * @param code The test code
     168     * @since 14431
     169     */
     170    public UnconnectedWays(String title, int code) {
    158171        super(title, tr("This test checks if a way has an endpoint very near to another way."));
     172        this.code = code;
    159173    }
    160174
    161175    @Override
     
    267281
    268282    protected final void addErrors(Severity severity, Map<Node, Way> errorMap, String message) {
    269283        for (Map.Entry<Node, Way> error : errorMap.entrySet()) {
    270             errors.add(TestError.builder(this, severity, UNCONNECTED_WAYS)
     284            errors.add(TestError.builder(this, severity, code)
    271285                    .message(message)
    272286                    .primitives(error.getKey(), error.getValue())
    273287                    .highlight(error.getKey())