Changeset 16434 in josm
- Timestamp:
- 2020-05-17T00:02:18+02:00 (5 years ago)
- Location:
- trunk
- Files:
-
- 3 deleted
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ivy.xml
r16403 r16434 31 31 <dependency conf="api->default" org="ch.poole" name="OpeningHoursParser" rev="0.21.4"/> 32 32 <dependency conf="api->default" org="oauth.signpost" name="signpost-core" rev="2.0.0"/> 33 <dependency conf="api->default" org="org.webjars.npm" name="tag2link" rev="2020.5.16"/> 33 34 <!-- sources->sources --> 34 35 <dependency conf="sources->sources" org="org.openstreetmap.jmapviewer" name="jmapviewer" rev="2.13"/> … … 42 43 <dependency conf="sources->sources" org="ch.poole" name="OpeningHoursParser" rev="0.21.4"/> 43 44 <dependency conf="sources->sources" org="oauth.signpost" name="signpost-core" rev="2.0.0"/> 45 <dependency conf="sources->sources" org="org.webjars.npm" name="tag2link" rev="2020.5.16"/> 44 46 <!-- commonslang->default --> 45 47 <dependency conf="commonslang->default" org="org.apache.commons" name="commons-lang3" rev="3.10"/> -
trunk/src/org/openstreetmap/josm/tools/Tag2Link.java
r16172 r16434 5 5 import static org.openstreetmap.josm.tools.I18n.trn; 6 6 7 import java.io.BufferedReader;8 7 import java.io.IOException; 8 import java.io.InputStream; 9 9 import java.net.MalformedURLException; 10 10 import java.net.URL; 11 import java.nio.charset.StandardCharsets;12 11 import java.util.Collections; 13 12 import java.util.Map; … … 24 23 25 24 import org.openstreetmap.josm.data.osm.OsmUtils; 26 import org.openstreetmap.josm.io.CachedFile;27 import org.openstreetmap.josm.spi.preferences.Config;28 25 29 26 /** … … 80 77 try { 81 78 wikidataRules.clear(); 82 fetchRulesViaSPARQL("resource://data/tag2link.wikidata.sparql", Config.getUrls().getJOSMWebsite() + "/remote/wikidata-sparql"); 83 fetchRulesViaSPARQL("resource://data/tag2link.sophox.sparql", Config.getUrls().getJOSMWebsite() + "/remote/sophox-sparql"); 79 initializeFromResources(); 84 80 } catch (Exception e) { 85 81 Logging.error("Failed to initialize tag2link rules"); … … 89 85 90 86 /** 91 * Fetchesrules fromWikidata using a SPARQL query.87 * Initializes the tag2link rules from the resources. 92 88 * 93 * @param query the SPARQL query94 * @param server the query server95 89 * @throws IOException in case of I/O error 96 90 */ 97 private static void fetchRulesViaSPARQL(final String query, final String server) throws IOException { 98 final int initialSize = wikidataRules.size(); 99 final String sparql; 100 try (CachedFile cachedFile = new CachedFile(query)) { 101 sparql = new String(cachedFile.getByteContent(), StandardCharsets.UTF_8); 102 } 103 91 private static void initializeFromResources() throws IOException { 92 final String resource = "META-INF/resources/webjars/tag2link/2020.5.16/index.json"; 104 93 final JsonArray rules; 105 try (CachedFile cachedFile = new CachedFile(server + "?query=" + Utils.encodeUrl(sparql)); 106 BufferedReader reader = cachedFile.setHttpAccept("application/json").getContentReader(); 107 JsonReader jsonReader = Json.createReader(reader)) { 108 rules = jsonReader.read().asJsonObject().getJsonObject("results").getJsonArray("bindings"); 94 try (InputStream inputStream = Tag2Link.class.getClassLoader().getResourceAsStream(resource); 95 JsonReader jsonReader = Json.createReader(inputStream)) { 96 rules = jsonReader.readArray(); 109 97 } 110 98 111 99 for (JsonValue rule : rules) { 112 final String key = rule.asJsonObject().get JsonObject("OSM_key").getString("value");113 final String url = rule.asJsonObject().get JsonObject("formatter_URL").getString("value");100 final String key = rule.asJsonObject().getString("key"); 101 final String url = rule.asJsonObject().getString("url"); 114 102 if (key.startsWith("Key:")) { 115 103 wikidataRules.put(key.substring("Key:".length()), url); … … 120 108 .forEach(wikidataRules::remove); 121 109 122 final int size = wikidataRules.size() - initialSize;110 final int size = wikidataRules.size(); 123 111 Logging.info(trn( 124 112 "Obtained {0} Tag2Link rule from {1}", 125 113 "Obtained {0} Tag2Link rules from {1}", 126 size, size, server));114 size, size, resource)); 127 115 } 128 116 -
trunk/test/unit/org/openstreetmap/josm/tools/Tag2LinkTest.java
r15794 r16434 22 22 void checkLinks(String... expected) { 23 23 Assert.assertEquals(Arrays.asList(expected), links); 24 } 25 26 /** 27 * Unit test of function {@link Tag2Link#initialize()}. 28 */ 29 @Test 30 public void testInitialize() { 31 Tag2Link.initialize(); 32 Assert.assertTrue("obtains at least 40 rules", Tag2Link.wikidataRules.size() > 40); 24 33 } 25 34
Note:
See TracChangeset
for help on using the changeset viewer.