persistence of WatchedDirectory object

pull/53/head
Zlatin Balevsky 2020-03-26 05:31:39 +00:00
parent f0c8c11094
commit 244ce43794
4 changed files with 42 additions and 7 deletions

View File

@ -1,9 +1,37 @@
package com.muwire.core.files.directories
import com.muwire.core.util.DataUtil
import net.i2p.data.Base64
class WatchedDirectory {
File directory
final File directory
final String encodedName
boolean autoWatch
int syncInterval
long lastSync
WatchedDirectory(File directory) {
this.directory = directory.getCanonicalFile()
this.encodedName = Base64.encode(DataUtil.encodei18nString(directory.getAbsolutePath()))
}
def toJson() {
def rv = [:]
rv.directory = encodedName
rv.autoWatch = autoWatch
rv.syncInterval = syncInterval
rv.lastSync = lastSync
rv
}
static WatchedDirectory fromJson(def json) {
String dirName = DataUtil.readi18nString(Base64.decode(json.directory))
File dir = new File(dirName)
def rv = new WatchedDirectory(dir)
rv.autoWatch = json.autoWatch
rv.syncInterval = json.syncInterval
rv.lastSync = json.lastSync
rv
}
}

View File

@ -3,5 +3,7 @@ package com.muwire.core.files.directories
import com.muwire.core.Event
class WatchedDirectoryConfigurationEvent extends Event {
WatchedDirectory directory
File directory
boolean autoWatch
int syncInterval
}

View File

@ -18,8 +18,7 @@ class WatchedDirectoryConverter {
core.getMuOptions().getWatchedDirectories().each {
File directory = new File(it)
directory = directory.getCanonicalFile()
WatchedDirectory watched = new WatchedDirectory(directory : directory, autoWatch : true)
core.eventBus.publish(new WatchedDirectoryConfigurationEvent(directory : watched))
core.eventBus.publish(new WatchedDirectoryConfigurationEvent(directory : directory, autoWatch: true))
}
core.getMuOptions().getWatchedDirectories().clear()
core.saveMuSettings()

View File

@ -13,7 +13,6 @@ class WatchedDirectoryManager {
private final EventBus eventBus
private final FileManager fileManager
private final ExecutorService diskIO = Executors.newSingleThreadExecutor({r ->
Thread t = new Thread(r, "disk-io")
t.setDaemon(true)
@ -22,8 +21,10 @@ class WatchedDirectoryManager {
private final Timer timer = new Timer("directory-timer", true)
private boolean converting = true
WatchedDirectoryManager(File home, EventBus eventBus, FileManager fileManager) {
this.home = home
this.home = new File(home, "directories")
this.eventBus = eventBus
this.fileManager = fileManager
}
@ -34,10 +35,15 @@ class WatchedDirectoryManager {
}
void onWatchedDirectoryConfigurationEvent(WatchedDirectoryConfigurationEvent e) {
// persist
if (!converting) {
// update state
}
// always persist
}
void onWatchedDirectoryConvertedEvent(WatchedDirectoryConvertedEvent e) {
converting = false
// load
}
}