Ignore:
Timestamp:
2018-06-13T22:17:23+02:00 (7 years ago)
Author:
Don-vip
Message:

see #11000 - Remote control: allow to specify layer_name for import

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java

    r13612 r13927  
    7777
    7878    @Override
    79     public Future<?> download(boolean newLayer, Bounds downloadArea, ProgressMonitor progressMonitor) {
    80         return download(new BoundingBoxDownloader(downloadArea), newLayer, downloadArea, progressMonitor);
     79    public Future<?> download(DownloadParams settings, Bounds downloadArea, ProgressMonitor progressMonitor) {
     80        return download(new BoundingBoxDownloader(downloadArea), settings, downloadArea, progressMonitor);
    8181    }
    8282
     
    112112     * </pre>
    113113     * @param reader the reader used to parse OSM data (see {@link OsmServerReader#parseOsm})
    114      * @param newLayer true, if the data is to be downloaded into a new layer. If false, the task
    115      *                 selects one of the existing layers as download layer, preferably the active layer.
     114     * @param settings download settings
    116115     * @param downloadArea the area to download
    117116     * @param progressMonitor the progressMonitor
    118117     * @return the future representing the asynchronous task
    119118     */
    120     public Future<?> download(OsmServerReader reader, boolean newLayer, Bounds downloadArea, ProgressMonitor progressMonitor) {
    121         return download(new DownloadTask(newLayer, reader, progressMonitor, zoomAfterDownload), downloadArea);
     119    public Future<?> download(OsmServerReader reader, DownloadParams settings, Bounds downloadArea, ProgressMonitor progressMonitor) {
     120        return download(new DownloadTask(settings, reader, progressMonitor, zoomAfterDownload), downloadArea);
    122121    }
    123122
     
    141140    /**
    142141     * Loads a given URL from the OSM Server
    143      * @param newLayer True if the data should be saved to a new layer
     142     * @param settings download settings
    144143     * @param url The URL as String
    145144     */
    146145    @Override
    147     public Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor) {
     146    public Future<?> loadUrl(DownloadParams settings, String url, ProgressMonitor progressMonitor) {
    148147        String newUrl = modifyUrlBeforeLoad(url);
    149         downloadTask = new DownloadTask(newLayer,
     148        downloadTask = new DownloadTask(settings,
    150149                new OsmServerLocationReader(newUrl),
    151150                progressMonitor);
    152151        currentBounds = null;
    153152        // Extract .osm filename from URL to set the new layer name
    154         extractOsmFilename("https?://.*/(.*\\.osm)", newUrl);
     153        extractOsmFilename(settings, "https?://.*/(.*\\.osm)", newUrl);
    155154        return MainApplication.worker.submit(downloadTask);
    156155    }
    157156
    158     protected final void extractOsmFilename(String pattern, String url) {
    159         Matcher matcher = Pattern.compile(pattern).matcher(url);
    160         newLayerName = matcher.matches() ? matcher.group(1) : null;
     157    protected final void extractOsmFilename(DownloadParams settings, String pattern, String url) {
     158        newLayerName = settings.getLayerName();
     159        if (newLayerName == null || newLayerName.isEmpty()) {
     160            Matcher matcher = Pattern.compile(pattern).matcher(url);
     161            newLayerName = matcher.matches() ? matcher.group(1) : null;
     162        }
    161163    }
    162164
     
    190192        /**
    191193         * Constructs a new {@code AbstractInternalTask}.
    192          * @param newLayer if {@code true}, force download to a new layer
     194         * @param settings download settings
    193195         * @param title message for the user
    194196         * @param ignoreException If true, exception will be propagated to calling code. If false then
     
    197199         * @param zoomAfterDownload If true, the map view will zoom to download area after download
    198200         */
    199         public AbstractInternalTask(boolean newLayer, String title, boolean ignoreException, boolean zoomAfterDownload) {
     201        public AbstractInternalTask(DownloadParams settings, String title, boolean ignoreException, boolean zoomAfterDownload) {
    200202            super(title, ignoreException);
    201             this.newLayer = newLayer;
     203            this.newLayer = settings.isNewLayer();
    202204            this.zoomAfterDownload = zoomAfterDownload;
    203205        }
     
    205207        /**
    206208         * Constructs a new {@code AbstractInternalTask}.
    207          * @param newLayer if {@code true}, force download to a new layer
     209         * @param settings download settings
    208210         * @param title message for the user
    209211         * @param progressMonitor progress monitor
     
    213215         * @param zoomAfterDownload If true, the map view will zoom to download area after download
    214216         */
    215         public AbstractInternalTask(boolean newLayer, String title, ProgressMonitor progressMonitor, boolean ignoreException,
     217        public AbstractInternalTask(DownloadParams settings, String title, ProgressMonitor progressMonitor, boolean ignoreException,
    216218                boolean zoomAfterDownload) {
    217219            super(title, progressMonitor, ignoreException);
    218             this.newLayer = newLayer;
     220            this.newLayer = settings.isNewLayer();
    219221            this.zoomAfterDownload = zoomAfterDownload;
    220222        }
     
    348350        /**
    349351         * Constructs a new {@code DownloadTask}.
    350          * @param newLayer if {@code true}, force download to a new layer
     352         * @param settings download settings
    351353         * @param reader OSM data reader
    352354         * @param progressMonitor progress monitor
    353          */
    354         public DownloadTask(boolean newLayer, OsmServerReader reader, ProgressMonitor progressMonitor) {
    355             this(newLayer, reader, progressMonitor, true);
     355         * @since 13927
     356         */
     357        public DownloadTask(DownloadParams settings, OsmServerReader reader, ProgressMonitor progressMonitor) {
     358            this(settings, reader, progressMonitor, true);
    356359        }
    357360
    358361        /**
    359362         * Constructs a new {@code DownloadTask}.
    360          * @param newLayer if {@code true}, force download to a new layer
     363         * @param settings download settings
    361364         * @param reader OSM data reader
    362365         * @param progressMonitor progress monitor
    363366         * @param zoomAfterDownload If true, the map view will zoom to download area after download
    364          * @since 8942
    365          */
    366         public DownloadTask(boolean newLayer, OsmServerReader reader, ProgressMonitor progressMonitor, boolean zoomAfterDownload) {
    367             super(newLayer, tr("Downloading data"), progressMonitor, false, zoomAfterDownload);
     367         * @since 13927
     368         */
     369        public DownloadTask(DownloadParams settings, OsmServerReader reader, ProgressMonitor progressMonitor, boolean zoomAfterDownload) {
     370            super(settings, tr("Downloading data"), progressMonitor, false, zoomAfterDownload);
    368371            this.reader = reader;
    369372        }
Note: See TracChangeset for help on using the changeset viewer.