@Override
public List<TimespanModel> getTimespans(final long startMillis, final long endMillis, final ApiKey apiKey, final String channelName) {
List<TimespanModel> items = new ArrayList<TimespanModel>();
final TimeInterval timeInterval = new SimpleTimeInterval(startMillis, endMillis, TimeUnit.ARBITRARY, TimeZone.getTimeZone("UTC"));
Connector connector = apiKey.getConnector();
// Sadly, the start and end times of twitter facets are the same. Assume that the
// start time is correct and arbitrarily draw a box that's 1 mins or
// 1/256 of the tile width, whichever is larger.
long duration = Math.max((endMillis-startMillis)/256L, 60000L);
//TODO: support merging
for (ObjectType objectType : connector.objectTypes()) {
String objectTypeName = apiKey.getConnector().getName() + "-" + objectType.getName();
List<AbstractFacet> objectTypeFacets = getFacetsInTimespan(timeInterval,apiKey, objectType);
for (AbstractFacet facet : objectTypeFacets){
items.add(new TimespanModel(facet.start, facet.start+duration, channelName, objectTypeName));