source: josm/trunk/src/org/openstreetmap/josm/gui/io/SaveLayerTask.java@ 8961

Last change on this file since 8961 was 8734, checked in by simon04, 9 years ago

see #11843 - Give all started threads sensible names

Utils#newThreadFactory creates a ThreadFactory to be used when
obtaining a new Executor via Executors.new….

  • Property svn:eol-style set to native
File size: 2.3 KB
RevLine 
[2512]1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.io;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
[6643]6import org.openstreetmap.josm.Main;
[2512]7import org.openstreetmap.josm.actions.SaveAction;
8import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
9import org.openstreetmap.josm.gui.progress.ProgressMonitor;
[2848]10import org.openstreetmap.josm.tools.CheckParameterUtil;
[2512]11
12/**
[7402]13 * SaveLayerTask saves the data managed by an {@link org.openstreetmap.josm.gui.layer.AbstractModifiableLayer} to the
[7358]14 * {@link org.openstreetmap.josm.gui.layer.Layer#getAssociatedFile()}.
[2512]15 *
16 * <pre>
17 * ExecutorService executorService = ...
18 * SaveLayerTask task = new SaveLayerTask(layer, monitor);
[8734]19 * Future&lt;?&gt; taskFuture = executorService.submit(task)
[2512]20 * try {
21 * // wait for the task to complete
22 * taskFuture.get();
[8510]23 * } catch (Exception e) {
[8734]24 * e.printStackTrace();
[2512]25 * }
26 * </pre>
27 */
[7358]28public class SaveLayerTask extends AbstractIOTask {
[2512]29 private SaveLayerInfo layerInfo;
30 private ProgressMonitor parentMonitor;
31
32 /**
33 *
34 * @param layerInfo information about the layer to be saved to save. Must not be null.
[5266]35 * @param monitor the monitor. Set to {@link NullProgressMonitor#INSTANCE} if null
[8291]36 * @throws IllegalArgumentException if layer is null
[2512]37 */
38 protected SaveLayerTask(SaveLayerInfo layerInfo, ProgressMonitor monitor) {
[2848]39 CheckParameterUtil.ensureParameterNotNull(layerInfo, "layerInfo");
[2512]40 if (monitor == null) {
41 monitor = NullProgressMonitor.INSTANCE;
42 }
43 this.layerInfo = layerInfo;
44 this.parentMonitor = monitor;
45 }
46
47 @Override
48 public void run() {
49 try {
50 parentMonitor.subTask(tr("Saving layer to ''{0}'' ...", layerInfo.getFile().toString()));
[7204]51 if (!SaveAction.doSave(layerInfo.getLayer(), layerInfo.getFile(), layerInfo.isDoCheckSaveConditions())) {
[2512]52 setFailed(true);
53 return;
54 }
[4310]55 if (!isCanceled()) {
[2512]56 layerInfo.getLayer().onPostSaveToFile();
57 }
[8510]58 } catch (Exception e) {
[6643]59 Main.error(e);
[2512]60 setLastException(e);
61 }
62 }
63
64 @Override
65 public void cancel() {
[4310]66 setCanceled(true);
[2512]67 }
68}
Note: See TracBrowser for help on using the repository browser.