package com.chinada.dms.controller.common;

import com.sys.lib.exception.ServiceErrorException;
import com.sys.lib.utils.LoggerUtils;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;

@Controller
@RequestMapping("/templete")
public class TempleteController {

    /**
     * 模板下载
     * @param request
     * @param response
     * @param type
     */
    @RequestMapping("/downTemplete")
    public void download(HttpServletRequest request, HttpServletResponse response, Integer type)  {
        String fileName = null;

        switch (type) {
            // 参赛团队
            case 1:
                fileName = "参赛团队运动员导入模板.xlsx";
                break;
            case 2:
            //    赛事
                fileName = "赛事导入模板.xlsx";
                break;
            case 3:
            //   运动员
                fileName = "运动员导入模板.xls";
                break;
            default:
                throw new ServiceErrorException("参数有误");
        }
        ClassPathResource tempPathResource = new ClassPathResource("uploadTemplete" + File.separator + fileName);
        //String filePlace=bootdoConfig.getUploadPath()+filePath.replace("/files/","");
        OutputStream outputStream =  null;
        InputStream inputStream =  null;
        try {

//            File file = tempPathResource.getFile();
            String browser = "";
            browser = request.getHeader("User-Agent");
            if (-1 < browser.indexOf("MSIE 6.0") || -1 < browser.indexOf("MSIE 7.0")) {
                // IE6, IE7 浏览器
                response.addHeader("content-disposition", "attachment;filename="
                        + new String(fileName.getBytes(), "ISO8859-1"));
            } else if (-1 < browser.indexOf("MSIE 8.0")) {
                // IE8
                response.addHeader("content-disposition", "attachment;filename="
                        + URLEncoder.encode(fileName, "UTF-8"));
            } else if (-1 < browser.indexOf("MSIE 9.0")) {
                // IE9
                response.addHeader("content-disposition", "attachment;filename="
                        + URLEncoder.encode(fileName, "UTF-8"));
            } else if (-1 < browser.indexOf("Chrome")) {
                // 谷歌
                response.addHeader("content-disposition",
                        "attachment;filename*=UTF-8''" + URLEncoder.encode(fileName, "UTF-8"));
            } else if (-1 < browser.indexOf("Safari")) {
                // 苹果
                response.addHeader("content-disposition", "attachment;filename="
                        + new String(fileName.getBytes(), "ISO8859-1"));
            } else {
                // 火狐或者其他的浏览器
                response.addHeader("content-disposition",
                        "attachment;filename*=UTF-8''" + URLEncoder.encode(fileName, "UTF-8"));
            }

            outputStream = response.getOutputStream();
            inputStream = tempPathResource.getInputStream();
            byte[] buffer = new byte[2048];
            int i = -1;
            while ((i = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, i);
            }
            outputStream.flush();
            outputStream.close();
            inputStream.close();
        } catch (IOException ioe) {
            LoggerUtils.error(TempleteController.class,ioe.getMessage());
        }finally {
            if(outputStream != null){
                try {
                    outputStream.close();
                } catch (IOException e) {
                    LoggerUtils.error(TempleteController.class,e.getMessage());
                }
            }
            if(inputStream != null ){
                try {
                    inputStream.close();
                } catch (IOException e) {
                    LoggerUtils.error(TempleteController.class,e.getMessage());
                }
            }
        }

    }
}