package com.csc.library.command.util;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Vector;

import com.csc.library.request.CommonModeParameter;
import com.csc.library.session.DbRecord;
import com.csc.library.utilities.MyLog;

public class CommonParameterUtil {
	
	public static void setKeyRecord(DbRecord rec , CommonModeParameter param) throws Exception {
		Map<String,String> m = param.getKey(); 
		CommonParameterUtil.setKey(rec, m);
	}
	
	public static void setJsonKeyRecord(DbRecord rec , CommonModeParameter param) throws Exception {
		Map<String,String> m = param.getJsonKey(); 
		CommonParameterUtil.setKey(rec, m);
	}
	
	private static void setKey(DbRecord rec , Map<String,String> keyMap) throws Exception {
		Iterator it = keyMap.keySet().iterator();
		while(it.hasNext()){
			String key = it.next().toString();
			if(rec.getAllKey().contains(key.toLowerCase())){
				rec.set(key, keyMap.get(key));
			}
		}
	}
	
	public static void setJsonRecord(DbRecord rec , CommonModeParameter param) throws Exception {
		Map<String,String> mapJson = param.getJson(); 
		Iterator it = mapJson.keySet().iterator();
		while(it.hasNext()){
			String key = it.next().toString();
			rec.set(key, mapJson.get(key));
		}
	}
	
	public static String getFilterKeyRecord(DbRecord rec , CommonModeParameter param){
		StringBuilder filter = new StringBuilder("1=1");
		try{
			Vector allKey = rec.getAllKey();
			for(int i = 0; i < allKey.size(); i++){
				String key = allKey.get(i).toString();
				if(param.getJson().containsKey(key)){
					filter.append(" and ").append(key).append("='").append(param.getJson().get(key)).append("'");
				}
			}
		}catch(Exception e){
			MyLog.error(rec.getUProfile(),e);
		}
		return filter.toString();
	}
}