Package org.marketcetera.strategy
Class StrategyServiceImpl
- java.lang.Object
-
- org.marketcetera.strategy.StrategyServiceImpl
-
- All Implemented Interfaces:
DirectoryWatcherSubscriber,StrategyService
@Component @AutoConfiguration public class StrategyServiceImpl extends Object implements StrategyService, DirectoryWatcherSubscriber
Provides StrategyServiceImpl services.- Since:
- $Release$
- Version:
- $Id$
- Author:
- Colin DuPlantis
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private classStrategyServiceImpl.RunningStrategyTracks a running strategy instance.private classStrategyServiceImpl.StrategyMessageQueueProcessorProcessesStrategyMessageobjects and stores them in bulk.
-
Field Summary
Fields Modifier and Type Field Description private org.springframework.context.ApplicationContextapplicationContextmain application contextprivate ClusterDataclusterDatagenerated cluster dataprivate org.marketcetera.cluster.service.ClusterServiceclusterServiceprovides access to cluster servicesprivate EventBusServiceeventBusServiceprovides access to event bus servicesprivate PathincomingStrategyDirectoryPathdirectory which is monitored for incoming strategiesprivate longpollingIntervalinterval at which to poll for provisioning filesprivate StringserviceNamename of this serviceprivate PathstorageStrategyDirectoryPathdirectory which is used to store uploaded strategies after they are verifiedprivate com.google.common.cache.Cache<String,StrategyServiceImpl.RunningStrategy>strategiesByNamestores running strategies by nameprivate Set<StrategyEventListener>strategyEventListenersholds event listener subscribersprivate StringstrategyIncomingDirectoryNamestrategy incoming directory baseprivate StrategyInstanceDaostrategyInstanceDaoprovides access to theStrategyInstancedata storeprivate StrategyMessageDaostrategyMessageDaoprovides access to theStrategyMessagedata storeprivate StrategyServiceImpl.StrategyMessageQueueProcessorstrategyMessageQueueProcessorprocesses batches of strategy messagesprivate StringstrategyStorageDirectoryNamestrategy storage directory baseprivate StringstrategyTemporaryDirectoryNamestrategy temporary directory baseprivate DirectoryWatcherImplstrategyWatcherwatches the incoming strategy directoryprivate PathtemporaryStrategyDirectoryPathdirectory which is used to store uploaded strategies before they are verifiedprivate org.springframework.orm.jpa.JpaTransactionManagertxManagertransaction manager valueprivate UserDaouserDaoprovides access to theUserdata store
-
Constructor Summary
Constructors Constructor Description StrategyServiceImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddStrategyEventListener(StrategyEventListener inListener)private org.springframework.data.domain.SortbuildSort(PageRequest inPageRequest, org.springframework.data.domain.Sort inDefaultSort)Build the sort statement for a query using the given attributes.StrategyMessagecreateStrategyMessage(StrategyMessage inStrategyMessage)private voiddeleteAllMessagesFor(PersistentStrategyInstance inStrategyInstance)Delete allPersistentStrategyMessagevalues owned by the givenPersistentStrategyInstance.voiddeleteAllStrategyMessages(String inStrategyInstanceName)voiddeleteStrategyMessage(long inStrategyMessageId)Optional<? extends StrategyInstance>findByName(String inName)Finds the strategy instance with the given name.PathgetIncomingStrategyDirectory()Collection<? extends StrategyInstance>getStrategyInstances(String inCurrentUserName)Requests loaded strategy instances.CollectionPageResponse<? extends StrategyMessage>getStrategyMessages(String inStrategyName, INotification.Severity inSeverity, PageRequest inPageRequest)Requests strategy messages.PathgetTemporaryStrategyDirectory()StrategyStatusloadStrategyInstance(StrategyInstance inStrategyInstance)Load a new strategy instances.voidreceived(File inFile, String inOriginalFileName)Load a new strategy instances.voidreceiveStrategyEvent(StrategyEvent inEvent)Receive incoming strategy events.voidremoveStrategyEventListener(StrategyEventListener inListener)voidstart()Validate and start the object.voidstartStrategyInstance(String inStrategyInstanceName)Start a strategy instance.voidstop()Stop the object.voidstopStrategyInstance(String inStrategyInstanceName)Stop a strategy instance.voidunloadStrategyInstance(String inStrategyInstanceName)Unload a strategy instance.
-
-
-
Field Detail
-
strategyMessageQueueProcessor
private StrategyServiceImpl.StrategyMessageQueueProcessor strategyMessageQueueProcessor
processes batches of strategy messages
-
strategyMessageDao
@Autowired private StrategyMessageDao strategyMessageDao
provides access to theStrategyMessagedata store
-
strategiesByName
private final com.google.common.cache.Cache<String,StrategyServiceImpl.RunningStrategy> strategiesByName
stores running strategies by name
-
incomingStrategyDirectoryPath
private Path incomingStrategyDirectoryPath
directory which is monitored for incoming strategies
-
temporaryStrategyDirectoryPath
private Path temporaryStrategyDirectoryPath
directory which is used to store uploaded strategies before they are verified
-
storageStrategyDirectoryPath
private Path storageStrategyDirectoryPath
directory which is used to store uploaded strategies after they are verified
-
applicationContext
@Autowired private org.springframework.context.ApplicationContext applicationContext
main application context
-
pollingInterval
@Value("${metc.strategy.incoming.directory.polling.intervalms:5000}") private long pollingIntervalinterval at which to poll for provisioning files
-
strategyStorageDirectoryName
@Value("${metc.strategy.storage.directory}") private String strategyStorageDirectoryNamestrategy storage directory base
-
strategyIncomingDirectoryName
@Value("${metc.strategy.incoming.directory}") private String strategyIncomingDirectoryNamestrategy incoming directory base
-
strategyTemporaryDirectoryName
@Value("${metc.strategy.temporary.directory}") private String strategyTemporaryDirectoryNamestrategy temporary directory base
-
serviceName
private String serviceName
name of this service
-
strategyWatcher
private DirectoryWatcherImpl strategyWatcher
watches the incoming strategy directory
-
txManager
@Autowired private org.springframework.orm.jpa.JpaTransactionManager txManager
transaction manager value
-
clusterService
@Autowired private org.marketcetera.cluster.service.ClusterService clusterService
provides access to cluster services
-
eventBusService
@Autowired private EventBusService eventBusService
provides access to event bus services
-
clusterData
private ClusterData clusterData
generated cluster data
-
strategyInstanceDao
@Autowired private StrategyInstanceDao strategyInstanceDao
provides access to theStrategyInstancedata store
-
strategyEventListeners
private final Set<StrategyEventListener> strategyEventListeners
holds event listener subscribers
-
-
Method Detail
-
start
@PostConstruct @Transactional(readOnly=false, propagation=REQUIRED) public void start() throws IOExceptionValidate and start the object.- Throws:
IOException- if an error occurs managing strategy and provisioning directories
-
stop
@PreDestroy public void stop()
Stop the object.
-
getStrategyInstances
@Transactional(readOnly=true, propagation=REQUIRED) public Collection<? extends StrategyInstance> getStrategyInstances(String inCurrentUserName)Requests loaded strategy instances.- Specified by:
getStrategyInstancesin interfaceStrategyService- Returns:
- a
Collection<StrategyInstance>value
-
getStrategyMessages
@Transactional(readOnly=true, propagation=REQUIRED) public CollectionPageResponse<? extends StrategyMessage> getStrategyMessages(String inStrategyName, INotification.Severity inSeverity, PageRequest inPageRequest)Requests strategy messages.- Specified by:
getStrategyMessagesin interfaceStrategyService- Parameters:
inStrategyName- aStringvalueinSeverity- aSeverityvalueinPageRequest- aPageRequestvalue- Returns:
- a
CollectionPageResponse<? extends StrategyMessage>value
-
startStrategyInstance
@Transactional(readOnly=false, propagation=REQUIRED) public void startStrategyInstance(String inStrategyInstanceName)Start a strategy instance.- Specified by:
startStrategyInstancein interfaceStrategyService- Parameters:
inStrategyInstanceName- aStringvalue
-
stopStrategyInstance
@Transactional(readOnly=false, propagation=REQUIRED) public void stopStrategyInstance(String inStrategyInstanceName)Stop a strategy instance.- Specified by:
stopStrategyInstancein interfaceStrategyService- Parameters:
inStrategyInstanceName- aStringvalue
-
unloadStrategyInstance
@Transactional(readOnly=false, propagation=REQUIRED) public void unloadStrategyInstance(String inStrategyInstanceName)Unload a strategy instance.- Specified by:
unloadStrategyInstancein interfaceStrategyService- Parameters:
inStrategyInstanceName- aStringvalue
-
deleteStrategyMessage
@Transactional(readOnly=false, propagation=REQUIRED) public void deleteStrategyMessage(long inStrategyMessageId)- Specified by:
deleteStrategyMessagein interfaceStrategyService
-
deleteAllStrategyMessages
@Transactional(readOnly=false, propagation=REQUIRED) public void deleteAllStrategyMessages(String inStrategyInstanceName)- Specified by:
deleteAllStrategyMessagesin interfaceStrategyService
-
getIncomingStrategyDirectory
public Path getIncomingStrategyDirectory()
- Specified by:
getIncomingStrategyDirectoryin interfaceStrategyService
-
getTemporaryStrategyDirectory
public Path getTemporaryStrategyDirectory()
- Specified by:
getTemporaryStrategyDirectoryin interfaceStrategyService
-
received
@Transactional(readOnly=false, propagation=REQUIRED) public void received(File inFile, String inOriginalFileName)Load a new strategy instances.- Specified by:
receivedin interfaceDirectoryWatcherSubscriber- Parameters:
inFile- aFilevalueinOriginalFileName- aStringvalue
-
loadStrategyInstance
@Transactional(readOnly=false, propagation=REQUIRED) public StrategyStatus loadStrategyInstance(StrategyInstance inStrategyInstance)Load a new strategy instances.- Specified by:
loadStrategyInstancein interfaceStrategyService- Parameters:
inStrategyInstance- anStrategyInstancevalue- Returns:
- a
StrategyStatusvalue
-
createStrategyMessage
public StrategyMessage createStrategyMessage(StrategyMessage inStrategyMessage)
- Specified by:
createStrategyMessagein interfaceStrategyService
-
receiveStrategyEvent
public void receiveStrategyEvent(StrategyEvent inEvent)
Receive incoming strategy events.- Parameters:
inEvent- aStrategyEventvalue
-
addStrategyEventListener
public void addStrategyEventListener(StrategyEventListener inListener)
- Specified by:
addStrategyEventListenerin interfaceStrategyService
-
removeStrategyEventListener
public void removeStrategyEventListener(StrategyEventListener inListener)
- Specified by:
removeStrategyEventListenerin interfaceStrategyService
-
findByName
@Transactional(readOnly=true, propagation=REQUIRED) public Optional<? extends StrategyInstance> findByName(String inName)Finds the strategy instance with the given name.- Specified by:
findByNamein interfaceStrategyService- Parameters:
inName- aStringvalue- Returns:
- a
Optional<? extends StrategyInstance>value
-
deleteAllMessagesFor
private void deleteAllMessagesFor(PersistentStrategyInstance inStrategyInstance)
Delete allPersistentStrategyMessagevalues owned by the givenPersistentStrategyInstance.This method assumes a transaction set up by the caller.
- Parameters:
inStrategyInstance- aPersistentStrategyInstancevalue
-
buildSort
private org.springframework.data.domain.Sort buildSort(PageRequest inPageRequest, org.springframework.data.domain.Sort inDefaultSort)
Build the sort statement for a query using the given attributes.- Parameters:
inPageRequest- anorg.marketcetera.persist.PageRequestvalueinDefaultSort- aSortvalue- Returns:
- a
Sortvalue
-
-