package com.tenwa.workflow; import java.net.URLDecoder; import java.util.Enumeration; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringUtils; public class QueryUtil { public static Map getRequestParameterMapByAjax(HttpServletRequest request) { Map model = getSessionAttributesMap(request); try { model.putAll(getRequestParameterMapByAjax(request, null)); } catch (Exception e) { } return model; } public static Map getSessionAttributesMap(HttpServletRequest request){ Map model = new HashMap(); HttpSession session = request.getSession(false); Enumeration attributeNamesEnum = session.getAttributeNames(); while (attributeNamesEnum.hasMoreElements()) { Object keyObj = attributeNamesEnum.nextElement(); if (keyObj instanceof String) { String key = StringUtil.nullToString(keyObj); if (!key.isEmpty()) { Object valueObj = session.getAttribute(key); String value = StringUtil.nullToString(valueObj); if (!value.isEmpty()) { model.put(key, value); } } } } return model; } public static Map getRequestParameterMapByAjax(HttpServletRequest request, String fieldPrefixRemove) throws Exception { Map model = getSessionAttributesMap(request); model.putAll(getRequestParameterMapByAjax(request, fieldPrefixRemove, true)); return model; } public static Map getRequestParameterMapByAjax(HttpServletRequest request, String fieldPrefixRemove, boolean decodeURL) throws Exception { Map model = getSessionAttributesMap(request); model.putAll(getRequestParameterMapByAjax((Map) request.getParameterMap(), fieldPrefixRemove, decodeURL)); return model; } public static Map getRequestParameterMapByAjax(Map requestParameterMap, String fieldPrefixRemove, boolean decodeURL) { String prefixRemove = ""; if (fieldPrefixRemove != null && !"".equals(fieldPrefixRemove)) prefixRemove = fieldPrefixRemove; if (requestParameterMap == null) { return new HashMap(); } Map parameters = new HashMap(requestParameterMap.size()); for (Iterator keys = requestParameterMap.keySet().iterator(); keys.hasNext();) { String key = keys.next(); if (StringUtils.isBlank(key)) { continue; } String entityFieldName = key; if (!"".equals(prefixRemove) && entityFieldName.startsWith(prefixRemove)) { entityFieldName = key.substring(prefixRemove.length()); } String[] values; Object valuesObj = requestParameterMap.get(key); if (valuesObj instanceof String) { values = new String[] { (String) valuesObj }; } else { values = (String[]) valuesObj; } Object value = ((values == null) ? null : (values.length == 1 ? (Object) values[0] : ("[" + StringUtil.join(values, ",") + "]")/* (Object) values */)); String strValue = StringUtil.nullToString(value); if (strValue.isEmpty()) { parameters.put(entityFieldName, null); continue; } try { if (decodeURL) { /*if(!"xmlFileName".equals(entityFieldName)){ strValue=strValue.replaceAll("%", "%25"); }*/ parameters.put(entityFieldName, URLDecoder.decode(strValue ,"UTF-8") ); } else { parameters.put(entityFieldName, strValue); } } catch (Exception e) { try{ parameters.put(entityFieldName, URLDecoder.decode(strValue.replaceAll("%", "%25") ,"UTF-8")); }catch(Exception e1){ e1.printStackTrace(); } } } return parameters; } }