package net.fortytwo.sesametools;
import org.openrdf.IsolationLevel;
import org.openrdf.model.ValueFactory;
import org.openrdf.sail.Sail;
import org.openrdf.sail.SailConnection;
import org.openrdf.sail.SailException;
import org.openrdf.sail.StackableSail;
import java.io.File;
import java.util.List;
/**
* A StackableSail which allows multiple Sails to be stacked upon the same base
* Sail (avoiding re-initialization of the base Sail as the individual stacked
* Sails are initialized)
*
* @author Joshua Shinavier (http://fortytwo.net)
*/
public class MultiStackableSail implements StackableSail {
private Sail baseSail;
public MultiStackableSail(final Sail baseSail) {
setBaseSail(baseSail);
}
public void setBaseSail(Sail sail) {
this.baseSail = sail;
}
public Sail getBaseSail() {
return baseSail;
}
public void setDataDir(File file) {
baseSail.setDataDir(file);
}
public File getDataDir() {
return baseSail.getDataDir();
}
public void initialize() throws SailException {
// Do nothing -- assume that the base Sail is initialized elsewhere
}
public void shutDown() throws SailException {
// Do nothing -- assume that the base Sail will be shut down elsewhere
}
public boolean isWritable() throws SailException {
return baseSail.isWritable();
}
public SailConnection getConnection() throws SailException {
return baseSail.getConnection();
}
public ValueFactory getValueFactory() {
return baseSail.getValueFactory();
}
@Override
public List<IsolationLevel> getSupportedIsolationLevels() {
return baseSail.getSupportedIsolationLevels();
}
@Override
public IsolationLevel getDefaultIsolationLevel() {
return baseSail.getDefaultIsolationLevel();
}
}