/*
* Copyright Aduna (http://www.aduna-software.com/) (c) 1997-2007.
*
* Licensed under the Aduna BSD-style license.
*/
package org.openrdf.sail.helpers;
import java.io.File;
import org.openrdf.model.ValueFactory;
import org.openrdf.sail.Sail;
import org.openrdf.sail.SailChangedListener;
import org.openrdf.sail.SailConnection;
import org.openrdf.sail.SailException;
import org.openrdf.sail.StackableSail;
/**
* An implementation of the StackableSail interface that wraps another Sail
* object and forwards any relevant calls to the wrapped Sail.
*
* @author Arjohn Kampman
*/
public class SailWrapper implements StackableSail {
/*-----------*
* Variables *
*-----------*/
/**
* The base Sail for this SailWrapper.
*/
private Sail baseSail;
/*--------------*
* Constructors *
*--------------*/
/**
* Creates a new SailWrapper. The base Sail for the created SailWrapper can
* be set later using {@link #setBaseSail}.
*/
public SailWrapper() {
}
/**
* Creates a new SailWrapper that wraps the supplied Sail.
*/
public SailWrapper(Sail baseSail) {
setBaseSail(baseSail);
}
/*---------*
* Methods *
*---------*/
public void setBaseSail(Sail baseSail) {
this.baseSail = baseSail;
}
public Sail getBaseSail() {
return baseSail;
}
private void verifyBaseSailSet() {
if (baseSail == null) {
throw new IllegalStateException("No base Sail has been set");
}
}
public File getDataDir() {
return baseSail.getDataDir();
}
public void setDataDir(File dataDir) {
baseSail.setDataDir(dataDir);
}
public void initialize()
throws SailException
{
verifyBaseSailSet();
baseSail.initialize();
}
public void shutDown()
throws SailException
{
verifyBaseSailSet();
baseSail.shutDown();
}
public boolean isWritable()
throws SailException
{
verifyBaseSailSet();
return baseSail.isWritable();
}
public SailConnection getConnection()
throws SailException
{
verifyBaseSailSet();
return baseSail.getConnection();
}
public ValueFactory getValueFactory() {
verifyBaseSailSet();
return baseSail.getValueFactory();
}
public void addSailChangedListener(SailChangedListener listener) {
verifyBaseSailSet();
baseSail.addSailChangedListener(listener);
}
public void removeSailChangedListener(SailChangedListener listener) {
verifyBaseSailSet();
baseSail.removeSailChangedListener(listener);
}
}