//$Id:BaseAction.java 2009-1-19 下午08:04:49 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;
import java.util.Collection;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.Validate;
import org.apache.struts2.ServletActionContext;
import org.beanfuse.struts2.action.helper.ParamHelper;
import org.beanfuse.struts2.action.helper.PopulateHelper;
import org.beanfuse.struts2.action.helper.QueryHelper;
import org.beanfuse.collection.page.Page;
import org.beanfuse.collection.page.PageLimit;
import org.beanfuse.entity.Model;
import org.beanfuse.model.Entity;
import org.beanfuse.persist.EntityService;
import org.beanfuse.query.EntityQuery;
import org.beanfuse.text.TextResource;
import org.beanfuse.utils.web.CookieUtils;
import org.beanfuse.utils.web.RequestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.opensymphony.xwork2.ActionContext;
public class BaseAction extends DispatchAction {
protected static Logger logger = LoggerFactory.getLogger(BaseAction.class);
protected EntityService entityService;
protected String getRemoteAddr() {
HttpServletRequest request = ServletActionContext.getRequest();
if (null == request)
return null;
return RequestUtils.getIpAddr(request);
}
protected String getURI() {
HttpServletRequest request = ServletActionContext.getRequest();
if (null == request)
return null;
String actionName = request.getServletPath();
if (actionName.startsWith("/")) {
actionName = actionName.substring(1);
}
return actionName;
}
protected TextResource getTextResource() {
return new ActionTextResource(this);
}
protected void put(String key, Object value) {
if (value instanceof Page) {
QueryHelper.addPage((Page) value);
}
ParamHelper.put(key, value);
}
/**
*
* @param request
* @param prefix
* @return
*/
protected Map getParams(String prefix) {
return ParamHelper.getParams(prefix, null);
}
protected Map getParams() {
return ActionContext.getContext().getParameters();
}
/**
* 返回request中以prefix.开头的参数
*
* @param request
* @param prefix
* @param exclusiveAttrNames
* 要排除的属性串
* @return
*/
protected Map getParams(String prefix, String exclusiveAttrNames) {
return ParamHelper.getParams(prefix, exclusiveAttrNames);
}
protected String[] getValues(String paramName) {
return ParamHelper.getValues(paramName);
}
protected String get(String paramName) {
return ParamHelper.get(paramName);
}
protected Object getAttribute(String name) {
return ActionContext.getContext().getContextMap().get(name);
}
protected Object get(Class clazz, String name) {
return ParamHelper.get(clazz, name);
}
protected Boolean getBoolean(String name) {
return ParamHelper.getBoolean(name);
}
protected boolean getBool(String name) {
return ParamHelper.getBool(name);
}
protected java.sql.Date getDate(String name) {
return ParamHelper.getDate(name);
}
protected Date getTime(String name) {
return ParamHelper.getTime(name);
}
protected Float getFloat(String name) {
return ParamHelper.getFloat(name);
}
protected Integer getInteger(String name) {
return ParamHelper.getInteger(name);
}
protected Long getLong(String name) {
return ParamHelper.getLong(name);
}
// populate------------------------------------------------------------------
/**
* 将request中的参数设置到clazz对应的bean。
*
* @param request
* @param clazz
* @param name
* @return
*/
protected Object populate(Class clazz, String shortName) {
return PopulateHelper.populate(clazz, shortName);
}
protected void populate(Object obj, String shortName) {
Map params = getParams(shortName);
Model.populate(params, obj);
}
protected Object populate(String entityName) {
return PopulateHelper.populate(entityName);
}
protected Object populate(Class clazz) {
return PopulateHelper.populate(clazz);
}
protected Object populate(String entityName, String shortName) {
return PopulateHelper.populate(entityName, shortName);
}
protected Object populate(Object obj, String entityName, String shortName) {
return PopulateHelper.populate(obj, entityName, shortName);
}
protected void populate(Map params, Entity entity, String entityName) {
Validate.notNull(entity, "Cannot populate to null.");
Model.getPopulator().populate(params, entity, entityName);
}
protected void populate(Map params, Entity entity) {
Validate.notNull(entity, "Cannot populate to null.");
Model.populate(params, entity);
}
// query------------------------------------------------------
protected int getPageNo() {
return QueryHelper.getPageNo();
}
protected int getPageSize() {
return QueryHelper.getPageSize();
}
/**
* 从request的参数或者cookie中(参数优先)取得分页信息
*
* @param request
* @return
*/
protected PageLimit getPageLimit() {
return QueryHelper.getPageLimit();
}
protected void populateConditions(EntityQuery entityQuery) {
QueryHelper.populateConditions(entityQuery);
}
protected void populateConditions(EntityQuery entityQuery, String exclusiveAttrNames) {
QueryHelper.populateConditions(entityQuery, exclusiveAttrNames);
}
// CURD----------------------------------------
protected void remove(Collection list) {
entityService.remove(list);
}
protected void remove(Object obj) {
entityService.remove(obj);
}
protected void saveOrUpdate(Collection list) {
entityService.saveOrUpdate(list);
}
protected void saveOrUpdate(Object obj) {
entityService.saveOrUpdate(obj);
}
protected Collection search(EntityQuery query) {
return entityService.search(query);
}
protected EntityService getEntityService() {
return entityService;
}
public void setEntityService(EntityService entityService) {
this.entityService = entityService;
}
protected String getCookieValue(String cookieName) {
return CookieUtils.getCookieValue(ServletActionContext.getRequest(), cookieName);
}
protected void setCookie(String name, String value, String path, int age) {
try {
CookieUtils.setCookie(ServletActionContext.getRequest(), ServletActionContext
.getResponse(), name, value, path, age);
} catch (Exception e) {
logger.error("setCookie error", e);
}
}
protected void setCookie(String name, String value, int age) {
try {
CookieUtils.setCookie(ServletActionContext.getRequest(), ServletActionContext
.getResponse(), name, value, age);
} catch (Exception e) {
logger.error("setCookie error", e);
}
}
protected void deleteCookie(String name) {
CookieUtils.deleteCookieByName(ServletActionContext.getRequest(), ServletActionContext
.getResponse(), name);
}
}