All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.marketcetera.marketdata.csv.CSVFeedCredentials Maven / Gradle / Ivy

There is a newer version: 4.1.1
Show newest version
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