BindingsBuilder.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.bindingsBuilder;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import org.eclipse.rdf4j.model.IRI;
import org.eclipse.rdf4j.model.Value;
import org.eclipse.rdf4j.model.impl.SimpleValueFactory;
import org.eclipse.rdf4j.sparqlbuilder.core.Variable;
/**
* @author Florian Kleedorfer
* @since 4.0.0
*/
public class BindingsBuilder implements MutableBindings {
private final Map<String, Value> bindings;
public BindingsBuilder() {
this.bindings = new HashMap<>();
}
public BindingsBuilder(Map<String, Value> bindings) {
this.bindings = bindings;
}
public Map<String, Value> build() {
return this.bindings;
}
@Override
public BindingsBuilder add(Variable key, Value value) {
return add(key.getVarName(), value);
}
@Override
public BindingsBuilder add(String key, Value value) {
Objects.requireNonNull(value);
return addMaybe(key, value);
}
@Override
public BindingsBuilder addMaybe(Variable key, Value value) {
return addMaybe(key.getVarName(), value);
}
@Override
public BindingsBuilder addMaybe(String key, Value value) {
checkKeyNotPresent(key);
if (value != null) {
bindings.put(key, value);
}
return this;
}
@Override
public BindingsBuilder add(Variable key, IRI value) {
return add(key.getVarName(), value);
}
@Override
public BindingsBuilder add(String key, IRI value) {
Objects.requireNonNull(value);
return addMaybe(key, value);
}
@Override
public BindingsBuilder addMaybe(Variable key, IRI value) {
return addMaybe(key.getVarName(), value);
}
@Override
public BindingsBuilder addMaybe(Variable key, String value) {
return addMaybe(key.getVarName(), value);
}
@Override
public BindingsBuilder addMaybe(String key, IRI value) {
checkKeyNotPresent(key);
if (value != null) {
bindings.put(key, value);
}
return this;
}
@Override
public BindingsBuilder add(Variable key, String value) {
return add(key.getVarName(), value);
}
@Override
public BindingsBuilder add(String key, String value) {
Objects.requireNonNull(value);
return addMaybe(key, value);
}
public BindingsBuilder addMaybe(String key, String value) {
checkKeyNotPresent(key);
if (value != null) {
bindings.put(key, SimpleValueFactory.getInstance().createLiteral(value));
}
return this;
}
@Override
public BindingsBuilder add(Variable key, Integer value) {
return add(key.getVarName(), value);
}
@Override
public BindingsBuilder add(String key, Integer value) {
Objects.requireNonNull(value);
return addMaybe(key, value);
}
@Override
public BindingsBuilder addMaybe(Variable key, Integer value) {
return addMaybe(key.getVarName(), value);
}
@Override
public BindingsBuilder addMaybe(String key, Integer value) {
checkKeyNotPresent(key);
if (value != null) {
bindings.put(key, SimpleValueFactory.getInstance().createLiteral(value));
}
return this;
}
@Override
public BindingsBuilder add(Variable key, Boolean value) {
return add(key.getVarName(), value);
}
@Override
public BindingsBuilder add(String key, Boolean value) {
Objects.requireNonNull(value);
return addMaybe(key, value);
}
@Override
public BindingsBuilder addMaybe(Variable key, Boolean value) {
return addMaybe(key.getVarName(), value);
}
@Override
public BindingsBuilder addMaybe(String key, Boolean value) {
checkKeyNotPresent(key);
if (value != null) {
bindings.put(key, SimpleValueFactory.getInstance().createLiteral(value));
}
return this;
}
@Override
public BindingsBuilder add(Variable key, Float value) {
return add(key.getVarName(), value);
}
@Override
public BindingsBuilder add(String key, Float value) {
Objects.requireNonNull(value);
return addMaybe(key, value);
}
@Override
public BindingsBuilder addMaybe(Variable key, Float value) {
return addMaybe(key.getVarName(), value);
}
@Override
public BindingsBuilder addMaybe(String key, Float value) {
checkKeyNotPresent(key);
if (value != null) {
bindings.put(key, SimpleValueFactory.getInstance().createLiteral(value));
}
return this;
}
@Override
public BindingsBuilder add(Variable key, Double value) {
return add(key.getVarName(), value);
}
@Override
public BindingsBuilder add(String key, Double value) {
Objects.requireNonNull(value);
return addMaybe(key, value);
}
@Override
public BindingsBuilder addMaybe(Variable var, Double value) {
return addMaybe(var.getVarName(), value);
}
@Override
public BindingsBuilder addMaybe(String key, Double value) {
checkKeyNotPresent(key);
if (bindings != null) {
bindings.put(key, SimpleValueFactory.getInstance().createLiteral(value));
}
return this;
}
private void checkKeyNotPresent(String key) {
if (bindings.containsKey(key)) {
throw new IllegalArgumentException(
String.format("Binding for key '%s' already registered", key));
}
}
}