// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.io; import static org.openstreetmap.josm.tools.I18n.tr; import java.util.Optional; import org.openstreetmap.josm.actions.upload.UploadNotesTask; import org.openstreetmap.josm.gui.layer.NoteLayer; import org.openstreetmap.josm.gui.progress.NullProgressMonitor; import org.openstreetmap.josm.gui.progress.ProgressMonitor; import org.openstreetmap.josm.tools.CheckParameterUtil; /** * UploadNoteLayerTask uploads the data managed by an {@link NoteLayer} asynchronously. * @since 8474 */ public class UploadNoteLayerTask extends AbstractIOTask { private final NoteLayer layer; private final ProgressMonitor monitor; /** * Creates the upload task. * * @param layer the layer. Must not be null. * @param monitor a progress monitor. If monitor is null, uses {@link NullProgressMonitor#INSTANCE} * @throws IllegalArgumentException if layer is null * @throws IllegalArgumentException if strategy is null */ public UploadNoteLayerTask(NoteLayer layer, ProgressMonitor monitor) { CheckParameterUtil.ensureParameterNotNull(layer, "layer"); this.layer = layer; this.monitor = Optional.ofNullable(monitor).orElse(NullProgressMonitor.INSTANCE); } @Override public void run() { monitor.indeterminateSubTask(tr("Uploading notes to server")); new UploadNotesTask().uploadNotes(layer.getNoteData(), monitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false)); if (isCanceled()) return; layer.onPostUploadToServer(); } @Override public void cancel() { setCanceled(true); } }