Changeset 3679 in josm for trunk/src/org/openstreetmap/josm/data/AutosaveTask.java
- Timestamp:
- 2010-11-29T08:24:10+01:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/AutosaveTask.java
r3675 r3679 5 5 6 6 import java.io.File; 7 import java.io.FileInputStream;8 import java.io.FileNotFoundException;9 7 import java.io.IOException; 10 8 import java.util.ArrayList; … … 22 20 23 21 import org.openstreetmap.josm.Main; 22 import org.openstreetmap.josm.actions.OpenFileAction.OpenFileTask; 24 23 import org.openstreetmap.josm.data.osm.DataSet; 25 24 import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent; … … 32 31 import org.openstreetmap.josm.gui.layer.Layer; 33 32 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 34 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;35 import org.openstreetmap.josm.io.IllegalDataException;36 33 import org.openstreetmap.josm.io.OsmExporter; 37 import org.openstreetmap.josm.io.OsmReader; 38 34 35 /** 36 * Saves data layers periodically so they can be recovered in case of a crash. 37 */ 39 38 public class AutosaveTask extends TimerTask implements LayerChangeListener, Listener { 40 39 … … 55 54 final Deque<File> backupFiles = new LinkedList<File>(); 56 55 } 57 58 //"data layer 1_20100711_1330"59 56 60 57 private final DataSetListenerAdapter datasetAdapter = new DataSetListenerAdapter(this); … … 261 258 } 262 259 263 public List<OsmDataLayer> getUnsavedLayers() { 264 List<OsmDataLayer> result = new ArrayList<OsmDataLayer>(); 265 266 for (File f: getUnsavedLayersFiles()) { 267 try { 268 DataSet ds = OsmReader.parseDataSet(new FileInputStream(f), NullProgressMonitor.INSTANCE); 269 String layerName = f.getName(); 270 layerName = layerName.substring(0, layerName.lastIndexOf('.')); 271 result.add(new OsmDataLayer(ds, layerName, null)); 272 moveToDeletedLayersFolder(f); 273 } catch (FileNotFoundException e) { 274 // Should not happen 275 System.err.println("File " + f.getAbsolutePath() + " not found"); 276 } catch (IllegalDataException e) { 277 System.err.println(tr("Unable to read autosaved osm data ({0}) - {1}", f.getAbsoluteFile(), e.getMessage())); 278 } 279 } 280 281 return result; 260 public void recoverUnsavedLayers() { 261 List<File> files = getUnsavedLayersFiles(); 262 final OpenFileTask openFileTsk = new OpenFileTask(files, null, tr("Restoring files")); 263 Main.worker.submit(openFileTsk); 264 Main.worker.submit(new Runnable() { 265 public void run() { 266 for (File f: openFileTsk.getSuccessfullyOpenedFiles()) { 267 moveToDeletedLayersFolder(f); 268 } 269 } 270 }); 282 271 } 283 272
Note:
See TracChangeset
for help on using the changeset viewer.