/*
* 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;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.TimeUnit;
import org.pieShare.pieTools.pieUtilities.service.base64Service.Base64Service;
import org.pieShare.pieTools.pieUtilities.service.beanService.BeanService;
import org.pieShare.pieTools.pieUtilities.service.commandParser.Argparse4jService;
import org.pieShare.pieTools.pieUtilities.service.compressor.Compressor;
import org.pieShare.pieTools.pieUtilities.service.propertiesReader.PropertiesReader;
import org.pieShare.pieTools.pieUtilities.service.eventBase.EventBase;
import org.pieShare.pieTools.pieUtilities.service.idService.IDService;
import org.pieShare.pieTools.pieUtilities.service.networkService.UdpPortService;
import org.pieShare.pieTools.pieUtilities.service.pieExecutorService.PieExecutorService;
import org.pieShare.pieTools.pieUtilities.service.pieExecutorService.PieExecutorTaskFactory;
import org.pieShare.pieTools.pieUtilities.service.regexService.RegexService;
import org.pieShare.pieTools.pieUtilities.service.security.BouncyCastleProviderService;
import org.pieShare.pieTools.pieUtilities.service.security.encodeService.EncodeService;
import org.pieShare.pieTools.pieUtilities.service.security.hashService.MD5Service;
import org.pieShare.pieTools.pieUtilities.service.security.pbe.PasswordEncryptionService;
import org.pieShare.pieTools.pieUtilities.service.shutDownService.ShutdownService;
import org.pieShare.pieTools.pieUtilities.service.tempFolderService.TempFolderService;
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 PieUtilitiesConfiguration {
@Bean
@Lazy
public BeanService beanService() {
return new BeanService();
}
@Bean
@Lazy
@Scope(value = "prototype")
public Map javaMap() {
return new HashMap();
}
@Bean
@Lazy
public ExecutorService javaExecutorService() {
return java.util.concurrent.Executors.newCachedThreadPool();
}
@Bean
@Lazy
public PieExecutorService pieExecutorService() {
PieExecutorService service = PieExecutorService.newCachedPieExecutorService();
//service.setExecutor(this.javaExecutorService());
service.setExecutorFactory(this.pieExecutorTaskFactory());
return service;
}
@Bean
@Lazy
public PieExecutorTaskFactory pieExecutorTaskFactory() {
PieExecutorTaskFactory factory = new PieExecutorTaskFactory();
factory.setBeanService(this.beanService());
factory.setTasks(this.javaMap());
return factory;
}
@Bean
@Lazy
public ShutdownService shutdownService() {
ShutdownService service = new ShutdownService();
service.setListener(this.pieExecutorService());
return service;
}
@Bean
@Lazy
public Argparse4jService argparse4jService() {
return new Argparse4jService();
}
@Bean
@Lazy
public Base64Service base64Service() {
return new Base64Service();
}
@Bean
@Lazy
@Scope(value = "prototype")
public Compressor compressor() {
Compressor com = new Compressor();
com.setBase64Service(base64Service());
return com;
}
@Bean
@Lazy
public PropertiesReader configurationReader() {
return new PropertiesReader();
}
@Bean
@Lazy
public BouncyCastleProviderService providerService() {
return new BouncyCastleProviderService();
}
@Bean
@Lazy
public PasswordEncryptionService passwordEncryptionService() {
PasswordEncryptionService service = new PasswordEncryptionService();
service.setProviderService(this.providerService());
return service;
}
@Bean
@Lazy
public TempFolderService tempFolderService() {
return new TempFolderService();
}
@Bean
@Lazy
public MD5Service md5Service() {
MD5Service service = new MD5Service();
service.setProviderService(this.providerService());
return service;
}
@Bean
@Lazy
@Scope(value = "prototype")
public EventBase eventBase() {
return new EventBase();
}
@Bean
@Lazy
@Scope(value = "prototype")
public RegexService regexService() {
return new RegexService();
}
@Bean
@Lazy
public EncodeService encodeService() {
EncodeService service = new EncodeService();
service.setPasswordEncryptionService(passwordEncryptionService());
service.setProviderService(providerService());
return service;
}
@Bean
@Lazy
public IDService idService() {
IDService service = new IDService();
return service;
}
@Bean
@Lazy
public UdpPortService udpPortService() {
UdpPortService service = new UdpPortService();
return service;
}
}