OperationBuilder.java
/*******************************************************************************
* Copyright (c) 2021 Eclipse RDF4J contributors.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Distribution License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*******************************************************************************/
package org.eclipse.rdf4j.spring.dao.support.opbuilder;
import java.util.Map;
import java.util.Objects;
import java.util.function.Consumer;
import org.eclipse.rdf4j.model.IRI;
import org.eclipse.rdf4j.model.Value;
import org.eclipse.rdf4j.query.Operation;
import org.eclipse.rdf4j.sparqlbuilder.core.Variable;
import org.eclipse.rdf4j.spring.dao.support.bindingsBuilder.BindingsBuilder;
import org.eclipse.rdf4j.spring.support.RDF4JTemplate;
/**
* @author Florian Kleedorfer
* @since 4.0.0
*/
public class OperationBuilder<T extends Operation, SUB extends OperationBuilder<T, SUB>> {
private final T operation;
private final BindingsBuilder bindingsBuilder = new BindingsBuilder();
private final RDF4JTemplate rdf4JTemplate;
public OperationBuilder(T operation, RDF4JTemplate template) {
Objects.requireNonNull(operation);
this.operation = operation;
this.rdf4JTemplate = template;
}
protected T getOperation() {
return operation;
}
protected RDF4JTemplate getRdf4JTemplate() {
return rdf4JTemplate;
}
protected Map<String, Value> getBindings() {
return bindingsBuilder.build();
}
public SUB withBinding(Variable key, IRI value) {
bindingsBuilder.add(key, value);
return (SUB) this;
}
public SUB withBinding(String key, IRI value) {
bindingsBuilder.add(key, value);
return (SUB) this;
}
public SUB withBinding(Variable key, String value) {
bindingsBuilder.add(key, value);
return (SUB) this;
}
public SUB withBinding(String key, String value) {
bindingsBuilder.add(key, value);
return (SUB) this;
}
public SUB withBinding(Variable key, Integer value) {
bindingsBuilder.add(key, value);
return (SUB) this;
}
public SUB withBinding(String key, Integer value) {
bindingsBuilder.add(key, value);
return (SUB) this;
}
public SUB withBinding(Variable key, Boolean value) {
bindingsBuilder.add(key, value);
return (SUB) this;
}
public SUB withBinding(String key, Boolean value) {
bindingsBuilder.add(key, value);
return (SUB) this;
}
public SUB withBinding(Variable key, Float value) {
bindingsBuilder.add(key, value);
return (SUB) this;
}
public SUB withBinding(String key, Float value) {
bindingsBuilder.add(key, value);
return (SUB) this;
}
public SUB withBinding(Variable key, Double value) {
bindingsBuilder.add(key, value);
return (SUB) this;
}
public SUB withBinding(String key, Double value) {
bindingsBuilder.add(key, value);
return (SUB) this;
}
public SUB withBinding(String key, Value value) {
bindingsBuilder.add(key, value);
return (SUB) this;
}
public SUB withBindings(Map<String, Value> bindings) {
bindings.forEach((key, value) -> bindingsBuilder.add(key, value));
return (SUB) this;
}
public SUB withNullableBindings(Map<String, Value> bindings) {
if (bindings != null) {
bindings.forEach((key, value) -> bindingsBuilder.add(key, value));
}
return (SUB) this;
}
public SUB withBindings(Consumer<BindingsBuilder> consumer) {
consumer.accept(this.bindingsBuilder);
return (SUB) this;
}
}