package net.enilink.komma.rdf4j;
import org.eclipse.rdf4j.repository.Repository;
import org.eclipse.rdf4j.repository.RepositoryException;
import com.google.inject.Inject;
import com.google.inject.Injector;
import net.enilink.komma.core.IDialect;
import net.enilink.komma.core.KommaException;
import net.enilink.komma.core.SparqlStandardDialect;
import net.enilink.komma.dm.IDataManager;
import net.enilink.komma.dm.IDataManagerFactory;
import net.enilink.komma.internal.rdf4j.RDF4JRepositoryDataManager;
public class RDF4JDataManagerFactory implements IDataManagerFactory {
@Inject
protected Injector injector;
@Inject
protected Repository repository;
@Inject(optional = true)
protected IDialect dialect;
@Override
public IDataManager get() {
return injector.getInstance(RDF4JRepositoryDataManager.class);
}
@Override
public IDialect getDialect() {
if (dialect == null) {
dialect = createDialect();
}
return dialect;
}
protected IDialect createDialect() {
return new SparqlStandardDialect();
}
@Override
public void close() {
if (repository != null) {
try {
repository.shutDown();
repository = null;
} catch (RepositoryException e) {
throw new KommaException(e);
}
}
}
}