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> fields = new ArrayList>(); private ControllerModel(){} public static ControllerModel createControllerModel(String packageInfo, String poPackageInfo, String serviceImplPackageInfo, String beanClassName, String mainPackageInfo, String moduleName, Vector 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 columnMap = new HashMap(); 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 = StringUtil.formatBeanNameFirstLow(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 = StringUtil.formatBeanNameFirstLow(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 = StringUtil.formatBeanNameFirstLow(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> getFields() { return fields; } }