package org.peerbox.watchservice.filetree.persistency;
import java.util.List;
import org.peerbox.watchservice.filetree.FileTree;
import org.peerbox.watchservice.filetree.composite.FileComponent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.inject.Inject;
/**
* Stores the local FileTree in the database.
*/
class PersistLocalTree implements Runnable {
private static final Logger logger = LoggerFactory.getLogger(PersistLocalTree.class);
private final LocalFileDao localFileDao;
private final FileTree fileTree;
@Inject
public PersistLocalTree(FileTree fileTree, LocalFileDao localFileDao) {
this.fileTree = fileTree;
this.localFileDao = localFileDao;
// make sure table exists
this.localFileDao.createTable();
}
@Override
public void run() {
try {
logger.info("Persist local file tree...");
if (fileTree != null) {
List<FileComponent> files = fileTree.asList();
localFileDao.persistAndReplaceFileComponents(files);
}
} catch (Exception e) {
logger.warn("Exception while persisting local file tree.", e);
}
}
}