ControllerModel.java 6.16 KB
package com.taover.base.template.model.bussiness;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;

import com.taover.business.Utils;
import com.taover.db.TableColumn;
import com.taover.tools.StringUtil;

public class ControllerModel {
	private String mainPackageInfo;
	private String dbPackageInfo;	
	private String poClassName;
	private String poFieldName;
	private String serviceImplClassName;
	private String serviceImplFieldName;
	private String controllerClassName;
	private String moduleName;
	private String moduleNameFirstBig;
	private String controllerUri;
	private List<Map<String, String>> fields = new ArrayList<Map<String, String>>(); 
	
	private ControllerModel(){}	
	public static ControllerModel createControllerModel(String packageInfo, String poPackageInfo, String serviceImplPackageInfo, String beanClassName, String mainPackageInfo, String moduleName, Vector<TableColumn> tableColumns){
		ControllerModel model = new ControllerModel();
		model.moduleName = moduleName;
		model.mainPackageInfo = mainPackageInfo;
		model.dbPackageInfo = poPackageInfo;
		model.poClassName = beanClassName+"PO";
		model.controllerUri = beanClassName.toLowerCase();
		model.poFieldName = Utils.getFirstLetterLower(model.poClassName);
		model.serviceImplClassName = beanClassName + "Service";
		model.serviceImplFieldName = Utils.getFirstLetterLower(model.serviceImplClassName);
		model.controllerClassName = beanClassName + "Controller";
		model.moduleNameFirstBig = moduleName.toUpperCase().substring(0, 1)+moduleName.substring(1);
				
		for(TableColumn column : tableColumns){
			String fieldName = column.getColumnName();
			String varName = column.getColumBeanLName();
			String fieldType = column.getJAVADataType();
						
			Map<String, String> columnMap = new HashMap<String, String>();			
			String conditionCode = "";
			if("java.util.Date|java.sql.Time|java.sql.Timestamp".indexOf(fieldType) != -1){
				conditionCode = ControllerModel.parseConditionDate(varName, fieldName);
			}else if("Byte|Long|Integer|Short".indexOf(fieldType) != -1){
				conditionCode = ControllerModel.parseConditionNumber(varName, fieldName);
			}else{
				conditionCode = ControllerModel.parseConditionString(varName, fieldName);
			}
			columnMap.put("conditionCode", conditionCode);
			model.fields.add(columnMap);
		}
		
		return model;
	}
	
	/**
	 *
		String toList = request.getParameter("to");
		if(StringUtils.isNotEmpty(toList)){
			arrayCondition.add(new Object[]{"to_list", "like", "%"+toList+"%"});	
		}
	 * @param name
	 * @return
	 */
	public static String parseConditionString(String name, String fieldName){
		String lowName = name;
		String sqlCondition = "String "+lowName+" = request.getParameter(\""+lowName+"\");\n" 
		 +"\t\tif(StringUtils.isNotEmpty("+lowName+")){ \n"
			+"\t\t\tarrayCondition.add(new Object[]{\""+fieldName+"\", \"like\", \"%\"+"+lowName+"+\"%\"}); \n"	
		 +"\t\t}\n";
		return sqlCondition;
	}
	
	/**
	 *
		String toList = request.getParameter("to");
		if(StringUtils.isNotEmpty(toList) && StringUtils.isNumeric(toList)){
			arrayCondition.add(new Object[]{"to_list", "like", "%"+toList+"%"});	
		}
	 * @param name
	 * @return
	 */
	public static String parseConditionNumber(String name, String fieldName){
		String lowName = name;
		String sqlCondition = "String "+lowName+" = request.getParameter(\""+lowName+"\");\n" 
		 +"\t\tif(StringUtils.isNotEmpty("+lowName+") && StringUtils.isNumeric("+lowName+") ){ \n"
			+"\t\t\tarrayCondition.add(new Object[]{\""+fieldName+"\", \"=\", "+lowName+"}); \n"	
		 +"\t\t}\n";
		return sqlCondition;
	}
	
	/**
	 *
		String date = request.getParameter("date");
		if(StringUtils.isNotEmpty(date)){
			String[] dateGap = date.split("+-+");
			if(dateGap.length == 1){
				arrayCondition.add(new Object[]{" datediff(`date`, '"+dateGap[0]+"')>=0 ", null});
			}else if(dateGap.length == 2){
				arrayCondition.add(new Object[]{"( datediff(`date`, '"+dateGap[0]+"')>=0 and datediff(`date`, '"+dateGap[1]+"')<=0 )", null});
			}
		}
	 * @param name
	 * @return
	 */
	public static String parseConditionDate(String name, String fieldName){
		String lowName = name;
		String sqlCondition = "String "+lowName+" = request.getParameter(\""+lowName+"\");\n"
			+ "\t\tif(StringUtils.isNotEmpty("+lowName+")){\n"
			+ "\t\t\tString[] dateGap = "+lowName+".split(\"+-+\");\n"
			+ "\t\t\tif(dateGap.length == 1){\n"
				+"\t\t\t\tarrayCondition.add(new Object[]{\" datediff(`"+fieldName+"`, '\"+dateGap[0]+\"')>=0 \", null});\n"
			+ "\t\t\t}else if(dateGap.length == 2){ \n"
				+"\t\t\t\tarrayCondition.add(new Object[]{\"( datediff(`"+fieldName+"`, '\"+dateGap[0]+\"')>=0 and datediff(`"+fieldName+"`, '\"+dateGap[1]+\"')<=0 )\", null});\n"
			+"\t\t\t}\n"
		+"\t\t}\n";
		return sqlCondition;
	}
	
	public String getControllerUri() {
		return controllerUri;
	}
	public String getMainPackageInfo() {
		return mainPackageInfo;
	}
	public void setMainPackageInfo(String packageInfo) {
		this.mainPackageInfo = packageInfo;
	}
	public String getPoPackageInfo() {
		return dbPackageInfo;
	}
	public void setPoPackageInfo(String poPackageInfo) {
		this.dbPackageInfo = poPackageInfo;
	}
	public String getPoClassName() {
		return poClassName;
	}
	public void setPoClassName(String poClassName) {
		this.poClassName = poClassName;
	}
	public String getPoFieldName() {
		return poFieldName;
	}
	public void setPoFieldName(String poFieldName) {
		this.poFieldName = poFieldName;
	}
	public String getServiceImplClassName() {
		return serviceImplClassName;
	}
	public void setServiceImplClassName(String serviceImplClassName) {
		this.serviceImplClassName = serviceImplClassName;
	}
	public String getServiceImplFieldName() {
		return serviceImplFieldName;
	}
	public void setServiceImplFieldName(String serviceImplFieldName) {
		this.serviceImplFieldName = serviceImplFieldName;
	}
	public String getControllerClassName() {
		return controllerClassName;
	}
	public String getModuleName() {
		return moduleName;
	}
	public String getModuleNameFirstBig() {
		return moduleNameFirstBig;
	}
	public void setControllerClassName(String controllerClassName) {
		this.controllerClassName = controllerClassName;
	}
	public List<Map<String, String>> getFields() {
		return fields;
	}
}