Skip to content

Instantly share code, notes, and snippets.

@GLitchfield
Created December 5, 2013 14:41
Show Gist options
  • Save GLitchfield/7806131 to your computer and use it in GitHub Desktop.
Save GLitchfield/7806131 to your computer and use it in GitHub Desktop.
public final class MarketDataGetters {
public interface MDGetter<V extends MarketData<V>> {
public V get(Market market);
}
@SuppressWarnings({ "rawtypes", "serial" })
private static final Map<Class, MDGetter> getters =
new HashMap<Class, MDGetter>() {{
put(Market.class, new MDGetter<Market>() {
@Override
public Market get(final Market market) {
return market;
}
});
put(Trade.class, new MDGetter<Trade>() {
@Override
public Trade get(final Market market) {
return market.trade();
}
});
put(Book.class, new MDGetter<Book>() {
@Override
public Book get(final Market market) {
return market.book();
}
});
put(BookSet.class, new MDGetter<BookSet>() {
@Override
public BookSet get(Market market) {
return market.bookSet();
}
});
put(Cuvol.class, new MDGetter<Cuvol>() {
@Override
public Cuvol get(final Market market) {
return market.cuvol();
}
});
put(Session.class, new MDGetter<Session>() {
@Override
public Session get(final Market market) {
return market.session();
}
});
put(SessionSet.class, new MDGetter<SessionSet>() {
@Override
public SessionSet get(Market market) {
return market.sessionSet();
}
});
}};
@SuppressWarnings("unchecked")
public static <V extends MarketData<V>> MDGetter<V> get(Class<V> clazz) {
final MDGetter<V> getter = getters.get(clazz);
if(getter != null) {
return getter;
}
throw new IllegalArgumentException("Class not supported: " + clazz.getName());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment