Changeset 15692 in josm for trunk/scripts


Ignore:
Timestamp:
2020-01-12T15:22:16+01:00 (5 years ago)
Author:
Don-vip
Message:

see #18172 - compare ELI and JOSM categories + fix missed @since xxx

Location:
trunk/scripts
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/scripts/SyncEditorLayerIndex.java

    r15658 r15692  
    3131import java.util.Objects;
    3232import java.util.Set;
     33import java.util.function.BiConsumer;
    3334import java.util.function.Function;
    3435import java.util.regex.Matcher;
     
    5657import org.openstreetmap.josm.spi.preferences.Config;
    5758import org.openstreetmap.josm.tools.ImageProvider;
     59import org.openstreetmap.josm.tools.JosmRuntimeException;
    5860import org.openstreetmap.josm.tools.Logging;
    5961import org.openstreetmap.josm.tools.OptionParser;
     
    257259    }
    258260
    259     void myprintlnfinal(String s) throws IOException {
     261    void myprintlnfinal(String s) {
    260262        if (outputStream != null) {
    261             outputStream.write(s + System.getProperty("line.separator"));
     263            try {
     264                outputStream.write(s + System.getProperty("line.separator"));
     265            } catch (IOException e) {
     266                throw new JosmRuntimeException(e);
     267            }
    262268        } else {
    263269            System.out.println(s);
     
    265271    }
    266272
    267     void myprintln(String s) throws IOException {
     273    void myprintln(String s) {
    268274        if (skip.containsKey(s)) {
    269275            String color = skip.get(s);
     
    290296    }
    291297
    292     void start() throws IOException {
     298    void start() {
    293299        if (optionXhtml) {
    294300            myprintlnfinal(
     
    300306    }
    301307
    302     void end() throws IOException {
     308    void end() {
    303309        for (String s : skip.keySet()) {
    304310            myprintln("+++ Obsolete skip entry: " + s);
     
    504510    }
    505511
    506     void checkInOneButNotTheOther() throws IOException {
     512    void checkInOneButNotTheOther() {
    507513        List<String> le = new LinkedList<>(eliUrls.keySet());
    508514        List<String> lj = new LinkedList<>(josmUrls.keySet());
     
    564570    }
    565571
    566     void checkCommonEntries() throws IOException {
     572    void checkCommonEntries() {
    567573        doSameUrlButDifferentName();
    568574        doSameUrlButDifferentId();
     
    575581        doMismatchingShapes();
    576582        doMismatchingIcons();
     583        doMismatchingCategories();
    577584        doMiscellaneousChecks();
    578585    }
    579586
    580     void doSameUrlButDifferentName() throws IOException {
     587    void doSameUrlButDifferentName() {
    581588        myprintln("*** Same URL, but different name: ***");
    582589        for (String url : eliUrls.keySet()) {
     
    592599    }
    593600
    594     void doSameUrlButDifferentId() throws IOException {
     601    void doSameUrlButDifferentId() {
    595602        myprintln("*** Same URL, but different Id: ***");
    596603        for (String url : eliUrls.keySet()) {
     
    606613    }
    607614
    608     void doSameUrlButDifferentType() throws IOException {
     615    void doSameUrlButDifferentType() {
    609616        myprintln("*** Same URL, but different type: ***");
    610617        for (String url : eliUrls.keySet()) {
     
    618625    }
    619626
    620     void doSameUrlButDifferentZoomBounds() throws IOException {
     627    void doSameUrlButDifferentZoomBounds() {
    621628        myprintln("*** Same URL, but different zoom bounds: ***");
    622629        for (String url : eliUrls.keySet()) {
     
    644651    }
    645652
    646     void doSameUrlButDifferentCountryCode() throws IOException {
     653    void doSameUrlButDifferentCountryCode() {
    647654        myprintln("*** Same URL, but different country code: ***");
    648655        for (String url : eliUrls.keySet()) {
     
    660667    }
    661668
    662     void doSameUrlButDifferentQuality() throws IOException {
     669    void doSameUrlButDifferentQuality() {
    663670        myprintln("*** Same URL, but different quality: ***");
    664671        for (String url : eliUrls.keySet()) {
     
    678685    }
    679686
    680     void doSameUrlButDifferentDates() throws IOException {
     687    void doSameUrlButDifferentDates() {
    681688        myprintln("*** Same URL, but different dates: ***");
    682689        Pattern pattern = Pattern.compile("^(.*;)(\\d\\d\\d\\d)(-(\\d\\d)(-(\\d\\d))?)?$");
     
    720727    }
    721728
    722     void doSameUrlButDifferentInformation() throws IOException {
     729    void doSameUrlButDifferentInformation() {
    723730        myprintln("*** Same URL, but different information: ***");
    724731        for (String url : eliUrls.keySet()) {
     
    738745    }
    739746
    740     void compareDescriptions(JsonObject e, ImageryInfo j) throws IOException {
     747    void compareDescriptions(JsonObject e, ImageryInfo j) {
    741748        String et = getDescriptions(e).getOrDefault("en", "");
    742749        String jt = getDescriptions(j).getOrDefault("en", "");
     
    752759    }
    753760
    754     void comparePermissionReferenceUrls(JsonObject e, ImageryInfo j) throws IOException {
     761    void comparePermissionReferenceUrls(JsonObject e, ImageryInfo j) {
    755762        String et = getPermissionReferenceUrl(e);
    756763        String jt = getPermissionReferenceUrl(j);
     
    780787    }
    781788
    782     void compareAttributionUrls(JsonObject e, ImageryInfo j) throws IOException {
     789    void compareAttributionUrls(JsonObject e, ImageryInfo j) {
    783790        String et = getAttributionUrl(e);
    784791        String jt = getAttributionUrl(j);
     
    799806    }
    800807
    801     void compareAttributionTexts(JsonObject e, ImageryInfo j) throws IOException {
     808    void compareAttributionTexts(JsonObject e, ImageryInfo j) {
    802809        String et = getAttributionText(e);
    803810        String jt = getAttributionText(j);
     
    813820    }
    814821
    815     void compareProjections(JsonObject e, ImageryInfo j) throws IOException {
     822    void compareProjections(JsonObject e, ImageryInfo j) {
    816823        String et = getProjections(e).stream().sorted().collect(Collectors.joining(" "));
    817824        String jt = getProjections(j).stream().sorted().collect(Collectors.joining(" "));
     
    836843    }
    837844
    838     void compareDefaults(JsonObject e, ImageryInfo j) throws IOException {
     845    void compareDefaults(JsonObject e, ImageryInfo j) {
    839846        boolean ed = getDefault(e);
    840847        boolean jd = getDefault(j);
     
    848855    }
    849856
    850     void compareOverlays(JsonObject e, ImageryInfo j) throws IOException {
     857    void compareOverlays(JsonObject e, ImageryInfo j) {
    851858        boolean eo = getOverlay(e);
    852859        boolean jo = getOverlay(j);
     
    860867    }
    861868
    862     void compareNoTileHeaders(JsonObject e, ImageryInfo j) throws IOException {
     869    void compareNoTileHeaders(JsonObject e, ImageryInfo j) {
    863870        Map<String, Set<String>> eh = getNoTileHeader(e);
    864871        Map<String, Set<String>> jh = getNoTileHeader(j);
     
    874881    }
    875882
    876     void doMismatchingShapes() throws IOException {
     883    void doMismatchingShapes() {
    877884        myprintln("*** Mismatching shapes: ***");
    878885        for (String url : josmUrls.keySet()) {
     
    9981005    }
    9991006
    1000     void doMismatchingIcons() throws IOException {
     1007    void doMismatchingIcons() {
    10011008        myprintln("*** Mismatching icons: ***");
     1009        doMismatching(this::compareIcons);
     1010    }
     1011
     1012    void doMismatchingCategories() {
     1013        myprintln("*** Mismatching categories: ***");
     1014        doMismatching(this::compareCategories);
     1015    }
     1016
     1017    void doMismatching(BiConsumer<ImageryInfo, JsonObject> comparator) {
    10021018        for (String url : eliUrls.keySet()) {
    1003             JsonObject e = eliUrls.get(url);
    1004             if (!josmUrls.containsKey(url)) {
    1005                 continue;
    1006             }
    1007             ImageryInfo j = josmUrls.get(url);
    1008             String ij = getIcon(j);
    1009             String ie = getIcon(e);
    1010             boolean ijok = isNotBlank(ij);
    1011             boolean ieok = isNotBlank(ie);
    1012             if (ijok && !ieok) {
    1013                 if (!optionNoEli) {
    1014                     myprintln("+ No ELI icon: "+getDescription(j));
    1015                 }
    1016             } else if (!ijok && ieok) {
    1017                 myprintln("- No JOSM icon: "+getDescription(j));
    1018             } else if (ijok && ieok && !Objects.equals(ij, ie) && !(
    1019               (ie.startsWith("https://osmlab.github.io/editor-layer-index/")
    1020               || ie.startsWith("https://raw.githubusercontent.com/osmlab/editor-layer-index/")) &&
    1021               ij.startsWith("data:"))) {
    1022                 String iehttps = ie.replace("http:", "https:");
    1023                 if (ij.equals(iehttps)) {
    1024                     myprintln("+ Different icons: "+getDescription(j));
    1025                 } else {
    1026                     myprintln("* Different icons: "+getDescription(j));
    1027                 }
    1028             }
    1029         }
    1030     }
    1031 
    1032     void doMiscellaneousChecks() throws IOException {
     1019            if (josmUrls.containsKey(url)) {
     1020                comparator.accept(josmUrls.get(url), eliUrls.get(url));
     1021            }
     1022        }
     1023    }
     1024
     1025    void compareIcons(ImageryInfo j, JsonObject e) {
     1026        String ij = getIcon(j);
     1027        String ie = getIcon(e);
     1028        boolean ijok = isNotBlank(ij);
     1029        boolean ieok = isNotBlank(ie);
     1030        if (ijok && !ieok) {
     1031            if (!optionNoEli) {
     1032                myprintln("+ No ELI icon: "+getDescription(j));
     1033            }
     1034        } else if (!ijok && ieok) {
     1035            myprintln("- No JOSM icon: "+getDescription(j));
     1036        } else if (ijok && ieok && !Objects.equals(ij, ie) && !(
     1037          (ie.startsWith("https://osmlab.github.io/editor-layer-index/")
     1038          || ie.startsWith("https://raw.githubusercontent.com/osmlab/editor-layer-index/")) &&
     1039          ij.startsWith("data:"))) {
     1040            String iehttps = ie.replace("http:", "https:");
     1041            if (ij.equals(iehttps)) {
     1042                myprintln("+ Different icons: "+getDescription(j));
     1043            } else {
     1044                myprintln("* Different icons: "+getDescription(j));
     1045            }
     1046        }
     1047    }
     1048
     1049    void compareCategories(ImageryInfo j, JsonObject e) {
     1050        String cj = getCategory(j);
     1051        String ce = getCategory(e);
     1052        boolean cjok = isNotBlank(cj);
     1053        boolean ceok = isNotBlank(ce);
     1054        if (cjok && !ceok) {
     1055            if (!optionNoEli) {
     1056                myprintln("+ No ELI category: "+getDescription(j));
     1057            }
     1058        } else if (!cjok && ceok) {
     1059            myprintln("- No JOSM category: "+getDescription(j));
     1060        } else if (cjok && ceok && !Objects.equals(cj, ce)) {
     1061            myprintln("+ Different categories: "+getDescription(j));
     1062        }
     1063    }
     1064
     1065    void doMiscellaneousChecks() {
    10331066        myprintln("*** Miscellaneous checks: ***");
    10341067        Map<String, ImageryInfo> josmIds = new HashMap<>();
     
    13761409            return ((ImageryInfo) e).getImageryCategoryOriginalString();
    13771410        }
    1378         return null;
     1411        return ((Map<String, JsonObject>) e).get("properties").getString("category", null);
    13791412    }
    13801413
  • trunk/scripts/TagInfoExtract.java

    r15232 r15692  
    128128    /**
    129129     * Parse command line arguments.
     130     * @param args command line arguments
    130131     */
    131132    private void parseCommandLineArguments(String[] args) {
     
    203204         * Determine full image url (can refer to JOSM or OSM repository).
    204205         * @param path the image path
     206         * @return full image url
    205207         */
    206208        private String findImageUrl(String path) {
     
    323325        /**
    324326         * Read the style sheet file and parse the MapCSS code.
     327         * @throws IOException if any I/O error occurs
     328         * @throws ParseException in case of parsing error
    325329         */
    326330        private void parseStyleSheet() throws IOException, ParseException {
     
    335339        /**
    336340         * Collect all the tag from the style sheet.
     341         * @return list of taginfo tags
    337342         */
    338343        private List<TagInfoTag> convertStyleSheet() {
     
    403408            /**
    404409             * Create image file from StyleElement.
     410             * @param element style element
     411             * @param type object type
     412             * @param nc navigatable component
    405413             *
    406414             * @return the URL
     
    428436             * @param generateImage if true, create or find a suitable image icon and return URL,
    429437             *                       if false, just check if tag is supported and return true or false
     438             * @return URL for image icon if tag is supported
    430439             */
    431440            abstract Optional<String> findUrl(boolean generateImage);
     
    550559    /**
    551560     * Initialize the script.
     561     * @throws IOException if any I/O error occurs
    552562     */
    553563    private void init() throws IOException {
Note: See TracChangeset for help on using the changeset viewer.