package org.marketcetera.strategy;
import static org.marketcetera.strategy.Messages.PROVIDER_DESCRIPTION;
import java.io.File;
import java.util.Properties;
import org.marketcetera.core.ClassVersion;
import org.marketcetera.module.ModuleCreationException;
import org.marketcetera.module.ModuleFactory;
import org.marketcetera.module.ModuleURN;
/* $License$ */
/**
* Strategy Agent module factory implementation for the strategy module.
* <p>
* The factory accepts the following parameters when creating new instances of the strategy
* <ol>
* <li>String: strategy instance name</li>
* <li>String: strategy class name</li>
* <li>Object: strategy language, one of {@link Language}</li>
* <li>File: strategy script file</li>
* <li>Properties: strategy properties</li>
* <li>Boolean: if strategy should route orders to the server</li>
* <li>ModuleURN: URN of the module to which all the output should be sent.
* Typically the sink module.</li>
* </ol>
* <p>
* The factory has the following characteristics.
* <table>
* <tr><th>Provider URN:</th><td><code>metc:strategy:system</code></td></tr>
* <tr><th>Cardinality:</th><td>Multi-Instance</td></tr>
* <tr><th>Auto-Instantiated:</th><td>No</td></tr>
* <tr><th>Auto-Started:</th><td>No</td></tr>
* <tr><th>Instantiation Arguments:</th><td><code>String, String, Object, File, Properties, Boolean, ModuleURN</code>: See above for details.</td></tr>
* <tr><th>Module Type:</th><td>{@link StrategyModule}</td></tr>
* </table>
*
* @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a>
* @version $Id: StrategyModuleFactory.java 16154 2012-07-14 16:34:05Z colin $
* @since 1.0.0
*/
@ClassVersion("$Id: StrategyModuleFactory.java 16154 2012-07-14 16:34:05Z colin $")
public final class StrategyModuleFactory
extends ModuleFactory
{
/**
* use this provider URN to start a strategy
*/
public static final ModuleURN PROVIDER_URN = new ModuleURN("metc:strategy:system"); //$NON-NLS-1$
/**
* Create a new MarketceteraFeedModuleFactory instance.
*/
public StrategyModuleFactory()
{
super(PROVIDER_URN,
PROVIDER_DESCRIPTION,
true,
false,
String.class,
String.class,
Object.class,
File.class,
Properties.class,
Boolean.class,
ModuleURN.class);
}
/* (non-Javadoc)
* @see org.marketcetera.module.ModuleFactory#create(java.lang.Object[])
*/
@Override
public StrategyModule create(Object... inParameters)
throws ModuleCreationException
{
return StrategyModule.getStrategyModule(inParameters);
}
}