package org.frameworkset.util; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import org.frameworkset.util.ClassUtil.PropertieDescription; import org.frameworkset.util.ClassUtil.Var; /** * <p>Title: ParameterUtil.java</p> * <p>Description: </p> * <p>bboss workgroup</p> * <p>Copyright (c) 2008</p> * @Date 2013-08-15 * @author biaoping.yin * @version 1.0 */ public class ParameterUtil { private static Logger log = Logger.getLogger(ParameterUtil.class); public static String getParameterName(PropertieDescription property,String defaultName,HttpServletRequest request ,int curposition) { List<Var> vars = property.getRequestParamNameToken(); if(property.getRequestParamName() != null) return property.getRequestParamName(); else if(vars != null && vars.size() > 0) { StringBuffer name = new StringBuffer(); for(Var var:vars) { if(!var.isIsvar()) name.append(var.getName()); else { String values[] = request.getParameterValues(var.getName()); if(values != null ) { if(curposition < values.length) name.append(values[curposition]); else name.append(values[values.length - 1]); } } } if(name.length() == 0) { name.append("转换参数名称表达式").append(property.getOrigineRequestParamName()).append("失败:"); for(Var var:vars) { if(var.isIsvar()) { name.append("没有名称为").append(var.getName()).append("request请求参数;"); } } log.warn(name.toString()); throw new java.lang.RuntimeException(name.toString()); } return name.toString(); } else { return defaultName; } } /** * 获取识别集合是否有记录的参数名称 * @param property * @param defaultName * @param request * @param curposition * @return * 2014年11月11日 */ public static String getAssertHasdataParameterName(PropertieDescription property,String defaultName,HttpServletRequest request ,int curposition) { List<Var> vars = property.getRequestParamNameToken(); if(property.getRequestParamName() != null) return property.getRequestParamName(); else if(vars != null && vars.size() > 0) { for(Var var:vars) { if(!var.isIsvar()) ; else { return var.getName(); } } return defaultName; } else { return defaultName; } } public static String getParameterName(MethodParameter parameter,HttpServletRequest request ,int curposition) { if(parameter.isIsrequestbody()) { return null; } if(parameter.getRequestParameterName() != null) return parameter.getRequestParameterName(); else { List<Var> vars = parameter.getRequestParamNameToken(); StringBuffer name = new StringBuffer(); for(Var var:vars) { if(!var.isIsvar()) name.append(var.getName()); else { String values[] = request.getParameterValues(var.getName()); if(values != null ) { if(curposition < values.length) name.append(values[curposition]); else name.append(values[values.length - 1]); } } } if(name.length() == 0) { name.append("转换参数名称表达式").append(parameter.getOrigineRequestParamName()).append("失败:"); for(Var var:vars) { if(var.isIsvar()) { name.append("没有名称为").append(var.getName()).append("request请求参数;"); } } log.warn(name.toString()); throw new java.lang.RuntimeException(name.toString()); } return name.toString(); } } public static List<Var> evalVars(int vstart,String name) { List<Var> requestParamNameToken = new ArrayList<Var>(); Var var = new Var(); if(vstart == 0) { var.setIsvar(true); int end = name.indexOf("}"); var.setName(name.substring(2,end)); requestParamNameToken.add(var); if(end == name.length() - 1) { } else { var = new Var(); var.setName(name.substring(end + 1)); requestParamNameToken.add(var); } } else { var.setName(name.substring(0,vstart)); requestParamNameToken.add(var); int end = name.indexOf("}"); var = new Var(); var.setIsvar(true); var.setName(name.substring(vstart + 2,end)); requestParamNameToken.add(var); if(end == name.length() - 1) { } else { var = new Var(); var.setName(name.substring(end + 1)); requestParamNameToken.add(var); } } return requestParamNameToken; } }