
org.marketcetera.marketdata.csv.CSVFeedCredentials Maven / Gradle / Ivy
package org.marketcetera.marketdata.csv;
import static org.marketcetera.marketdata.csv.Messages.INVALID_EVENT_TRANSLATOR;
import java.io.File;
import org.apache.commons.lang.Validate;
import org.marketcetera.marketdata.AbstractMarketDataFeedCredentials;
import org.marketcetera.marketdata.FeedException;
import org.marketcetera.util.log.I18NBoundMessage1P;
import org.marketcetera.util.log.SLF4JLoggerProxy;
import org.marketcetera.util.misc.ClassVersion;
/**
* Encapsulates the data necessary to initialize an instance of {@link CSVFeed}.
*
* @author toli kuznets
* @author Colin DuPlantis
* @since 2.1.0
* @version $Id: CSVFeedCredentials.java 16154 2012-07-14 16:34:05Z colin $
*/
@ClassVersion("$Id: CSVFeedCredentials.java 16154 2012-07-14 16:34:05Z colin $")
public final class CSVFeedCredentials
extends AbstractMarketDataFeedCredentials
{
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString()
{
return String.format("CSVFeedCredentials [eventTranslator=%s, millisecondDelay=%s]", //$NON-NLS-1$
eventTranslator,
replayRate);
}
/**
* Retrieves an instance of CSVFeedCredentials
.
*
* @param inReplayRate a long
value containing the rate at which to replay marketdata
* @param inReplayEvents a boolean
value indicating whether to replay events upon completion
* @param inMarketdataDirectory a String
value containing the marketdata files
* @param inEventTranslatorClassname a String
value containing the fully-qualified name of the event translator class
* @return a CSVFeedCredentials
value
* @throws FeedException if an error occurs while retrieving the credentials object
*/
static CSVFeedCredentials getInstance(long inReplayRate,
boolean inReplayEvents,
String inMarketdataDirectory,
String inEventTranslatorClassname)
throws FeedException
{
SLF4JLoggerProxy.debug(CSVFeedCredentials.class,
"Creating credentials at a replay rate of {}, replay events value of {}, marketdata directory {}, and event translator classname {}", //$NON-NLS-1$
inReplayRate,
inReplayEvents,
inMarketdataDirectory,
inEventTranslatorClassname);
try {
return new CSVFeedCredentials(inReplayRate,
inReplayEvents,
inMarketdataDirectory,
inEventTranslatorClassname);
} catch (FeedException e) {
throw e;
} catch (Exception e) {
INVALID_EVENT_TRANSLATOR.error(CSVFeedCredentials.class,
e,
inEventTranslatorClassname);
throw new FeedException(e,
new I18NBoundMessage1P(INVALID_EVENT_TRANSLATOR,
inEventTranslatorClassname));
}
}
/**
* Retrieves an instance of CSVFeedCredentials
.
*
* @param inReplayRate a long
value containing the rate at which to replay marketdata
* @param inReplayEvents a boolean
value indicating whether to replay events upon completion
* @param inMarketdataDirectory a String
value containing the marketdata files
* @return a CSVFeedCredentials
value
* @throws FeedException if an error occurs while retrieving the credentials object
*/
static CSVFeedCredentials getInstance(long inReplayRate,
boolean inReplayEvents,
String inMarketdataDirectory,
CSVFeedEventTranslator inEventTranslator)
throws FeedException
{
SLF4JLoggerProxy.debug(CSVFeedCredentials.class,
"Creating credentials at a replay rate of {}, replay events value of {}, marketdata directory {}, and event translator classname {}", //$NON-NLS-1$
inReplayRate,
inReplayEvents,
inMarketdataDirectory,
inEventTranslator);
try {
return new CSVFeedCredentials(inReplayRate,
inReplayEvents,
inMarketdataDirectory,
inEventTranslator);
} catch (Exception e) {
INVALID_EVENT_TRANSLATOR.error(CSVFeedCredentials.class,
e,
inEventTranslator);
throw new FeedException(e,
new I18NBoundMessage1P(INVALID_EVENT_TRANSLATOR,
String.valueOf(inEventTranslator)));
}
}
/**
* Get the marketdataDirectory value.
*
* @return a File
value
*/
public File getMarketdataDirectory()
{
return marketdataDirectory;
}
/**
* Get the replayRate value.
*
* @return a long
value
*/
public long getReplayRate()
{
return replayRate;
}
/**
* Get the eventTranslator value.
*
* @return a CSVFeedEventTranslator
value
*/
public CSVFeedEventTranslator getEventTranslator()
{
return eventTranslator;
}
/**
* Get the replayEvents value.
*
* @return a boolean
value
*/
public boolean getReplayEvents()
{
return replayEvents;
}
/**
* Creates a new CSVFeedCredentials
instance.
*
* @param inReplayRate a long
value containing the rate at which to replay marketdata
* @param inReplayEvents a boolean
value indicating whether to replay events upon completion
* @param inMarketdataDirectory a String
value containing the marketdata files
* @param inEventTranslatorClassname a String
value containing the fully-qualified name of the event translator class
* @throws ClassNotFoundException if the given classname does not exist in the classpath
* @throws IllegalAccessException if the class referred to by the classname is not accessible
* @throws InstantiationException if the class referred to by the classname cannot be instantiated
* @throws FeedException if the given delay is invalid
*/
private CSVFeedCredentials(long inReplayRate,
boolean inReplayEvents,
String inMarketdataDirectory,
String inEventTranslatorClassname)
throws InstantiationException, IllegalAccessException, ClassNotFoundException, FeedException
{
this(inReplayRate,
inReplayEvents,
inMarketdataDirectory,
(CSVFeedEventTranslator)Class.forName(inEventTranslatorClassname).newInstance());
}
/**
* Creates a new CSVFeedCredentials
instance.
*
* @param inReplayRate a long
value containing the rate at which to replay marketdata
* @param inReplayEvents a boolean
value indicating whether to replay events upon completion
* @param inMarketdataDirectory a String
value containing the marketdata files
* @param inEventTranslatorClassname a String
value containing the fully-qualified name of the event translator class
* @throws FeedException if an error occurs while constructing the credentials object
*/
private CSVFeedCredentials(long inReplayRate,
boolean inReplayEvents,
String inMarketdataDirectory,
CSVFeedEventTranslator inEventTranslator)
throws FeedException
{
if(inEventTranslator == null) {
throw new NullPointerException();
}
replayRate = inReplayRate;
replayEvents = inReplayEvents;
marketdataDirectory = new File(inMarketdataDirectory);
Validate.isTrue(marketdataDirectory.exists(),
"Marketdata directory does not exist");
Validate.isTrue(marketdataDirectory.canRead(),
"Marketdata directory is not readable");
eventTranslator = inEventTranslator;
}
/**
* the directory in which to find marketdata
*/
private final File marketdataDirectory;
/**
* number of milliseconds to delay between events
*/
private final long replayRate;
/**
* indicates whether to replay events upon completion
*/
private final boolean replayEvents;
/**
* the event translator to use
*/
private final CSVFeedEventTranslator eventTranslator;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy