public class DownloadOsmTask extends AbstractDownloadTask
| Modifier and Type | Class and Description |
|---|---|
static class |
DownloadOsmTask.AbstractInternalTask
Superclass of internal download task.
|
protected class |
DownloadOsmTask.DownloadTask |
| Modifier and Type | Field and Description |
|---|---|
protected Bounds |
currentBounds |
protected DataSet |
downloadedData |
protected DownloadOsmTask.DownloadTask |
downloadTask |
protected java.lang.String |
newLayerName |
protected static java.lang.String |
PATTERN_EXTERNAL_OSM_FILE |
protected static java.lang.String |
PATTERN_OSM_API_URL |
protected static java.lang.String |
PATTERN_OVERPASS_API_URL |
protected static java.lang.String |
PATTERN_OVERPASS_API_XAPI_URL |
| Constructor and Description |
|---|
DownloadOsmTask() |
| Modifier and Type | Method and Description |
|---|---|
void |
cancel()
Cancels the asynchronous download task.
|
java.util.concurrent.Future<?> |
download(boolean newLayer,
Bounds downloadArea,
ProgressMonitor progressMonitor)
Asynchronously launches the download task for a given bounding box.
|
protected java.util.concurrent.Future<?> |
download(DownloadOsmTask.DownloadTask downloadTask,
Bounds downloadArea) |
java.util.concurrent.Future<?> |
download(OsmServerReader reader,
boolean newLayer,
Bounds downloadArea,
ProgressMonitor progressMonitor)
Asynchronously launches the download task for a given bounding box.
|
protected void |
extractOsmFilename(java.lang.String pattern,
java.lang.String url) |
java.lang.String |
getConfirmationMessage(java.net.URL url)
Replies the HTML-formatted confirmation message to be shown to user when the given URL needs to be confirmed before loading.
|
DataSet |
getDownloadedData()
Replies the
DataSet containing the downloaded OSM data. |
java.lang.String[] |
getPatterns()
Returns regular expressions that match the URLs
|
java.lang.String |
getTitle()
Returns human-readable description of the task
|
boolean |
isSafeForRemotecontrolRequests()
Check / decide if the task is safe for remotecontrol.
|
java.util.concurrent.Future<?> |
loadUrl(boolean new_layer,
java.lang.String url,
ProgressMonitor progressMonitor)
Loads a given URL from the OSM Server
|
protected java.lang.String |
modifyUrlBeforeLoad(java.lang.String url)
This allows subclasses to perform operations on the URL before
loadUrl(boolean, java.lang.String, org.openstreetmap.josm.gui.progress.ProgressMonitor) is performed. |
protected void |
rememberDownloadedData(DataSet ds) |
acceptsDocumentationSummary, acceptsUrl, acceptsUrl, getErrorObjects, isCanceled, isFailed, rememberErrorMessage, rememberException, setCanceled, setFailedprotected static final java.lang.String PATTERN_OSM_API_URL
protected static final java.lang.String PATTERN_OVERPASS_API_URL
protected static final java.lang.String PATTERN_OVERPASS_API_XAPI_URL
protected static final java.lang.String PATTERN_EXTERNAL_OSM_FILE
protected Bounds currentBounds
protected DataSet downloadedData
protected DownloadOsmTask.DownloadTask downloadTask
protected java.lang.String newLayerName
public DownloadOsmTask()
public java.lang.String[] getPatterns()
DownloadTaskgetPatterns in interface DownloadTaskgetPatterns in class AbstractDownloadTaskpublic java.lang.String getTitle()
DownloadTaskgetTitle in interface DownloadTaskgetTitle in class AbstractDownloadTaskprotected void rememberDownloadedData(DataSet ds)
public DataSet getDownloadedData()
DataSet containing the downloaded OSM data.DataSet containing the downloaded OSM data.public java.util.concurrent.Future<?> download(boolean newLayer, Bounds downloadArea, ProgressMonitor progressMonitor)
DownloadTaskprogressMonitor to null, if the task should create, open, and close a progress monitor.
Set progressMonitor to NullProgressMonitor.INSTANCE if progress information is to
be discarded.
You can wait for the asynchronous download task to finish by synchronizing on the returned
Future, but make sure not to freeze up JOSM. Example:
Future<?> future = task.download(...);
// DON'T run this on the Swing EDT or JOSM will freeze
future.get(); // waits for the dowload task to complete
The following example uses a pattern which is better suited if a task is launched from
the Swing EDT:
final Future<?> future = task.download(...);
Runnable runAfterTask = new Runnable() {
public void run() {
// this is not strictly necessary because of the type of executor service
// Main.worker is initialized with, but it doesn't harm either
//
future.get(); // wait for the download task to complete
doSomethingAfterTheTaskCompleted();
}
}
Main.worker.submit(runAfterTask);
newLayer - true, if the data is to be downloaded into a new layer. If false, the task
selects one of the existing layers as download layer, preferably the active layer.downloadArea - the area to downloadprogressMonitor - the progressMonitorpublic java.util.concurrent.Future<?> download(OsmServerReader reader, boolean newLayer, Bounds downloadArea, ProgressMonitor progressMonitor)
progressMonitor to null, if the task should create, open, and close a progress monitor.
Set progressMonitor to NullProgressMonitor.INSTANCE if progress information is to
be discarded.
You can wait for the asynchronous download task to finish by synchronizing on the returned
Future, but make sure not to freeze up JOSM. Example:
Future<?> future = task.download(...);
// DON'T run this on the Swing EDT or JOSM will freeze
future.get(); // waits for the dowload task to complete
The following example uses a pattern which is better suited if a task is launched from
the Swing EDT:
final Future<?> future = task.download(...);
Runnable runAfterTask = new Runnable() {
public void run() {
// this is not strictly necessary because of the type of executor service
// Main.worker is initialized with, but it doesn't harm either
//
future.get(); // wait for the download task to complete
doSomethingAfterTheTaskCompleted();
}
}
Main.worker.submit(runAfterTask);
reader - the reader used to parse OSM data (see OsmServerReader.parseOsm(org.openstreetmap.josm.gui.progress.ProgressMonitor))newLayer - true, if the data is to be downloaded into a new layer. If false, the task
selects one of the existing layers as download layer, preferably the active layer.downloadArea - the area to downloadprogressMonitor - the progressMonitorprotected java.util.concurrent.Future<?> download(DownloadOsmTask.DownloadTask downloadTask, Bounds downloadArea)
protected java.lang.String modifyUrlBeforeLoad(java.lang.String url)
loadUrl(boolean, java.lang.String, org.openstreetmap.josm.gui.progress.ProgressMonitor) is performed.public java.util.concurrent.Future<?> loadUrl(boolean new_layer, java.lang.String url, ProgressMonitor progressMonitor)
new_layer - True if the data should be saved to a new layerurl - The URL as StringprogressMonitor - the progressMonitorDownloadTask.download(boolean, Bounds, ProgressMonitor)protected final void extractOsmFilename(java.lang.String pattern, java.lang.String url)
public void cancel()
DownloadTaskpublic boolean isSafeForRemotecontrolRequests()
AbstractDownloadTaskisSafeForRemotecontrolRequests in class AbstractDownloadTaskpublic java.lang.String getConfirmationMessage(java.net.URL url)
DownloadTaskurl - The URL to be confirmed