package cn.jcenterhome.web.action.admin; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import cn.jcenterhome.util.Common; import cn.jcenterhome.web.action.BaseAction; public class NetworkAction extends BaseAction { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { if (!Common.checkPerm(request, response, "managenetwork")) { return cpMessage(request, mapping, "cp_no_authority_management_operation"); } try { if (submitCheck(request, "networksubmit")) { Map<String, Object> network = (Map<String, Object>) getParameters(request, "network"); if (network != null) { Pattern pattern = Pattern.compile("[^a-z]", Pattern.CASE_INSENSITIVE); Pattern separatorPattern = Pattern.compile(","); String[] arr = null; Map<Integer, Integer> narr = null; int tempV = 0; for (Entry<String, Object> entry : network.entrySet()) { String type = entry.getKey(); Map<String, Object> values = (Map<String, Object>) entry.getValue(); for (Entry<String, Object> subEntry : values.entrySet()) { String key = subEntry.getKey(); String value = ""; value = ((String) subEntry.getValue()).trim(); if (value.indexOf(",") >= 0) { narr = new HashMap<Integer, Integer>(); arr = separatorPattern.split(value); for (String v : arr) { v = v.trim(); tempV = Common.intval(v); if (tempV != 0) narr.put(tempV, tempV); } value = Common.implode(narr, ","); } else if (pattern.matcher(value).matches()) { value = String.valueOf(Common.intval(value)); } values.put(key, value); } network.put(type, values); } Common.setData("network", network, false); cacheService.network_cache(); } return cpMessage(request, mapping, "do_success", "admincp.jsp?ac=network"); } } catch (Exception e1) { return showMessage(request, response, e1.getMessage()); } Map<String, Map<String, Object>> globalNetWork = Common.getCacheDate(request, response, "/data/cache/cache_network.jsp", "globalNetWork"); Map<String, String> orders= new HashMap<String, String>(); String[] types = new String[] {"blog", "pic", "thread", "poll", "event","share"}; for (String type : types) { Map<String, Object> netWork = globalNetWork.get(type); if(netWork!=null){ orders.put("order_"+type+"_"+netWork.get("order"), " selected"); orders.put("sc_"+type+"_"+netWork.get("sc"), " selected"); } } request.setAttribute("orders", orders); return mapping.findForward("network"); } private Object getParameters(HttpServletRequest request, String prefix) { return getParameters(request, prefix, false); } private Object getParameters(HttpServletRequest request, String prefix, boolean isCheckBox) { Map<String, String[]> primalParameters = request.getParameterMap(); if (primalParameters == null) { return null; } Map<String, Object> result = new HashMap<String, Object>(); String key; String[] value; String prefix_ = null; if (prefix != null) { prefix_ = prefix + "["; } for (Entry<String, String[]> primalPE : primalParameters.entrySet()) { key = primalPE.getKey(); if (prefix == null || key.startsWith(prefix_)) { value = primalPE.getValue(); if (!getParametersSetResultMap(result, key, value, isCheckBox)) { return null; } } } if (prefix != null) { return result.get(prefix); } return result; } private String disposeParameter(String parameterName) { if (parameterName.endsWith("[]")) { return parameterName.substring(0, parameterName.length() - 2); } else { return parameterName; } } private boolean getParametersSetResultMap(Map<String, Object> result, String key, String[] value, boolean isCheckBox) { key = disposeParameter(key); return getParametersParseKey(new StringBuilder(key), result, value, isCheckBox); } private boolean getParametersParseKey(StringBuilder operatingKey, Map<String, Object> supMap, String[] value, boolean isCheckBox) { int tempI = operatingKey.indexOf("["); int tempII = operatingKey.indexOf("]"); if (tempI < 0) { putValue(supMap, operatingKey.toString(), value, isCheckBox); return true; } else if (tempII < tempI) { return false; } String subKey = operatingKey.substring(0, tempI); Map<String, Object> subMap = (Map<String, Object>) supMap.get(subKey); if (subMap == null) { subMap = new HashMap<String, Object>(); supMap.put(subKey, subMap); } operatingKey.deleteCharAt(tempII); operatingKey.delete(0, tempI + 1); return getParametersParseKey(operatingKey, subMap, value, isCheckBox); } private void putValue(Map<String, Object> targetMap, String key, String[] value, boolean isCheckBox) { if (isCheckBox || value == null || value.length == 0) { targetMap.put(key, value); } else { targetMap.put(key, value[0]); } } }