baseAction

来源:互联网 发布:什么叫做数据库查询 编辑:程序博客网 时间:2024/05/18 04:00
package com.zxwl.base.action;import com.opensymphony.xwork2.ActionSupport;import com.zxwl.base.dao.DataPage;import com.zxwl.base.dao.Parameter;import com.zxwl.base.dao.QueryParameter;import com.zxwl.base.service.IBaseService;import com.zxwl.common.log.ILogger;import com.zxwl.common.log.LoggerManager;import com.zxwl.common.type.ZxwlTypeConverter;import com.zxwl.common.util.JsonUtil;import com.zxwl.common.util.SystemConfigManager;import com.zxwl.system.entity.Operator;import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.io.IOException;import java.io.PrintWriter;import java.lang.reflect.Method;import java.sql.BatchUpdateException;import java.util.List;import java.util.Map;import java.util.Set;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import org.apache.struts2.interceptor.RequestAware;import org.apache.struts2.interceptor.ServletRequestAware;import org.apache.struts2.interceptor.SessionAware;public abstract class BaseAction<E> extends ActionSupport  implements ServletRequestAware, RequestAware, SessionAware{  protected IBaseService<E> service;  protected ILogger logger;  private static final long serialVersionUID = 1L;  protected HttpServletRequest servletRequest;  protected Map<String, Object> request;  protected Map<String, Object> session;  public <E> BaseAction()  {    this.logger = LoggerManager.getLogger(this);  }  protected void writeStringToClient(String data)  {    HttpServletResponse response = ServletActionContext.getResponse();    try    {      response.setContentType("text/html;charset=UTF-8");      this.logger.debug("发送json:" + data);      response.getWriter().write(data);    }    catch (IOException e) {      this.logger.warn("数据发送失败!", e);    }  }  protected void sendDataToClient(Object data) {    sendJsonToClient(data);  }  protected void sendJsonToClient(Object data)  {    String jSon;  /*  String jSon;*/    if ((data instanceof List))    {      jSon = JsonUtil.listToJson((List)data);    }    else    { /*     String jSon;*/      if ((data instanceof Map))      {        jSon = JsonUtil.MaptoJson((Map)data);      }      else      {        jSon = JsonUtil.beanToJson(data);      }    }    writeStringToClient(jSon);  }  public void setSession(Map<String, Object> session)  {    this.session = session;  }  public void setRequest(Map<String, Object> request)  {    this.request = request;  }  public Operator getCurrentOperator()  {    return (Operator)this.session.get("loginUser");  }  public String getConfigValue(String configName)  {    Operator operator = getCurrentOperator();    if (operator != null)    {      return operator.getConfigValue(configName);    }    return null;  }  public String setConfigValue(String configName, String configValue)  {    Operator operator = getCurrentOperator();    if (operator != null)    {      return operator.setConfigValue(configName, configValue);    }    return null;  }  public Operator getOperator(String operatorId)  {    return SystemConfigManager.getOperator(operatorId);  }  public void addOperator(Operator operator) {    SystemConfigManager.addOperator(operator);  }  public void removeOperator(String operatorId)  {    SystemConfigManager.removeOperator(operatorId);  }  public String getHostIp()  {    return this.servletRequest.getRemoteAddr();  }  public String getSystemConfig(String configName)  {    return SystemConfigManager.getConfigValue(configName);  }  public void setServletRequest(HttpServletRequest servletRequest)  {    this.servletRequest = servletRequest;  }  public String getAttributeValue(String name)  {    HttpServletRequest httpRequest = ServletActionContext.getRequest();    if (httpRequest != null)    {      Object object = httpRequest.getAttribute(name);      if (object != null)      {        return object.toString();      }    }    this.logger.debug(name + "取值为null!");    return null;  }  public String getParameterValue(String paraName) {    HttpServletRequest httpRequest = ServletActionContext.getRequest();    if (httpRequest != null)    {      return httpRequest.getParameter(paraName);    }    return null;  }  public void putRequestValue(String key, Object value)  {    this.request.put(key, value);  }  public Object getRequestValue(String key)  {    return this.request.get(key);  }  public boolean IsUniqueException(Exception e)  {    Throwable t = e.getCause();    while (t.getCause() != null)    {      t = t.getCause();    }    if ((t instanceof BatchUpdateException))    {      BatchUpdateException updateException = (BatchUpdateException)t;      if (updateException.getSQLState().equals("23000"))      {        this.logger.warn("违反唯一约束!", e);        return true;      }    }    return false;  }  public void setErrorMessage(String errorMsg)  {    putRequestValue("errorMsg", errorMsg);  }  public String getClientIp()  {    HttpServletRequest httpRequest = ServletActionContext.getRequest();    return httpRequest.getRemoteAddr();  }  public boolean getPower(String actionName)  {    this.logger.warn("该函数已经作废,永远返回false!");    return false;  }  public void sendSuccessResult(String message)  {    String resultData = "{\"message\":\"" + message + "\",\"result\":\"success\"}";    writeStringToClient(resultData);  }  public void sendErrorResult(String message)  {    String resultData = "{\"message\":\"" + message + "\",\"result\":\"error\"}";    writeStringToClient(resultData);  }  public QueryParameter getParameter(QueryParameter queryParameter)  {    if ((queryParameter != null) && (queryParameter.size().intValue() > 0))    {      Set<String> names = queryParameter.findParameterNames();      for (String name : names)      {        Parameter parameter = queryParameter.findParameter(name);        if (parameter != null)        {          try          {            String value = getParameterValue(parameter.getName());            if ((value != null) && (!value.equals("")))            {              parameter.setValue(value);            }          }          catch (Exception e)          {            this.logger.warn("将" + getParameterValue(parameter.getName()) + "转换为" + name + "异常!", e);          }        }      }    }    this.logger.debug(queryParameter);    return queryParameter;  }  public E getEntity()  {    try {      ZxwlTypeConverter converter = ZxwlTypeConverter.getInstance();      E entity = this.service.createEntity();      PropertyDescriptor[] props = Introspector.getBeanInfo(entity.getClass(), Object.class).getPropertyDescriptors();      for (PropertyDescriptor prop : props)      {        String propName = prop.getName();        String value = getParameterValue(propName);        Method setter = prop.getWriteMethod();        Class classType = prop.getPropertyType();        if ((setter != null) && (value != null) && (!value.equals("")))        {          setter.invoke(entity, new Object[] { converter.convertValue(value, classType) });        }      }      this.logger.debug("实体填充成功!" + entity.toString());      return entity;    }    catch (Exception e)    {      this.logger.warn("填充实体异常!", e);    }return null;  }  public String query()  {    try    {      String id = getParameterValue("id");      Object entity = this.service.query(Integer.valueOf(Integer.parseInt(id)));      this.logger.debug("查询成功!");      sendDataToClient(entity);    }    catch (Exception e)    {      this.logger.error("查询异常!", e);      sendErrorResult("查询失败!");    }    return null;  }  public String delete()  {    try    {      String id = getParameterValue("id");      this.service.delete(Integer.valueOf(Integer.parseInt(id)));      this.logger.debug("删除成功!");      sendSuccessResult("删除成功!");    }    catch (Exception e)    {      this.logger.error("删除异常!", e);      sendErrorResult("删除失败!");    }    return null;  }  public String update()  {    try    {      E entity = getEntity();      if (this.service.isChanged(entity).booleanValue())      {        this.logger.debug("记录已经修改,不能保存");        sendErrorResult("记录已经修改,不允许保存");      }      else      {        this.service.update(entity);        this.logger.debug("更新成功!");        sendSuccessResult("更新成功!");      }    }    catch (Exception e)    {      this.logger.error("更新异常!", e);      sendErrorResult("更新失败!");    }    return null;  }  public String save()  {    try    {      E entity = getEntity();      this.service.save(entity);      this.logger.debug("保存成功");      sendSuccessResult("保存成功!");    }    catch (Exception e)    {      this.logger.error("保存异常!", e);      sendErrorResult("保存失败!");    }    return null;  }  public String queryList()  {    try    {      QueryParameter queryParameter = new QueryParameter();      fullQueryParameter(queryParameter);      queryParameter.addIntegerParameter("pageSize");      queryParameter.addIntegerParameter("pageNum");      queryParameter = getParameter(queryParameter);      DataPage dataPage = new DataPage();      dataPage.setQueryParameter(queryParameter);      this.service.queryForPage(dataPage);      this.logger.debug("查询成功");      sendDataToClient(dataPage);    }    catch (Exception e)    {      this.logger.error("查询异常!", e);      sendErrorResult("查询失败!");    }    return null;  }  public abstract void setService(IBaseService<E> paramIBaseService);  public abstract void fullQueryParameter(QueryParameter paramQueryParameter);}

0 0
原创粉丝点击