package org.marketcetera.event;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.marketcetera.core.CoreException;
import org.marketcetera.marketdata.MarketDataRequest;
/* $License$ */
/**
* Test implementation of <code>IEventTranslator</code>.
*
* @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a>
* @version $Id: MockEventTranslator.java 16154 2012-07-14 16:34:05Z colin $
* @since 0.5.0
*/
public class MockEventTranslator
implements EventTranslator
{
private static boolean sTranslateToEventsThrows = false;
private static boolean sTranslateToEventsReturnsNull = false;
private static boolean sTranslateToEventsReturnsZeroEvents = false;
private static MockEventTranslator sInstance = new MockEventTranslator();
private static MarketDataRequest requestToReturn = null;
/**
* Gets a <code>TestEventTranslator</code> value.
*
* @return a <code>TestEventTranslator</code> value
*/
public static MockEventTranslator getTestEventTranslator()
{
return sInstance;
}
/* (non-Javadoc)
* @see org.marketcetera.event.IEventTranslator#translate(java.lang.Object)
*/
@Override
public List<Event> toEvent(Object inData,
String inHandle)
throws CoreException
{
if(getTranslateToEventsThrows()) {
throw new NullPointerException("This exception is expected");
}
if(getTranslateToEventsReturnsNull()) {
return null;
}
if(getTranslateToEventsReturnsZeroEvents()) {
return new ArrayList<Event>();
}
MarketDataRequest request = null;
if(requestToReturn != null) {
request = requestToReturn;
} else if(inData instanceof MarketDataRequest) {
request = (MarketDataRequest)inData;
}
if(inData instanceof QuoteEvent ||
inData instanceof AggregateEvent) {
return Arrays.asList(new Event[] {(Event)inData });
}
if(inData instanceof Event) {
return Arrays.asList(new Event[] { (Event)inData });
}
return Arrays.asList(new Event[] { new MockEvent(request) });
}
/* (non-Javadoc)
* @see org.marketcetera.event.IEventTranslator#translate(org.marketcetera.event.Event)
*/
public String fromEvent(Event inEvent)
throws CoreException
{
return inEvent.toString();
}
public static boolean getTranslateToEventsThrows()
{
return sTranslateToEventsThrows;
}
public static void setTranslateToEventsThrows(boolean inTranslateToEventsThrows)
{
sTranslateToEventsThrows = inTranslateToEventsThrows;
}
public static boolean getTranslateToEventsReturnsZeroEvents()
{
return sTranslateToEventsReturnsZeroEvents;
}
public static void setTranslateToEventsReturnsZeroEvents(boolean inTranslateToEventsReturnsZeroEvents)
{
sTranslateToEventsReturnsZeroEvents = inTranslateToEventsReturnsZeroEvents;
}
public static boolean getTranslateToEventsReturnsNull()
{
return sTranslateToEventsReturnsNull;
}
public static void setTranslateToEventsReturnsNull(boolean inTranslateToEventsReturnsNull)
{
sTranslateToEventsReturnsNull = inTranslateToEventsReturnsNull;
}
/**
* Sets the requestToReturn value.
*
* @param a <code>DataRequest</code> value
*/
public static void setRequestToReturn(MarketDataRequest inRequestToReturn)
{
requestToReturn = inRequestToReturn;
}
/**
* Resets the behavior to the default. Tests that configure this class should use this method to cleanup.
*/
public static void reset()
{
requestToReturn = null;
sTranslateToEventsReturnsNull = false;
sTranslateToEventsReturnsZeroEvents = false;
sTranslateToEventsThrows = false;
}
}