Created
December 5, 2013 14:41
-
-
Save GLitchfield/7806131 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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