org.beanfuse.struts2.action.helper.ParamHelper.java Source code

Java tutorial

Introduction

Here is the source code for org.beanfuse.struts2.action.helper.ParamHelper.java

Source

//$Id:ParamHelper.java 2009-1-20 ?06:56:19 chaostone Exp $
/*
 * Copyright c 2005-2009.
 * 
 * Licensed under the GPL License, Version 2.0 (the "License")
 * http://www.gnu.org/licenses/gpl-2.0.html
 * 
 */
package org.beanfuse.struts2.action.helper;

import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;

import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.converters.BooleanConverter;
import org.apache.commons.beanutils.converters.DoubleConverter;
import org.apache.commons.beanutils.converters.FloatConverter;
import org.apache.commons.beanutils.converters.IntegerConverter;
import org.apache.commons.beanutils.converters.LongConverter;
import org.apache.commons.lang.StringUtils;
import org.beanfuse.bean.converters.DateConverter;
import org.beanfuse.bean.converters.SqlDateConverter;

import com.opensymphony.xwork2.ActionContext;

public class ParamHelper {

    static {
        registerConverter();
    }

    public static void registerConverter() {
        ConvertUtils.register(new SqlDateConverter(), java.sql.Date.class);
        ConvertUtils.register(new DateConverter(), java.util.Date.class);
        ConvertUtils.register(new BooleanConverter(null), Boolean.class);
        ConvertUtils.register(new IntegerConverter(null), Integer.class);
        ConvertUtils.register(new LongConverter(null), Long.class);
        ConvertUtils.register(new FloatConverter(null), Float.class);
        ConvertUtils.register(new DoubleConverter(null), Double.class);
    }

    public static void put(String key, Object value) {
        ActionContext.getContext().getContextMap().put(key, value);
    }

    /**
     * requestprefix.?
     * 
     * @param request
     * @param prefix
     * @param exclusiveAttrNames
     *            ?
     * @return
     */
    public static Map getParams(String prefix, String exclusiveAttrNames) {
        return getParamsMap(prefix, exclusiveAttrNames, true);
    }

    public static Map getParams(String prefix) {
        return getParamsMap(prefix, null, true);
    }

    public static String[] getValues(String attr) {
        return (String[]) ActionContext.getContext().getParameters().get(attr);
    }

    /**
     * get parameter named attr
     * 
     * @param attr
     * @return single value or multivalue joined with comma
     */
    public static String get(String attr) {
        String[] values = (String[]) ActionContext.getContext().getParameters().get(attr);
        if (null != values) {
            if (values.length == 1) {
                return values[0];
            } else {
                return StringUtils.join(values, ',');
            }
        } else {
            return null;
        }
    }

    public static Object get(Class clazz, String name) {
        String strValue = get(name);
        if (StringUtils.isNotBlank(strValue)) {
            return ConvertUtils.convert(strValue, clazz);
        } else {
            return null;
        }
    }

    public static Boolean getBoolean(String name) {
        return (Boolean) get(Boolean.class, name);
    }

    public static boolean getBool(String name) {
        String strValue = get(name);
        if (StringUtils.isEmpty(strValue))
            return false;
        else
            return ((Boolean) ConvertUtils.convert(strValue, Boolean.class)).booleanValue();
    }

    public static java.sql.Date getDate(String name) {
        return (java.sql.Date) get(java.sql.Date.class, name);
    }

    public static Date getTime(String name) {
        return (Date) get(Date.class, name);
    }

    public static Float getFloat(String name) {
        return (Float) get(Float.class, name);
    }

    public static Integer getInteger(String name) {
        return (Integer) get(Integer.class, name);
    }

    public static Long getLong(String name) {
        return (Long) get(Long.class, name);
    }

    public static Map getParamsMap(String prefix, String exclusiveAttrNames, boolean stripPrefix) {
        HashSet excludes = new HashSet();
        if (StringUtils.isNotEmpty(exclusiveAttrNames)) {
            String[] exclusiveAttrs = StringUtils.split(exclusiveAttrNames, ",");
            for (int i = 0; i < exclusiveAttrs.length; i++) {
                excludes.add(exclusiveAttrs[i]);
            }
        }
        Map params = new HashMap();
        Map parameters = ActionContext.getContext().getParameters();
        for (Iterator iterator = parameters.keySet().iterator(); iterator.hasNext();) {
            String attr = (String) iterator.next();
            if ((attr.indexOf(prefix + ".") == 0) && (!excludes.contains(attr))) {
                String[] val = (String[]) parameters.get(attr);
                if (null != val) {
                    if (1 == val.length) {
                        params.put((stripPrefix ? attr.substring(prefix.length() + 1) : attr), val[0].trim());
                    } else {
                        params.put((stripPrefix ? attr.substring(prefix.length() + 1) : attr), val);
                    }
                }
            }
        }
        return params;
    }
}