package org.skife.jdbi.v2;
import org.skife.jdbi.v2.tweak.Argument;
import org.skife.jdbi.v2.tweak.NamedArgumentFinder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Binding
{
private Map<Integer, Argument> positionals = new HashMap<Integer, Argument>();
private Map<String, Argument> named = new HashMap<String, Argument>();
private List<NamedArgumentFinder> namedArgumentFinder = new ArrayList<NamedArgumentFinder>();
void addPositional(int position, Argument parameter) {
positionals.put(position, parameter);
}
public Argument forName(String name) {
if (named.containsKey(name)) {
return named.get(name);
}
else {
for (NamedArgumentFinder arguments : namedArgumentFinder) {
Argument arg = arguments.find(name);
if (arg != null) {
return arg;
}
}
}
return null;
}
public Argument forPosition(int position) {
return positionals.get(position);
}
void addNamed(String name, Argument argument) {
this.named.put(name, argument);
}
void addNamedArgumentFinder(NamedArgumentFinder args) {
namedArgumentFinder.add(args);
}
@Override
public String toString() {
boolean wrote = false;
StringBuilder b = new StringBuilder();
b.append("{ positional:{");
for (Map.Entry<Integer, Argument> entry : positionals.entrySet()) {
wrote = true;
b.append(entry.getKey()).append(":").append(entry.getValue()).append(",");
}
if (wrote) {
wrote = false;
b.deleteCharAt(b.length() - 1);
}
b.append("}");
b.append(", named:{");
for (Map.Entry<String, Argument> entry : named.entrySet()) {
wrote = true;
b.append(entry.getKey()).append(":").append(entry.getValue()).append(",");
}
if (wrote) {
wrote = false;
b.deleteCharAt(b.length() - 1);
}
b.append("}");
b.append(", finder:[");
for (NamedArgumentFinder argument : namedArgumentFinder) {
wrote = true;
b.append(argument).append(",");
}
if (wrote) {
b.deleteCharAt(b.length() - 1);
}
b.append("]");
b.append("}");
return b.toString();
}
public void clear()
{
positionals.clear();
named.clear();
namedArgumentFinder.clear();
}
}