package com.baidu.dsp.common.interceptor;

import java.io.IOException;

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import com.baidu.dsp.common.constant.ErrorCode;
import com.baidu.dsp.common.vo.JsonObjectBase;
import com.baidu.dsp.common.vo.JsonObjectUtils;
import com.github.knightliao.apollo.utils.data.JsonUtils;

/**
 * @author liaoqiqi
 * @version 2013-11-26
 */
public class WebCommonInterceptor extends HandlerInterceptorAdapter {

    protected static final Logger LOG = LoggerFactory.getLogger(WebCommonInterceptor.class);

    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {
    }

    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
            throws Exception {
    }

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        return false;
    }

    /**
     * 自定义的全局错误
     *
     * @param request
     * @param response
     * @param message
     * @param errorCode
     *
     * @throws IOException
     */
    protected void returnJsonSystemError(HttpServletRequest request, HttpServletResponse response, String message,
                                         ErrorCode errorCode) throws IOException {

        JsonObjectBase jsonObjectBase = JsonObjectUtils.buildGlobalError(message, errorCode);

        response.setHeader("Cache-Control", "no-cache");
        response.setContentType("application/json;charset=UTF-8");
        response.setCharacterEncoding("UTF-8");

        response.getWriter().write(JsonUtils.toJson(jsonObjectBase));
    }
}