package com.siginfo.controller.base;

import java.io.PrintWriter;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/***********************************************************************
 * <pre>
 * Description
 *  - 
 * 
 * @author : LBCSOFT (jhlee01@lbcsoft.com)
 * @date   : 2013. 8. 16.
 * </pre>
 ***********************************************************************/
public class BaseController {

	/**
	 * xml로 파싱해주는 함수호출
	 * 
	 * @param res
	 * @param map
	 * @throws Exception
	 */
	public void callXmlToBean(HttpServletResponse res, List<Map<String,Object>> map)
			throws Exception {

		res.setCharacterEncoding("UTF-8");
		res.resetBuffer();
		res.setContentType("text/xml");

		BeanToXml btx = new BeanToXml();
		btx.setList(map);
		
		btx.writeListXml(res.getWriter());
	}
	
	/**
	 * xml로 파싱해주는 함수호출
	 * 
	 * @param res
	 * @param map
	 * @throws Exception
	 */
	public void callXmlToBean4Paging(HttpServletResponse res, List<Map<String, Object>> map)
			throws Exception {

		res.setCharacterEncoding("UTF-8");
		res.resetBuffer();
		res.setContentType("text/xml");

		BeanToXml btx = new BeanToXml();
		btx.setList(map);
		btx.writeListXml4Paging(res.getWriter(), true);
	}
	
	public void callString(HttpServletResponse res, String str) throws Exception {

		res.setCharacterEncoding("UTF-8");
		res.resetBuffer();
		res.setContentType("text/plain");
		
		PrintWriter out = res.getWriter();
		out.print(str);
	}

	/**
	 * <pre>
	 * Description
	 *  - 엑셀 파일로 리턴
	 * @param res
	 * @param map
	 * @throws Exception
	 * </pre>
	 */
	public void callXmlToExcelFile(HttpServletResponse res, HSSFWorkbook workBook, String fileName) throws Exception {
		
		// 엑셀 파일 다운로드를 위한 헤더 설정
		res.setHeader("Content-Disposition", "attachment;filename="+ fileName);
		res.setContentType("application/vnd.ms-excel");

		// 파일 전송 스트림 생성
		ServletOutputStream fileOut = res.getOutputStream();
		  
		// 생성한 엑셀 파일을 스트림에 넣고..
		workBook.write(fileOut);
		  
		// 파일 전송
		fileOut.flush();
	}

}
