package net.enilink.komma.internal.rdf4j;
import org.eclipse.rdf4j.model.Value;
import org.eclipse.rdf4j.query.Update;
import org.eclipse.rdf4j.query.UpdateExecutionException;
import com.google.inject.Inject;
import net.enilink.komma.core.IValue;
import net.enilink.komma.core.KommaException;
import net.enilink.komma.dm.IDataManagerUpdate;
import net.enilink.komma.rdf4j.RDF4JValueConverter;
/**
* Implements {@link IDataManagerUpdate} for {@link RDF4JRepositoryDataManager}
* .
*/
public class RDF4JUpdateRemote implements IDataManagerUpdate {
protected Update update;
@Inject
RDF4JValueConverter valueConverter;
public RDF4JUpdateRemote(Update update) {
this.update = update;
}
@Override
public void execute() {
try {
update.execute();
} catch (UpdateExecutionException e) {
throw new KommaException(e);
}
}
@Override
public IDataManagerUpdate setParameter(String name, IValue value) {
Value boundValue = valueConverter.toRdf4j(value);
if (boundValue == null) {
update.removeBinding(name);
} else {
update.setBinding(name, boundValue);
}
return this;
}
}