package com.venky.swf.sql;
import java.util.Iterator;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;
import com.venky.swf.db.model.Model;
import com.venky.swf.db.model.reflection.ModelReflector;
import com.venky.swf.db.table.BindVariable;
public class Insert extends DataManupulationStatement{
private String table = null;
private Map<String,BindVariable> values = null;
private SortedSet<String> keys = new TreeSet<String>();
public <M extends Model> Insert(ModelReflector<M> ref){
this(ref.getPool(),ref.getTableName());
}
public Insert(String pool,String table){
super(pool);
this.table = table;
}
public Insert values(Map<String,BindVariable> values){
this.values = values;
keys.addAll(values.keySet());
return this;
}
@Override
protected void finalizeParameterizedSQL() {
StringBuilder q = getQuery();
q.append("INSERT into ").append(table);
q.append(" ( ");
Iterator<String> ki = keys.iterator();
StringBuilder valueList = new StringBuilder();
while (ki.hasNext()){
String key = ki.next();
q.append(key);
valueList.append("?");
getValues().add(values.get(key));
if (ki.hasNext()){
q.append(" , ");
valueList.append(" , ");
}
}
q.append(" ) values (");
q.append(valueList.toString());
q.append(" )");
}
}