public class AutosaveTask extends java.util.TimerTask implements LayerManager.LayerChangeListener, DataSetListenerAdapter.Listener, NoteData.NoteDataUpdateListener
Modifier and Type | Class and Description |
---|---|
protected static class |
AutosaveTask.AutosaveLayerInfo<T extends AbstractModifiableLayer> |
Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
AUTOSAVE_DIR |
private java.io.File |
autosaveDir |
private java.util.Set<DataSet> |
changedDatasets |
private java.util.Set<NoteData> |
changedNoteData |
private DataSetListenerAdapter |
datasetAdapter |
private static java.lang.String |
DELETED_LAYERS_DIR |
private java.util.Deque<java.io.File> |
deletedLayers |
private java.io.File |
deletedLayersDir |
private static char[] |
ILLEGAL_CHARACTERS |
private java.util.List<AutosaveTask.AutosaveLayerInfo<?>> |
layersInfo |
private java.lang.Object |
layersLock |
static BooleanProperty |
PROP_AUTOSAVE_ENABLED
If autosave is enabled
|
static IntegerProperty |
PROP_DELETED_LAYERS
How many deleted layers should be stored
|
static IntegerProperty |
PROP_FILES_PER_LAYER
The number of files to store per layer
|
static IntegerProperty |
PROP_INDEX_LIMIT
The maximum number of autosave files to store
|
static IntegerProperty |
PROP_INTERVAL
The autosave interval, in seconds
|
static BooleanProperty |
PROP_NOTIFICATION
Defines if a notification should be displayed after each autosave
|
Constructor and Description |
---|
AutosaveTask() |
Modifier and Type | Method and Description |
---|---|
private void |
cleanupLayer(AbstractModifiableLayer removedLayer) |
private static void |
createNewPidFile(java.io.File autosaveDir,
java.lang.String filename) |
void |
discardUnsavedLayers()
Mark all unsaved layers as deleted.
|
protected void |
displayNotification() |
java.nio.file.Path |
getAutosaveDir()
Replies the autosave directory.
|
private static java.lang.String |
getFileName(java.lang.String layerName,
int index) |
protected java.io.File |
getNewLayerFile(AutosaveTask.AutosaveLayerInfo<?> layer,
java.util.Date now,
int startIndex) |
protected java.io.File |
getPidFile(java.io.File osmFile) |
java.util.List<java.io.File> |
getUnsavedLayersFiles()
Replies the list of .osm files still present in autosave dir, that are not currently managed by another instance of JOSM.
|
private static boolean |
jvmPerfDataFileExists(java.lang.String jvmId) |
void |
layerAdded(LayerManager.LayerAddEvent e)
Notifies this listener that a layer has been added.
|
void |
layerOrderChanged(LayerManager.LayerOrderChangeEvent e)
Notifies this listener that the order of layers was changed.
|
void |
layerRemoving(LayerManager.LayerRemoveEvent e)
Notifies this listener that a alayer was just removed.
|
private void |
moveToDeletedLayersFolder(java.io.File f)
Move file to the deleted layers directory.
|
void |
noteDataUpdated(NoteData data)
Called when the note data is updated
|
void |
processDatasetEvent(AbstractDatasetChangedEvent event)
Called when notified about any type of dataset change event.
|
java.util.concurrent.Future<?> |
recoverUnsavedLayers()
Recover the unsaved layers and open them asynchronously.
|
private void |
registerNewlayer(NoteLayer layer) |
private void |
registerNewlayer(OsmDataLayer layer) |
void |
run() |
private void |
savelayer(AutosaveTask.AutosaveLayerInfo<?> info) |
void |
schedule()
Starts the autosave background task.
|
void |
selectedNoteChanged(NoteData noteData)
The selected node was changed
|
private void |
setLayerFileName(AutosaveTask.AutosaveLayerInfo<?> layer) |
private static final char[] ILLEGAL_CHARACTERS
private static final java.lang.String AUTOSAVE_DIR
private static final java.lang.String DELETED_LAYERS_DIR
public static final BooleanProperty PROP_AUTOSAVE_ENABLED
public static final IntegerProperty PROP_FILES_PER_LAYER
public static final IntegerProperty PROP_DELETED_LAYERS
public static final IntegerProperty PROP_INTERVAL
public static final IntegerProperty PROP_INDEX_LIMIT
public static final BooleanProperty PROP_NOTIFICATION
private final DataSetListenerAdapter datasetAdapter
private final java.util.Set<DataSet> changedDatasets
private final java.util.Set<NoteData> changedNoteData
private final java.util.List<AutosaveTask.AutosaveLayerInfo<?>> layersInfo
private final java.lang.Object layersLock
private final java.util.Deque<java.io.File> deletedLayers
private final java.io.File autosaveDir
private final java.io.File deletedLayersDir
public AutosaveTask()
public final java.nio.file.Path getAutosaveDir()
public void schedule()
private static java.lang.String getFileName(java.lang.String layerName, int index)
private void setLayerFileName(AutosaveTask.AutosaveLayerInfo<?> layer)
protected java.io.File getNewLayerFile(AutosaveTask.AutosaveLayerInfo<?> layer, java.util.Date now, int startIndex)
private static void createNewPidFile(java.io.File autosaveDir, java.lang.String filename)
private void savelayer(AutosaveTask.AutosaveLayerInfo<?> info)
public void run()
run
in interface java.lang.Runnable
run
in class java.util.TimerTask
protected void displayNotification()
public void layerOrderChanged(LayerManager.LayerOrderChangeEvent e)
LayerManager.LayerChangeListener
Listeners are called in the EDT thread. You should not do blocking or long-running tasks in this method.
layerOrderChanged
in interface LayerManager.LayerChangeListener
e
- The order change event.private void registerNewlayer(OsmDataLayer layer)
private void registerNewlayer(NoteLayer layer)
public void layerAdded(LayerManager.LayerAddEvent e)
LayerManager.LayerChangeListener
Listeners are called in the EDT thread. You should not do blocking or long-running tasks in this method.
layerAdded
in interface LayerManager.LayerChangeListener
e
- The new added layer eventpublic void layerRemoving(LayerManager.LayerRemoveEvent e)
LayerManager.LayerChangeListener
Listeners are called in the EDT thread after the layer was removed.
Use LayerManager.LayerRemoveEvent.scheduleRemoval(Collection)
to remove more layers.
You should not do blocking or long-running tasks in this method.
layerRemoving
in interface LayerManager.LayerChangeListener
e
- The layer to be removed (as event)private void cleanupLayer(AbstractModifiableLayer removedLayer)
public void processDatasetEvent(AbstractDatasetChangedEvent event)
DataSetListenerAdapter.Listener
processDatasetEvent
in interface DataSetListenerAdapter.Listener
event
- dataset change eventpublic void noteDataUpdated(NoteData data)
NoteData.NoteDataUpdateListener
noteDataUpdated
in interface NoteData.NoteDataUpdateListener
data
- The data that was changedpublic void selectedNoteChanged(NoteData noteData)
NoteData.NoteDataUpdateListener
selectedNoteChanged
in interface NoteData.NoteDataUpdateListener
noteData
- The data of which the selected node was changedprotected java.io.File getPidFile(java.io.File osmFile)
public java.util.List<java.io.File> getUnsavedLayersFiles()
private static boolean jvmPerfDataFileExists(java.lang.String jvmId)
public java.util.concurrent.Future<?> recoverUnsavedLayers()
private void moveToDeletedLayersFolder(java.io.File f)
f
- the file, usually from the autosave dirpublic void discardUnsavedLayers()