org.beanfuse.struts2.route.Action.java Source code

Java tutorial

Introduction

Here is the source code for org.beanfuse.struts2.route.Action.java

Source

//$Id: Action.java,v 1.1 2007-2-12 ?10:25:36 chaostone Exp $
/*
 * Copyright c 2005-2009
 * Licensed under GNU  LESSER General Public License, Version 3.
 * http://www.gnu.org/licenses
 * 
 */
/********************************************************************************
 * @author chaostone
 * 
 * MODIFICATION DESCRIPTION
 * 
 * Name           Date          Description 
 * ============         ============        ============
 *chaostone      2007-2-12         Created
 *  
 ********************************************************************************/

package org.beanfuse.struts2.route;

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

import org.apache.commons.codec.net.URLCodec;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;

/**
 * web
 * 
 * @author chaostone
 * 
 */
public class Action {

    private String name;

    private String method;

    private Class clazz;

    private Map params;

    public Action() {
        super();
    }

    public Action(String method) {
        super();
        this.method = method;
    }

    public Action(Class clazz, String method) {
        this.clazz = clazz;
        this.method = method;
    }

    public Action(Object ctlObj, String method) {
        this.clazz = ctlObj.getClass();
        this.method = method;
    }

    public Action(Class clazz, String method, String params) {
        this.clazz = clazz;
        this.method = method;
        addParams(params);
    }

    public Action(String name, String method) {
        this.name = name;
        this.method = method;
    }

    public Action(String name, String method, String params) {
        this.name = name;
        this.method = method;
        addParams(params);
    }

    public String getNamespace() {
        String namespace = null;
        if (null != name) {
            namespace = name.substring(0, StringUtils.lastIndexOf(name, '/') + 1);
        }
        return namespace;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMethod() {
        return method;
    }

    public void setMethod(String method) {
        this.method = method;
    }

    public Map getParams() {
        return params;
    }

    public void setParams(Map params) {
        this.params = params;
    }

    public void addParam(String key, Object value) {
        if (null == params) {
            params = new HashMap();
        }
        params.put(key, value);
    }

    public void addParams(Map paramMap) {
        if (null == params) {
            params = new HashMap();
        }
        params.putAll(paramMap);
    }

    public void addParams(String paramStr) {
        if (null == params) {
            params = new HashMap();
        }
        if (StringUtils.isNotEmpty(paramStr)) {
            String[] paramPairs = StringUtils.split(paramStr, "&");
            for (int i = 0; i < paramPairs.length; i++) {
                String key = StringUtils.substringBefore(paramPairs[i], "=");
                String value = StringUtils.substringAfter(paramPairs[i], "=");
                if (StringUtils.isNotEmpty(key) && StringUtils.isNotEmpty(value)) {
                    params.put(key, value);
                }
            }
        }
    }

    /**
     * @see java.lang.Object#toString()
     */
    public String toString() {
        return new ToStringBuilder(this).append("params", this.params).append("controller", this.name)
                .append("method", this.method).toString();
    }

    public String getUri() {
        StringBuilder buf = new StringBuilder();
        if (null != getName()) {
            // all URI should start with /
            if (!getName().startsWith("/")) {
                buf.append("/");
            }
            buf.append(getName());
        }
        if (StringUtils.isNotEmpty(getMethod())) {
            buf.append("?method=").append(getMethod()).toString();
        }
        if (null != getParams() && getParams().size() > 0) {
            URLCodec codec = new URLCodec();
            for (Iterator iter = getParams().keySet().iterator(); iter.hasNext();) {
                String key = (String) iter.next();
                String value = (String) getParams().get(key);
                try {
                    buf.append("&").append(key).append("=").append(codec.encode(value, "UTF-8"));
                } catch (Exception e) {
                    throw new RuntimeException(e.getMessage());
                }
            }
        }
        return buf.toString();
    }

    public Class getClazz() {
        return clazz;
    }

    public void setClazz(Class clazz) {
        this.clazz = clazz;
    }

}