/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.pieShare.pieShareApp.springConfiguration.PieShareApp; import org.apache.commons.vfs2.impl.DefaultFileMonitor; import org.pieShare.pieShareApp.model.pieFile.PieFile; import org.pieShare.pieShareApp.service.PieShareService; import org.pieShare.pieShareApp.service.comparerService.ALocalFileCompareService; import org.pieShare.pieShareApp.service.comparerService.FileCompareService; import org.pieShare.pieShareApp.service.comparerService.FileHistoryCompareService; import org.pieShare.pieShareApp.service.comparerService.api.ILocalFileCompareService; import org.pieShare.pieShareApp.service.configurationService.ApplicationConfigurationService; import org.pieShare.pieShareApp.service.configurationService.ConfigurationFactory; import org.pieShare.pieShareApp.service.database.DatabaseService; import org.pieShare.pieShareApp.service.database.ModelEntityConverterService; import org.pieShare.pieShareApp.service.database.PieDatabaseManagerFactory; import org.pieShare.pieShareApp.service.factoryService.MessageFactoryService; import org.pieShare.pieShareApp.service.fileFilterService.FileFilterService; import org.pieShare.pieShareApp.service.fileFilterService.filters.RegexFileFilter; import org.pieShare.pieShareApp.service.fileService.FileServiceBase; import org.pieShare.pieShareApp.service.fileService.HistoryFileService; import org.pieShare.pieShareApp.service.fileService.LocalFileService; import org.pieShare.pieShareApp.service.fileService.fileEncryptionService.FileEncryptionService; import org.pieShare.pieShareApp.service.fileService.fileListenerService.ApacheDefaultFileListener; import org.pieShare.pieShareApp.service.fileService.fileListenerService.ApacheFileWatcherService; import org.pieShare.pieShareApp.service.historyService.HistoryService; import org.pieShare.pieShareApp.service.networkService.NetworkService; import org.pieShare.pieShareApp.service.requestService.RequestService; import org.pieShare.pieShareApp.service.shareService.BitTorrentService; import org.pieShare.pieShareApp.service.shareService.ShareService; import org.pieShare.pieShareApp.springConfiguration.PiePlateConfiguration; import org.pieShare.pieShareApp.springConfiguration.PieUtilitiesConfiguration; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Scope; /** * * @author Svetoslav */ @Configuration public class PieShareAppService { @Autowired protected PieUtilitiesConfiguration utilities; @Autowired protected PiePlateConfiguration plate; @Bean @Lazy @Scope(value = "prototype") public PieFile pieFile() { return new PieFile(); } @Bean public PieShareService pieShareService() { PieShareService service = new PieShareService(); service.setExecutorFactory(this.utilities.pieExecutorTaskFactory()); service.setClusterManagementService(this.plate.clusterManagementService()); service.setShutdownService(this.utilities.shutdownService()); service.setDatabaseService(databaseService()); service.setConfigurationFactory(this.configurationFactory()); service.setBeanService(utilities.beanService()); service.start(); return service; } @Bean @Scope(value = "prototype") public DefaultFileMonitor defaultFileMonitor() { DefaultFileMonitor filelistener = new DefaultFileMonitor(fileListenerService()); return filelistener; } @Bean @Lazy public NetworkService networkService() { return new NetworkService(); } @Bean @Lazy public ApplicationConfigurationService applicationConfigurationService() { ApplicationConfigurationService service = new ApplicationConfigurationService(); service.setPropertiesReader(utilities.configurationReader()); service.setBeanService(utilities.beanService()); service.init(); return service; } @Bean @Lazy public MessageFactoryService messageFactoryService() { MessageFactoryService service = new MessageFactoryService(); return service; } @Bean @Lazy public RequestService requestService() { RequestService service = new RequestService(); service.setBeanService(this.utilities.beanService()); service.setClusterManagementService(this.plate.clusterManagementService()); service.setMessageFactoryService(this.messageFactoryService()); return service; } @Bean @Lazy public FileEncryptionService fileEncryptionService() { FileEncryptionService service = new FileEncryptionService(); service.setFileService(this.localFileService()); service.setProviderService(this.utilities.providerService()); service.setBeanService(this.utilities.beanService()); return service; } @Bean @Lazy public ILocalFileCompareService fileCompareService() { FileCompareService service = new FileCompareService(); service.setFileService(this.localFileService()); service.setWrappedCompareService(this.historyCompareServicePrivate()); return service; } @Bean @Lazy public ILocalFileCompareService historyCompareService() { return this.historyCompareServicePrivate(); } @Bean @Lazy protected ALocalFileCompareService historyCompareServicePrivate() { FileHistoryCompareService historyService = new FileHistoryCompareService(); historyService.setHistoryService(this.historyFileService()); return historyService; } @Bean @Lazy @Scope(value = "prototype") public ApacheDefaultFileListener fileListenerService() { ApacheDefaultFileListener listener = new ApacheDefaultFileListener(); listener.setBeanService(this.utilities.beanService()); listener.setExecutorService(this.utilities.pieExecutorService()); return listener; } @Bean @Lazy public ApacheFileWatcherService apacheFileWatcherService() { ApacheFileWatcherService watcher = new ApacheFileWatcherService(); watcher.setBeanService(this.utilities.beanService()); watcher.setShutdownService(this.utilities.shutdownService()); watcher.init(); return watcher; } private void fileServiceBase(FileServiceBase base) { base.setBeanService(this.utilities.beanService()); base.setFileWatcherService(this.apacheFileWatcherService()); base.init(); } @Bean @Lazy public LocalFileService localFileService() { LocalFileService service = new LocalFileService(); this.fileServiceBase(service); service.setHashService(this.utilities.md5Service()); return service; } @Bean @Lazy public HistoryFileService historyFileService() { HistoryFileService service = new HistoryFileService(); this.fileServiceBase(service); service.setDatabaseService(this.databaseService()); return service; } @Bean @Lazy public HistoryService historyService() { HistoryService service = new HistoryService(); service.setDatabaseService(this.databaseService()); service.setFileService(this.localFileService()); return service; } @Bean @Lazy public BitTorrentService bitTorrentService() { BitTorrentService service = new BitTorrentService(); service.setBeanService(this.utilities.beanService()); service.setNetworkService(this.networkService()); service.setExecutorService(this.utilities.pieExecutorService()); service.setBase64Service(this.utilities.base64Service()); service.initTorrentService(); return service; } @Bean @Lazy public ShareService shareService() { ShareService service = new ShareService(); service.setFileEncryptionService(this.fileEncryptionService()); service.setFileWatcherService(this.apacheFileWatcherService()); service.setComparerService(this.fileCompareService()); service.setFileService(this.localFileService()); service.init(); return service; } @Bean @Lazy public DatabaseService databaseService() { DatabaseService service = new DatabaseService(); service.setBase64Service(utilities.base64Service()); service.setBeanService(utilities.beanService()); service.setPieDatabaseManagerFactory(pieDatabaseManagerFactory()); service.setConfigurationFactory(configurationFactory()); service.setModelEntityConverterService(modelEntityConverterService()); return service; } public ModelEntityConverterService modelEntityConverterService() { ModelEntityConverterService service = new ModelEntityConverterService(); service.setBeanService(utilities.beanService()); return service; } @Bean @Lazy public PieDatabaseManagerFactory pieDatabaseManagerFactory() { PieDatabaseManagerFactory fac = new PieDatabaseManagerFactory(); fac.setApplicationConfigurationService(applicationConfigurationService()); fac.setShutdownService(this.utilities.shutdownService()); return fac; } @Bean @Lazy public FileFilterService fileFilterService() { FileFilterService filter = new FileFilterService(); filter.setDatabaseService(databaseService()); return filter; } @Bean @Lazy @Scope(value = "prototype") public RegexFileFilter fileFilter() { RegexFileFilter filter = new RegexFileFilter(); filter.setRegexService(utilities.regexService()); return filter; } @Bean @Lazy public ConfigurationFactory configurationFactory() { ConfigurationFactory service = new ConfigurationFactory(); service.setApplicationConfiguration(applicationConfigurationService()); service.setBeanService(utilities.beanService()); return service; } }