package com.rubiconproject.oss.kv;
import java.io.IOException;
import com.rubiconproject.oss.kv.transcoder.Transcoder;
public abstract class BaseKeyValueStore implements KeyValueStore {
protected KeyValueStoreStatus status = KeyValueStoreStatus.Offline;
public void start() throws IOException {
this.status = KeyValueStoreStatus.Online;
}
public void stop() {
this.status = KeyValueStoreStatus.Offline;
}
public KeyValueStoreStatus getStatus() {
return status;
}
public void setStatus(KeyValueStoreStatus status) {
this.status = status;
}
protected void assertWriteable() throws KeyValueStoreUnavailable {
if (!status.equals(KeyValueStoreStatus.Online))
throw new KeyValueStoreUnavailable();
}
protected void assertReadable() throws KeyValueStoreUnavailable {
if (!(status.equals(KeyValueStoreStatus.Online) || (status
.equals(KeyValueStoreStatus.ReadOnly))))
throw new KeyValueStoreUnavailable();
}
public abstract String getIdentifier();
public abstract boolean exists(String key) throws KeyValueStoreException,
IOException;
public abstract Object get(String key) throws KeyValueStoreException,
IOException;
public abstract Object get(String key, Transcoder transcoder)
throws KeyValueStoreException, IOException;
public abstract void set(String key, Object value)
throws KeyValueStoreException, IOException;
public abstract void set(String key, Object value,
Transcoder transcoder) throws KeyValueStoreException, IOException;
public abstract void delete(String key) throws KeyValueStoreException,
IOException;
}