/////////////////////////////////////////////////////////////////
//Copyright (C) 2005 NTT CORPORATION.
//
//CSVダウンロード
//
//		変更履歴
//			2005.01.31  新規作成  OGA
//
//	機能
//
//	CSVダウンロード用Servlet
//
/////////////////////////////////////////////////////////////////
/*
 * 作成日: 2005/02/14
 *
 * TODO この生成されたファイルのテンプレートを変更するには次へジャンプ:
 * ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
 */
package jp.co.ntt.lms.xmf.xmo.LoLog;

import java.io.*;
import java.util.*;
import java.text.SimpleDateFormat;

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

/**
 * @author Administrator
 * 
 * TODO この生成された型コメントのテンプレートを変更するには次へジャンプ: ウィンドウ - 設定 - Java - コード・スタイル -
 * コード・テンプレート
 */
public class CsvOut extends HttpServlet {

	
	/* (非 Javadoc)
	 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO 自動生成されたメソッド・スタブ
		this.execute(request, response);
	}
	/* (非 Javadoc)
	 * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO 自動生成されたメソッド・スタブ
		this.execute(request, response);
	}
	
	private void execute(HttpServletRequest request, HttpServletResponse response) {

		PrintWriter printWriter = null;
		BufferedOutputStream bos = null;
		OutputStreamWriter osw = null;

		try {
			// CSVデータ取得
			String strOutData = request.getParameter("out_data");
			if (strOutData == null) {
				strOutData = "";
			}
			strOutData = new String(strOutData.getBytes("8859_1"),
					"Windows-31J");

			// ログインID取得
			String strLoginID = request.getParameter("loginId");
			if (strLoginID == null) {
				strLoginID = "";
			}
			String filename = makeFileName(strLoginID);

			// 初期化
			bos = new BufferedOutputStream(response.getOutputStream());
			osw = new OutputStreamWriter(bos);
			printWriter = new PrintWriter(osw);

			// 出力処理
			response.setContentType("text/csv; charset=Shift-JIS");
			response.setHeader("Content-Disposition", "attachment; filename="
					+ filename);
			printWriter.print(strOutData);
			printWriter.flush();

		} catch (Exception ex) {
			//例外処理
			ex.printStackTrace();
			return;
		} finally {
			if (printWriter != null) {
				printWriter.close();
			}
		}
	}

	/**
	 * CSVファイルのパスを作成します。
	 * 
	 * @param strFileData
	 *            CSV形式に編集されたデータ
	 * @return boolean CSVファイル作成の結果を返します。
	 * @exception IOException
	 *                CSVファイル作成に失敗した場合
	 */
	private String makeFileName(String strLoginID) {

		StringBuffer sbFileName = null;

		sbFileName = new StringBuffer();

		//日付作成
		Date currentDate = new Date();
		SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddhhmmss");
		String strDate = formatter.format(currentDate);

		//出力ファイル名を追加します
		sbFileName.append(strLoginID);
		sbFileName.append(strDate);
		sbFileName.append(".csv");

		return (sbFileName.toString());
	}

}