@Inject
public CassandraSampleRepository(CassandraSession session, @Named("samples.cassandra.time-to-live") int ttl, MetricRegistry registry, SampleProcessorService processorService, ContextConfigurations contextConfigurations) {
m_session = checkNotNull(session, "session argument");
checkArgument(ttl >= 0, "Negative Cassandra column TTL");
m_ttl = ttl;
checkNotNull(registry, "metric registry argument");
m_processorService = processorService;
m_contextConfigurations = checkNotNull(contextConfigurations, "contextConfigurations argument");
Select select = QueryBuilder.select().from(SchemaConstants.T_SAMPLES);
select.where(eq(SchemaConstants.F_CONTEXT, bindMarker(SchemaConstants.F_CONTEXT)));
select.where(eq(SchemaConstants.F_PARTITION, bindMarker(SchemaConstants.F_PARTITION)));
select.where(eq(SchemaConstants.F_RESOURCE, bindMarker(SchemaConstants.F_RESOURCE)));
select.where(gte(SchemaConstants.F_COLLECTED, bindMarker("start")));
select.where(lte(SchemaConstants.F_COLLECTED, bindMarker("end")));
m_selectStatement = m_session.prepare(select.toString());
Delete delete = QueryBuilder.delete().from(SchemaConstants.T_SAMPLES);
delete.where(eq(SchemaConstants.F_CONTEXT, bindMarker(SchemaConstants.F_CONTEXT)));
delete.where(eq(SchemaConstants.F_PARTITION, bindMarker(SchemaConstants.F_PARTITION)));
delete.where(eq(SchemaConstants.F_RESOURCE, bindMarker(SchemaConstants.F_RESOURCE)));
m_deleteStatement = m_session.prepare(delete.toString());
m_sampleSelectTimer = registry.timer(metricName("sample-select-timer"));
m_measurementSelectTimer = registry.timer(metricName("measurement-select-timer"));
m_insertTimer = registry.timer(metricName("insert-timer"));
m_samplesInserted = registry.meter(metricName("samples-inserted"));
m_samplesSelected = registry.meter(metricName("samples-selected"));
}