package org.peerbox.app; import org.peerbox.app.config.UserConfig; import org.peerbox.app.manager.file.IFileManager; import org.peerbox.app.manager.node.INodeManager; import org.peerbox.app.manager.user.IUserManager; import org.peerbox.notifications.FileEventAggregator; import org.peerbox.watchservice.ActionExecutor; import org.peerbox.watchservice.FileEventManager; import org.peerbox.watchservice.FolderWatchService; import org.peerbox.watchservice.filetree.FileTree; import org.peerbox.watchservice.filetree.persistency.LocalFileDao; import org.peerbox.watchservice.filetree.persistency.PeriodicFileDataPersister; import org.peerbox.watchservice.filetree.persistency.RemoteFileDao; import com.google.inject.Inject; import com.google.inject.Injector; import com.google.inject.Singleton; /** * The client context contains services and dependencies that are specific to a user. * Thus, it is created during the login procedure since the user details are not known * before login. * * @author albrecht * */ @Singleton public class ClientContext { private Injector clientInjector; private UserConfig userConfig; private INodeManager nodeManager; private IUserManager userManager; private IFileManager fileManager; private ActionExecutor actionExecutor; private FileEventManager fileEventManager; private FolderWatchService folderWatchService; private PeriodicFileDataPersister remoteProfilePersister; private FileEventAggregator fileEventAggregator; private FileTree fileTree; private LocalFileDao localFileDao; private RemoteFileDao remoteFileDao; public ClientContext() { } public Injector getInjector() { return clientInjector; } @Inject public void setInjector(Injector clientInjector) { this.clientInjector = clientInjector; } public UserConfig getUserConfig() { return userConfig; } @Inject public void setUserConfig(UserConfig userConfig) { this.userConfig = userConfig; } public ActionExecutor getActionExecutor() { return actionExecutor; } @Inject public void setActionExecutor(ActionExecutor actionExecutor) { this.actionExecutor = actionExecutor; } public FileEventManager getFileEventManager() { return fileEventManager; } @Inject public void setFileEventManager(FileEventManager fileEventManager) { this.fileEventManager = fileEventManager; } public FolderWatchService getFolderWatchService() { return folderWatchService; } @Inject public void setFolderWatchService(FolderWatchService folderWatchService) { this.folderWatchService = folderWatchService; } public INodeManager getNodeManager() { return nodeManager; } @Inject public void setNodeManager(INodeManager nodeManager) { this.nodeManager = nodeManager; } public IUserManager getUserManager() { return userManager; } @Inject public void setUserManager(IUserManager userManager) { this.userManager = userManager; } public IFileManager getFileManager() { return fileManager; } @Inject public void setFileManager(IFileManager fileManager) { this.fileManager = fileManager; } public PeriodicFileDataPersister getRemoteProfilePersister() { return remoteProfilePersister; } @Inject public void setRemoteProfilePersister(PeriodicFileDataPersister persister) { this.remoteProfilePersister = persister; } public FileEventAggregator getFileEventAggregator() { return fileEventAggregator; } @Inject public void setFileEventAggregator(FileEventAggregator fileEventAggregator) { this.fileEventAggregator = fileEventAggregator; } public LocalFileDao getLocalFileDao() { return localFileDao; } @Inject public void setFileDao(LocalFileDao fileDao) { this.localFileDao = fileDao; } public RemoteFileDao getRemoteFileDao() { return remoteFileDao; } @Inject public void setRemoteFileDao(RemoteFileDao remoteFileDao) { this.remoteFileDao = remoteFileDao; } public FileTree getFileTree() { return fileTree; } @Inject public void setFileTree(FileTree fileTree) { this.fileTree = fileTree; } }