
org.onetwo.common.db.sqlext.ParamValues Maven / Gradle / Ivy
package org.onetwo.common.db.sqlext;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
import org.onetwo.dbm.utils.JdbcParamValueConvers;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class ParamValues {
/*public static enum PlaceHolder {
POSITION,
NAMED
}*/
protected ExtQueryDialet sqlDialet;
// private PlaceHolder holder;
private Map values = new LinkedHashMap();
public ParamValues(ExtQueryDialet sqlDialet){
this.sqlDialet = sqlDialet;
}
public void addValue(String field, Object value, StringBuilder sqlScript){
int size = values.size();
String fieldName = this.sqlDialet.getNamedPlaceHolder(field, size);
sqlScript.append(":").append(fieldName);
values.put(fieldName, getActualSqlValue(value));
}
private Object getActualSqlValue(Object value){
return JdbcParamValueConvers.getActualValue(value);
}
/*public void directAddValue(Object value){
Map map = getValues();
if(value instanceof Collection){
Map m = CUtils.asLinkedMap(((Collection)value).toArray());
if(m!=null && !m.isEmpty())
map.putAll(m);
}else if(value instanceof Map){
map.putAll((Map)value);
}else{
LangUtils.throwBaseException("unsupported args: "+LangUtils.toString(value));
}
}*/
public void addValues(Map params){
params.forEach((k, v)->values.put(k, getActualSqlValue(v)));
}
public void joinToQuery(ExtQueryInner subQuery){
/*Map pvs = getValues();
Map subParamValues = subQuery.getParamsValue().getValues();
subParamValues.putAll(pvs);
subQuery.build();
pvs.clear();
pvs.putAll(subParamValues);*/
ParamValues subParamValues = subQuery.getParamsValue();
subParamValues.addValues(getValues());
subQuery.build();
clear();
addValues(subParamValues.getValues());
}
private void clear(){
this.values.clear();
}
/*********
* List Or Map
* @return
*/
public Map getValues(){
// return ImmutableMap.copyOf(values);
return Collections.unmodifiableMap(values);
}
public Map asMap(){
return (Map) getValues();
}
/*public List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy