kopia lustrzana https://github.com/JOSM/MapWithAI
Add methods to set and get preferences
Signed-off-by: Taylor Smock <smocktaylor@gmail.com>pull/1/head
rodzic
6be54ac3c9
commit
a40ffc10a4
|
@ -4,10 +4,10 @@ package org.openstreetmap.josm.plugins.rapid.backend;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.TreeSet;
|
import java.util.TreeSet;
|
||||||
|
|
||||||
import org.openstreetmap.josm.data.osm.BBox;
|
import org.openstreetmap.josm.data.osm.BBox;
|
||||||
|
@ -23,6 +23,7 @@ import org.openstreetmap.josm.data.preferences.sources.SourceType;
|
||||||
import org.openstreetmap.josm.io.IllegalDataException;
|
import org.openstreetmap.josm.io.IllegalDataException;
|
||||||
import org.openstreetmap.josm.io.OsmReader;
|
import org.openstreetmap.josm.io.OsmReader;
|
||||||
import org.openstreetmap.josm.plugins.rapid.RapiDPlugin;
|
import org.openstreetmap.josm.plugins.rapid.RapiDPlugin;
|
||||||
|
import org.openstreetmap.josm.spi.preferences.Config;
|
||||||
import org.openstreetmap.josm.tools.Logging;
|
import org.openstreetmap.josm.tools.Logging;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -30,16 +31,7 @@ import org.openstreetmap.josm.tools.Logging;
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public final class RapiDDataUtils {
|
public final class RapiDDataUtils {
|
||||||
private static final String RAPID_API_TOKEN = "ASZUVdYpCkd3M6ZrzjXdQzHulqRMnxdlkeBJWEKOeTUoY_Gwm9fuEd2YObLrClgDB_xfavizBsh0oDfTWTF7Zb4C";
|
public static final String DEFAULT_RAPID_API = "https://www.facebook.com/maps/ml_roads?conflate_with_osm=true&theme=ml_road_vector&collaborator=fbid&token=ASZUVdYpCkd3M6ZrzjXdQzHulqRMnxdlkeBJWEKOeTUoY_Gwm9fuEd2YObLrClgDB_xfavizBsh0oDfTWTF7Zb4C&hash=ASYM8LPNy8k1XoJiI7A&result_type=road_building_vector_xml&bbox={bbox}";
|
||||||
private static final Set<String> API_LIST = new HashSet<>();
|
|
||||||
static {
|
|
||||||
addRapidApi(new StringBuilder().append("https://www.facebook.com/maps/ml_roads?").append("conflate_with_osm=")
|
|
||||||
.append(true).append("&").append("theme=")
|
|
||||||
.append("ml_road_vector").append("&").append("collaborator=").append("fbid").append("&")
|
|
||||||
.append("token=").append(RAPID_API_TOKEN).append("&").append("hash=").append("ASYM8LPNy8k1XoJiI7A")
|
|
||||||
.append("&").append("result_type=").append("road_building_vector_xml")
|
|
||||||
.append("&").append("bbox={bbox}").toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
private RapiDDataUtils() {
|
private RapiDDataUtils() {
|
||||||
// Hide the constructor
|
// Hide the constructor
|
||||||
|
@ -54,22 +46,21 @@ public final class RapiDDataUtils {
|
||||||
public static DataSet getData(BBox bbox) {
|
public static DataSet getData(BBox bbox) {
|
||||||
InputStream inputStream = null;
|
InputStream inputStream = null;
|
||||||
DataSet dataSet = new DataSet();
|
DataSet dataSet = new DataSet();
|
||||||
for (String urlString : API_LIST) {
|
String urlString = getRapiDURL();
|
||||||
try {
|
try {
|
||||||
final URL url = new URL(urlString.replace("{bbox}", bbox.toStringCSV(",")));
|
final URL url = new URL(urlString.replace("{bbox}", bbox.toStringCSV(",")));
|
||||||
Logging.debug("{0}: Getting {1}", RapiDPlugin.NAME, url.toString());
|
Logging.debug("{0}: Getting {1}", RapiDPlugin.NAME, url.toString());
|
||||||
|
|
||||||
inputStream = url.openStream();
|
inputStream = url.openStream();
|
||||||
dataSet.mergeFrom(OsmReader.parseDataSet(inputStream, null));
|
dataSet.mergeFrom(OsmReader.parseDataSet(inputStream, null));
|
||||||
} catch (UnsupportedOperationException | IllegalDataException | IOException e) {
|
} catch (UnsupportedOperationException | IllegalDataException | IOException e) {
|
||||||
Logging.debug(e);
|
Logging.debug(e);
|
||||||
} finally {
|
} finally {
|
||||||
if (inputStream != null) {
|
if (inputStream != null) {
|
||||||
try {
|
try {
|
||||||
inputStream.close();
|
inputStream.close();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Logging.debug(e);
|
Logging.debug(e);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -91,15 +82,6 @@ public final class RapiDDataUtils {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Add a url to the the API_LIST
|
|
||||||
*
|
|
||||||
* @param url A url with a "{bbox}" inside it (this is what gets replaced in {@link RapiDDataUtils#getData})
|
|
||||||
*/
|
|
||||||
public static void addRapidApi(String url) {
|
|
||||||
API_LIST.add(url);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove primitives and their children from a dataset.
|
* Remove primitives and their children from a dataset.
|
||||||
*
|
*
|
||||||
|
@ -144,6 +126,54 @@ public final class RapiDDataUtils {
|
||||||
collection.addAll(temporaryCollection);
|
collection.addAll(temporaryCollection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current RapiD url
|
||||||
|
*
|
||||||
|
* @return A RapiD url
|
||||||
|
*/
|
||||||
|
public static String getRapiDURL() {
|
||||||
|
List<String> urls = getRapiDURLs();
|
||||||
|
String url = Config.getPref().get(RapiDPlugin.NAME.concat(".current_api"), DEFAULT_RAPID_API);
|
||||||
|
if (!urls.contains(url)) {
|
||||||
|
url = DEFAULT_RAPID_API;
|
||||||
|
setRapiDUrl(DEFAULT_RAPID_API);
|
||||||
|
}
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the RapiD url
|
||||||
|
*
|
||||||
|
* @param url The url to set as the default
|
||||||
|
*/
|
||||||
|
public static void setRapiDUrl(String url) {
|
||||||
|
List<String> urls = getRapiDURLs();
|
||||||
|
if (!urls.contains(url)) {
|
||||||
|
urls.add(url);
|
||||||
|
setRapiDURLs(urls);
|
||||||
|
}
|
||||||
|
Config.getPref().put(RapiDPlugin.NAME.concat(".current_api"), url);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the RapiD urls
|
||||||
|
*
|
||||||
|
* @param urls A list of URLs
|
||||||
|
*/
|
||||||
|
public static void setRapiDURLs(List<String> urls) {
|
||||||
|
Config.getPref().putList(RapiDPlugin.NAME.concat(".apis"), urls);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the RapiD urls (or the default)
|
||||||
|
*
|
||||||
|
* @return The urls for RapiD endpoints
|
||||||
|
*/
|
||||||
|
public static List<String> getRapiDURLs() {
|
||||||
|
return Config.getPref().getList(RapiDPlugin.NAME.concat(".apis"),
|
||||||
|
new ArrayList<>(Arrays.asList(DEFAULT_RAPID_API)));
|
||||||
|
}
|
||||||
|
|
||||||
public static void addRapiDPaintStyles() {
|
public static void addRapiDPaintStyles() {
|
||||||
// TODO figure out how to use the one in the jar file
|
// TODO figure out how to use the one in the jar file
|
||||||
ExtendedSourceEntry rapid = new ExtendedSourceEntry(SourceType.MAP_PAINT_STYLE, "rapid.mapcss",
|
ExtendedSourceEntry rapid = new ExtendedSourceEntry(SourceType.MAP_PAINT_STYLE, "rapid.mapcss",
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
// License: GPL. For details, see LICENSE file.
|
// License: GPL. For details, see LICENSE file.
|
||||||
package org.openstreetmap.josm.plugins.rapid;
|
package org.openstreetmap.josm.plugins.rapid;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -94,4 +95,21 @@ public class RapiDDataUtilsTest {
|
||||||
Assert.assertEquals(3, paintStyles.size());
|
Assert.assertEquals(3, paintStyles.size());
|
||||||
RapiDDataUtils.addRapiDPaintStyles();
|
RapiDDataUtils.addRapiDPaintStyles();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRapiDURLPreferences() {
|
||||||
|
String fakeUrl = "https://fake.url";
|
||||||
|
Assert.assertEquals(RapiDDataUtils.DEFAULT_RAPID_API, RapiDDataUtils.getRapiDURL());
|
||||||
|
RapiDDataUtils.setRapiDUrl(fakeUrl);
|
||||||
|
Assert.assertEquals(fakeUrl, RapiDDataUtils.getRapiDURL());
|
||||||
|
List<String> urls = new ArrayList<>(RapiDDataUtils.getRapiDURLs());
|
||||||
|
Assert.assertEquals(2, urls.size());
|
||||||
|
RapiDDataUtils.setRapiDUrl(RapiDDataUtils.DEFAULT_RAPID_API);
|
||||||
|
Assert.assertEquals(RapiDDataUtils.DEFAULT_RAPID_API, RapiDDataUtils.getRapiDURL());
|
||||||
|
RapiDDataUtils.setRapiDUrl(fakeUrl);
|
||||||
|
Assert.assertEquals(fakeUrl, RapiDDataUtils.getRapiDURL());
|
||||||
|
urls.remove(fakeUrl);
|
||||||
|
RapiDDataUtils.setRapiDURLs(urls);
|
||||||
|
Assert.assertEquals(RapiDDataUtils.DEFAULT_RAPID_API, RapiDDataUtils.getRapiDURL());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue