Package com.sogou.qadev.service.cynthia.controller

Source Code of com.sogou.qadev.service.cynthia.controller.StatisticController

package com.sogou.qadev.service.cynthia.controller;


import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONArray;
import com.sogou.qadev.service.cynthia.bean.Timer;
import com.sogou.qadev.service.cynthia.bean.TimerAction;
import com.sogou.qadev.service.cynthia.factory.DataAccessFactory;
import com.sogou.qadev.service.cynthia.service.DataAccessSession.ErrorCode;
import com.sogou.qadev.service.cynthia.service.StatisticerManager;
import com.sogou.qadev.service.cynthia.util.CommonUtil;
import com.sogou.qadev.service.cynthia.util.CynthiaUtil;
import com.sogou.qadev.service.login.bean.Key;

import edu.emory.mathcs.backport.java.util.Arrays;

/**
* @description:statistic processor
* @author:liming
* @mail:liming@sogou-inc.com
* @date:2014-5-5 下午8:39:30
* @version:v1.0
*/
@Controller
@RequestMapping("/statistic")
public class StatisticController extends BaseController{

  /**
   * @description:update a statistic
   * @date:2014-5-5 下午8:39:43
   * @version:v1.0
   * @param request
   * @param response
   * @param session
   * @return
   * @throws Exception
   */
  @RequestMapping("/update.do")
  @ResponseBody
  public String update(HttpServletRequest request, HttpServletResponse response ,HttpSession session) throws Exception {
   

    Key key = (Key)session.getAttribute("key");
    String statId = request.getParameter("statId");
    String statName = request.getParameter("statName");
    String params = request.getParameter("params");
    params = CynthiaUtil.getXMLStr(params);
    String isSendMail = request.getParameter("isSendMail");
    String[] month = request.getParameterValues("month[]");
    String[] date = request.getParameterValues("date[]");
    String[] week = request.getParameterValues("week[]");
    String hour = request.getParameter("hour[]");
    String minute = request.getParameter("minute[]");
    String recievers = request.getParameter("recievers");

    params = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" + params;
    TimerAction timerAction = null;
    Timer timer = null;
    if (statId == null || statId.equals("")) {
      //新创建
      timerAction = das.createTimerAction();
      timerAction.setClassName("com.sogou.qadev.service.cynthia.service.StatisticerManager");
      timerAction.setMethod("execute");
      timerAction.setName(statName);
      timerAction.setCreateUser(key.getUsername());
      timerAction.setParam(params);
      if (isSendMail != null && isSendMail.equals("true") && recievers != null && !recievers.equals("")) {
        timer = das.createTimer(key.getUsername());
        timer.setActionId(timerAction.getId());
        timer.setActionParam(timerAction.getParam());
        timer.setName(timerAction.getName());
        timer.setRetry(true);
        timer.setRetryAccount(5);
        timer.setRetryDelay(50000);
        timer.setSendNull(true);
        timer.setStart(true);
        timer.setMonth(CommonUtil.arrayToStr(month));
        timer.setWeek(CommonUtil.arrayToStr(week));
        timer.setDay(CommonUtil.arrayToStr(date));
        timer.setHour(hour);
        timer.setMinute(minute);
        das.addTimer(timer);
      }

      return String.valueOf(das.addTimerAction(timerAction).equals(ErrorCode.success));
    }else {
      timerAction = das.queryTimerAction(DataAccessFactory.getInstance().createUUID(statId));
      //更新统计
      timerAction.setName(statName);
      timerAction.setParam(params);

      Timer[] timerArray = das.queryTimersByActionId(timerAction.getId());

      if (timerArray.length > 0) {
        //己存在定时器更新定时器
        for(int i = 0; i < timerArray.length; i++){
          if(timerArray[i].getActionId().toString().equals(timerAction.getId().toString())){
            timer = timerArray[i];
            timer.setActionParam(timerAction.getParam());
            timer.setName(timerAction.getName());

            if (isSendMail != null && isSendMail.equals("false")) {
              //时间为空则直接删除timer
              das.removeTimer(timer.getId());
            }else {
              //否则更新timer时间
              timer.setMonth(CommonUtil.arrayToStr(month));
              timer.setWeek(CommonUtil.arrayToStr(week));
              timer.setDay(CommonUtil.arrayToStr(date));
              timer.setHour(hour);
              timer.setMinute(minute);
              das.modifyTimer(timer);
            }
            break;
          }
        }
      }else {
        //不存在,创建定时器
        if (isSendMail != null && isSendMail.equals("true") && recievers != null && !recievers.equals("")) {
          timer = das.createTimer(key.getUsername());
          timer.setActionId(timerAction.getId());
          timer.setActionParam(timerAction.getParam());
          timer.setName(timerAction.getName());
          timer.setRetry(true);
          timer.setRetryAccount(5);
          timer.setRetryDelay(50000);
          timer.setSendNull(true);
          timer.setStart(true);
          timer.setMonth(CommonUtil.arrayToStr(month));
          timer.setWeek(CommonUtil.arrayToStr(week));
          timer.setDay(CommonUtil.arrayToStr(date));
          timer.setHour(hour);
          timer.setMinute(minute);
          das.addTimer(timer);
        }

      }

      return String.valueOf(das.modifyTimerAction(timerAction).equals(ErrorCode.success));
    }
  }
 
  /**
   * @description:query all statistics of user
   * @date:2014-5-5 下午8:39:58
   * @version:v1.0
   * @param request
   * @param response
   * @param session
   * @return
   * @throws Exception
   */
  @RequestMapping("/queryAllStatistics.do")
  @ResponseBody
  public String queryAllStatistics(HttpServletRequest request, HttpServletResponse response ,HttpSession session) throws Exception {
    String userName = ((Key)session.getAttribute("key")).getUsername();
    List<TimerAction> allTimerActions = new ArrayList<TimerAction>();
    allTimerActions.addAll(Arrays.asList(das.queryStatisticByUser(userName)));
    return JSONArray.toJSONString(allTimerActions);
  }
 
  /**
   * @description:delete statistic of user
   * @date:2014-5-5 下午8:40:12
   * @version:v1.0
   * @param request
   * @param response
   * @param session
   * @return
   * @throws Exception
   */
  @RequestMapping("/deleteStatistic.do")
  @ResponseBody
  public String deleteStatistic(HttpServletRequest request, HttpServletResponse response ,HttpSession session) throws Exception {
    String statId = request.getParameter("statId");
    return String.valueOf(das.removeTimerAction(DataAccessFactory.getInstance().createUUID(statId)).equals(ErrorCode.success));
  }
 
  /**
   * @description:get statistic info
   * @date:2014-5-5 下午8:40:28
   * @version:v1.0
   * @param request
   * @param response
   * @param session
   * @return
   * @throws Exception
   */
  @RequestMapping("/getStatisticInfo.do")
  @ResponseBody
  public String getStatisticInfo(HttpServletRequest request, HttpServletResponse response ,HttpSession session) throws Exception {
    Key key = (Key)session.getAttribute("key");
    String statisticId = request.getParameter("statisticId");
    return JSONArray.toJSONString(StatisticerManager.
        getStatisticResultById(DataAccessFactory.getInstance().createUUID(statisticId), key.getUsername()));
  }

}
TOP

Related Classes of com.sogou.qadev.service.cynthia.controller.StatisticController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.