package com.bigdata.rdf.graph.impl.bd;
import java.util.Properties;
import org.openrdf.model.ValueFactory;
import org.openrdf.sail.SailConnection;
import org.openrdf.sail.SailException;
import com.bigdata.rdf.graph.IGraphAccessor;
import com.bigdata.rdf.graph.impl.bd.BigdataGASEngine.BigdataGraphAccessor;
import com.bigdata.rdf.graph.util.AbstractGraphFixture;
import com.bigdata.rdf.graph.util.SailGraphLoader;
import com.bigdata.rdf.sail.BigdataSail;
import com.bigdata.rdf.sail.BigdataSail.BigdataSailConnection;
import com.bigdata.rdf.store.AbstractTripleStore;
public class BigdataGraphFixture extends AbstractGraphFixture {
private final BigdataSail sail;
public BigdataGraphFixture(final Properties properties)
throws SailException {
sail = new BigdataSail(properties);
sail.initialize();
}
public BigdataGraphFixture(final AbstractTripleStore kb)
throws SailException {
sail = new BigdataSail(kb);
sail.initialize();
}
@Override
public BigdataSail getSail() {
return sail;
}
@Override
public void destroy() throws Exception {
if (sail.isOpen()) {
sail.shutDown();
}
if (sail instanceof BigdataSail) {
((BigdataSail) sail).__tearDownUnitTest();
}
}
@Override
protected SailGraphLoader newSailGraphLoader(SailConnection cxn) {
return new BigdataSailGraphLoader(cxn);
}
@Override
public BigdataGASEngine newGASEngine(final int nthreads) {
return new BigdataGASEngine(sail, nthreads);
}
@Override
public IGraphAccessor newGraphAccessor(final SailConnection ignored) {
return new BigdataGraphAccessor(sail.getIndexManager());
}
public static class BigdataSailGraphLoader extends SailGraphLoader {
private final ValueFactory valueFactory;
public BigdataSailGraphLoader(SailConnection cxn) {
super(cxn);
// Note: Needed for RDR.
this.valueFactory = ((BigdataSailConnection) cxn).getBigdataSail()
.getValueFactory();
}
@Override
protected ValueFactory getValueFactory() {
return valueFactory;
}
}
}