package org.opennms.newts.cassandra;
import java.util.Collection;
import java.util.Map;
import org.opennms.newts.api.Context;
import org.opennms.newts.api.Duration;
import com.datastax.driver.core.ConsistencyLevel;
import com.google.common.collect.Maps;
public class ContextConfigurations {
private static final Duration DEFAULT_RESOURCE_SHARD = Duration.days(7);
private static final ConsistencyLevel DEFAULT_READ_CONSISTENCY = ConsistencyLevel.ONE;
private static final ConsistencyLevel DEFAULT_WRITE_CONSISTENCY = ConsistencyLevel.ANY;
private final Map<Context, ContextConfiguration> m_contexts = Maps.newHashMap();
public ContextConfigurations() { }
public ContextConfigurations(Collection<ContextConfiguration> contextConfigs) {
for (ContextConfiguration contextConfig : contextConfigs) {
addContextConfig(contextConfig);
}
}
public ContextConfigurations addContextConfig(ContextConfiguration contextConfig) {
m_contexts.put(contextConfig.getContext(), contextConfig);
return this;
}
public ContextConfigurations addContextConfig(Context context, Duration resourceShard,
ConsistencyLevel readConsistencyLevel, ConsistencyLevel writeConsistencyLevel) {
m_contexts.put(context, new ContextConfiguration(context, resourceShard,
readConsistencyLevel, writeConsistencyLevel));
return this;
}
public Duration getResourceShard(Context context) {
ContextConfiguration configConfig = m_contexts.get(context);
if (configConfig != null) {
return configConfig.getResourceShard();
} else {
return DEFAULT_RESOURCE_SHARD;
}
}
public ConsistencyLevel getReadConsistency(Context context) {
ContextConfiguration configConfig = m_contexts.get(context);
if (configConfig != null) {
return configConfig.getReadConsistency();
} else {
return DEFAULT_READ_CONSISTENCY;
}
}
public ConsistencyLevel getWriteConsistency(Context context) {
ContextConfiguration configConfig = m_contexts.get(context);
if (configConfig != null) {
return configConfig.getWriteConsistency();
} else {
return DEFAULT_WRITE_CONSISTENCY;
}
}
}