Ignore:
Timestamp:
2016-11-18T20:00:49+01:00 (8 years ago)
Author:
simon04
Message:

JOSM/wikipedia: Refactoring (wikipediaLang as field)

Location:
applications/editors/josm/plugins/wikipedia/src/org/wikipedia
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaApp.java

    r33074 r33075  
    4444    public static final Pattern WIKIDATA_PATTERN = Pattern.compile("Q\\d+");
    4545    private static final XPath X_PATH = XPath.getInstance();
    46 
    47     private WikipediaApp() {
     46    private final String wikipediaLang;
     47
     48    private WikipediaApp(final String wikipediaLang) {
     49        this.wikipediaLang = wikipediaLang;
     50    }
     51
     52    public static WikipediaApp forLanguage(final String wikipediaLang) {
     53        return new WikipediaApp(wikipediaLang);
    4854    }
    4955
     
    5662    }
    5763
    58     public static String getSiteUrl(String wikipediaLang) {
     64    public String getSiteUrl() {
    5965        if ("wikidata".equals(wikipediaLang)) {
    6066            return "https://www.wikidata.org";
     
    6470    }
    6571
    66     public static List<WikipediaEntry> getEntriesFromCoordinates(String wikipediaLang, LatLon min, LatLon max) {
     72    public List<WikipediaEntry> getEntriesFromCoordinates(LatLon min, LatLon max) {
    6773        try {
    6874            // construct url
    69             final String url = getSiteUrl(wikipediaLang) + "/w/api.php"
     75            final String url = getSiteUrl() + "/w/api.php"
    7076                    + "?action=query"
    7177                    + "&list=geosearch"
     
    120126    }
    121127
    122     public static List<WikipediaEntry> getEntriesFromCategory(String wikipediaLang, String category, int depth) {
     128    public List<WikipediaEntry> getEntriesFromCategory(String category, int depth) {
    123129        try {
    124130            final String url = "https://tools.wmflabs.org/cats-php/"
     
    145151    }
    146152
    147     public static void updateWIWOSMStatus(String wikipediaLang, List<WikipediaEntry> entries) {
     153    public void updateWIWOSMStatus(List<WikipediaEntry> entries) {
    148154        if (entries.size() > 20) {
    149             partitionList(entries, 20).forEach(chunk -> updateWIWOSMStatus(wikipediaLang, chunk));
     155            partitionList(entries, 20).forEach(chunk -> updateWIWOSMStatus(chunk));
    150156            return;
    151157        }
     
    179185    }
    180186
    181     public static Stream<String> getWikipediaArticles(final String wikipediaLang, OsmPrimitive p) {
     187    public Stream<String> getWikipediaArticles(final OsmPrimitive p) {
    182188        if ("wikidata".equals(wikipediaLang)) {
    183189            return Stream.of(p.get("wikidata")).filter(Objects::nonNull);
     
    194200     * Returns a map mapping wikipedia articles to wikidata ids.
    195201     */
    196     public static Map<String, String> getWikidataForArticles(String wikipediaLang, List<String> articles) {
     202    public Map<String, String> getWikidataForArticles(Collection<String> articles) {
    197203        return articles.stream()
    198204                .distinct()
     
    216222                .values()
    217223                .stream()
    218                 .flatMap(chunk -> getWikidataForArticles0(wikipediaLang, chunk).entrySet().stream())
     224                .flatMap(chunk -> getWikidataForArticles0(chunk).entrySet().stream())
    219225                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
    220226    }
    221227
    222     private static Map<String, String> getWikidataForArticles0(String wikipediaLang, List<String> articles) {
     228    private Map<String, String> getWikidataForArticles0(List<String> articles) {
    223229        if (articles.isEmpty()) {
    224230            return Collections.emptyMap();
     
    249255    }
    250256
    251     public static List<String> getCategoriesForPrefix(final String wikipediaLang, final String prefix) {
    252         try {
    253             final String url = getSiteUrl(wikipediaLang) + "/w/api.php"
     257    public List<String> getCategoriesForPrefix(final String prefix) {
     258        try {
     259            final String url = getSiteUrl() + "/w/api.php"
    254260                    + "?action=query"
    255261                    + "&list=prefixsearch"
     
    334340    }
    335341
    336     public static Collection<WikipediaEntry> getInterwikiArticles(String wikipediaLang, String article) {
    337         try {
    338             final String url = getSiteUrl(wikipediaLang) + "/w/api.php" +
     342    public Collection<WikipediaEntry> getInterwikiArticles(String article) {
     343        try {
     344            final String url = getSiteUrl() + "/w/api.php" +
    339345                    "?action=query" +
    340346                    "&prop=langlinks" +
     
    356362    }
    357363
    358     public static LatLon getCoordinateForArticle(String wikipediaLang, String article) {
    359         try {
    360             final String url = getSiteUrl(wikipediaLang) + "/w/api.php" +
     364    public LatLon getCoordinateForArticle(String article) {
     365        try {
     366            final String url = getSiteUrl() + "/w/api.php" +
    361367                    "?action=query" +
    362368                    "&prop=coordinates" +
  • applications/editors/josm/plugins/wikipedia/src/org/wikipedia/actions/FetchWikidataAction.java

    r32891 r33075  
    129129                    "Fetching {0} Wikidata ID for language ''{1}''",
    130130                    "Fetching {0} Wikidata IDs for language ''{1}''", size, size, lang));
    131             final Map<String, String> wikidataByWikipedia = WikipediaApp.getWikidataForArticles(lang, new ArrayList<>(byArticle.keySet()));
     131            final Map<String, String> wikidataByWikipedia = WikipediaApp.forLanguage(lang).getWikidataForArticles(byArticle.keySet());
    132132            ConditionalOptionPaneUtil.startBulkOperation(GuiUtils.PREF_OVERWRITE);
    133133            for (Map.Entry<String, Set<OsmPrimitive>> i : byArticle.entrySet()) {
  • applications/editors/josm/plugins/wikipedia/src/org/wikipedia/actions/WikipediaAddNamesAction.java

    r32891 r33075  
    3131        final WikipediaEntry wp = WikipediaEntry.parseTag("wikipedia", getWikipediaValue());
    3232        List<String[]> tags = new ArrayList<>();
    33         WikipediaApp.getInterwikiArticles(wp.lang, wp.article).stream()
     33        WikipediaApp.forLanguage(wp.lang).getInterwikiArticles(wp.article).stream()
    3434                .filter(this::useWikipediaLangArticle)
    3535                .map(i -> new String[]{"name:" + i.lang, i.article})
  • applications/editors/josm/plugins/wikipedia/src/org/wikipedia/data/WikipediaEntry.java

    r32892 r33075  
    8080
    8181    public String getBrowserUrl() {
    82         return WikipediaApp.getSiteUrl(lang) + "/wiki/" + Utils.encodeUrl(article.replace(" ", "_"));
     82        return WikipediaApp.forLanguage(lang).getSiteUrl() + "/wiki/" + Utils.encodeUrl(article.replace(" ", "_"));
    8383    }
    8484
  • applications/editors/josm/plugins/wikipedia/src/org/wikipedia/gui/WikipediaCategorySearchDialog.java

    r32887 r33075  
    5858                final List<String> entries = query == null || query.isEmpty()
    5959                        ? Collections.emptyList()
    60                         : WikipediaApp.getCategoriesForPrefix(WikipediaToggleDialog.wikipediaLang.get(), query);
     60                        : WikipediaApp.forLanguage(WikipediaToggleDialog.wikipediaLang.get()).getCategoriesForPrefix(query);
    6161                GuiHelper.runInEDT(() -> lsResultModel.setItems(entries));
    6262            }, 200, TimeUnit.MILLISECONDS);
  • applications/editors/josm/plugins/wikipedia/src/org/wikipedia/gui/WikipediaToggleDialog.java

    r33017 r33075  
    113113    private void updateTitle() {
    114114        final String lang = getLanguageOfFirstItem();
    115         final String host = WikipediaApp.getSiteUrl(lang).split("/+")[1];
     115        final String host = WikipediaApp.forLanguage(lang).getSiteUrl().split("/+")[1];
    116116        if (titleContext == null) {
    117117            setTitle(host);
     
    155155                    @Override
    156156                    List<WikipediaEntry> getEntries() {
    157                         return WikipediaApp.getEntriesFromCoordinates(
    158                                 wikidata ? "wikidata" : wikipediaLang.get(), min, max);
     157                        return WikipediaApp.forLanguage(wikidata ? "wikidata" : wikipediaLang.get())
     158                                .getEntriesFromCoordinates(min, max);
    159159                    }
    160160                }.execute();
     
    175175            publish(entries.toArray(new WikipediaEntry[entries.size()]));
    176176            WikipediaApp.partitionList(entries, 20).forEach(chunk -> {
    177                 WikipediaApp.updateWIWOSMStatus(chunk.get(0).lang, chunk);
     177                WikipediaApp.forLanguage(chunk.get(0).lang).updateWIWOSMStatus(chunk);
    178178                list.repaint();
    179179            });
     
    217217                @Override
    218218                List<WikipediaEntry> getEntries() {
    219                     return WikipediaApp.getEntriesFromCategory(
    220                             wikipediaLang.get(), category, Main.pref.getInteger("wikipedia.depth", 3));
     219                    return WikipediaApp.forLanguage(wikipediaLang.get())
     220                            .getEntriesFromCategory(category, Main.pref.getInteger("wikipedia.depth", 3));
    221221                }
    222222            }.execute();
     
    341341            final LatLon latLon = entry.coordinate != null
    342342                    ? entry.coordinate
    343                     : WikipediaApp.getCoordinateForArticle(entry.lang, entry.article);
     343                    : WikipediaApp.forLanguage(entry.lang).getCoordinateForArticle(entry.article);
    344344            if (latLon == null) {
    345345                return;
     
    354354        if (Main.main != null && Main.getLayerManager().getEditDataSet() != null) {
    355355            Main.getLayerManager().getEditDataSet().allPrimitives().stream()
    356                     .flatMap(p -> WikipediaApp.getWikipediaArticles(language, p))
     356                    .flatMap(p -> WikipediaApp.forLanguage(language).getWikipediaArticles(p))
    357357                    .forEach(articles::add);
    358358        }
Note: See TracChangeset for help on using the changeset viewer.