content: package com.sohu.cache.dao;
  
  import java.util.List;
  
  import org.apache.ibatis.annotations.Param;
  
  import com.sohu.cache.entity.AppClientExceptionStat;
  import com.sohu.cache.entity.ClientInstanceException;
  import com.sohu.cache.web.util.Page;
  
  /**
   * 客户端异常dao
   * 
   * @author leifu
   * @Date 2015年1月20日
   * @Time 上午11:50:06
   */
  public interface AppClientExceptionStatDao {
  
      /**
       * 保存上报异常
       * 
       * @param appClientExceptionStat
       */
      void save(AppClientExceptionStat appClientExceptionStat);
  
      /**
       * 获取客户端异常列表
       * 
       * @param appId 应用id
       * @param startTime 开始收集时间
       * @param endTime 结束收集时间
       * @param type 异常类型(ClientExceptionType)
       * @param clientIp 客户端ip
       * @return
       */
      List<AppClientExceptionStat> getAppExceptionList(@Param("appId") Long appId, @Param("startTime") long startTime,
              @Param("endTime") long endTime, @Param("type") int type, @Param("clientIp") String clientIp, @Param("page") Page page);
  
      /**
       * 获取客户端异常个数
       * 
       * @param appId 应用id
       * @param startTime 开始收集时间
       * @param endTime 结束收集时间
       * @param type 异常类型(ClientExceptionType)
       * @param clientIp 客户端ip
       * @return
       */
      int getAppExceptionCount(@Param("appId") Long appId, @Param("startTime") long startTime,
              @Param("endTime") long endTime, @Param("type") int type, @Param("clientIp") String clientIp);
  
      /**
       * 大于collectTime后实例的异常统计
       * @param ip
       * @param collectTime
       * @return
       */
      List<ClientInstanceException> getInstanceExceptionStat(@Param("ip") String ip, @Param("collectTime") long collectTime);
  
      /**
       * 批量保存
       * @param appClientExceptionStatList
       * @return
       */
      int batchSave(@Param("appClientExceptionStatList") List<AppClientExceptionStat> appClientExceptionStatList);
  
  }
  