package org.peerbox.guice;
import java.nio.file.Path;
import org.peerbox.app.DbContext;
import org.peerbox.app.config.UserConfig;
import org.peerbox.app.manager.file.FileManager;
import org.peerbox.app.manager.file.IFileManager;
import org.peerbox.filerecovery.FileRecoveryUILoader;
import org.peerbox.utils.AppData;
import org.peerbox.utils.UserDbUtils;
import org.peerbox.watchservice.FileEventManager;
import org.peerbox.watchservice.IFileEventManager;
import org.peerbox.watchservice.filetree.FileTree;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import com.google.inject.Singleton;
public class UserModule extends AbstractModule {
private final UserConfig userConfig;
public UserModule(UserConfig userConfig) {
this.userConfig = userConfig;
}
@Override
protected void configure() {
bind(UserConfig.class).toInstance(userConfig);
bind(FileRecoveryUILoader.class);
bind(IFileManager.class).to(FileManager.class);
bind(IFileEventManager.class).to(FileEventManager.class);
}
@Provides @Singleton
FileTree provideFileTree(UserConfig cfg){
return new FileTree(cfg.getRootPath());
}
@Provides
@Singleton
DbContext provideUserDbContext(UserConfig userConfig) {
String username = userConfig.getUsername();
String filename = UserDbUtils.createFileName(username);
Path dbPath = AppData.getConfigFolder().resolve(filename);
DbContext dbContext = UserDbUtils.createDbContext(dbPath);
return dbContext;
}
}