import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

/**
* 「オリジナルレシピ投稿掲示板プログラム」
*  レシピ投稿サーブレット
*/
public class ToukouServlet extends HttpServlet {

    //レシピを保存するファイルのパス
    private String recipeFilePath = "C:/Program Files/Apache Tomcat 4.0/webapps/okusama/text/recipes.txt";

    /**
    *  レシピの投稿を受け付ける
    *  (投稿には、HTTP POSTメソッドを用いる)
    */
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {


       	//***** レシピの投稿を受け付ける *****

       	//HTTPリクエストのパラメータから、レシピを構成する情報を取り出す
       	String contributor = request.getParameter("contributor"); //投稿者
       	String title = request.getParameter("title"); //タイトル
       	String content = request.getParameter("content"); //レシピ内容

       	//日本語コードを正しい形に変換する
       	contributor = convertToUnicode(contributor);
       	title = convertToUnicode(title);
       	content = convertToUnicode(content);

       	//投稿された時刻を取得する
       	String date = (new java.util.Date()).toString();


       	//***** 受け付けたレシピをファイルに書き込む *****

       	//改行を正しい形に変換する
       	//(改行コードが含まれると、書き込んだ際、1行に収まらなくなってしまう)
       	contributor = convertReturnCode(contributor);
       	title = convertReturnCode(title);
       	content = convertReturnCode(content);

       	//ファイルに書き込むためのストリームを作成する
       	BufferedWriter writer = new BufferedWriter( new FileWriter(recipeFilePath, true) ); //このtrueはファイルへの追記を意味する

       	//レシピを、contributor, title, date, content の順で書き込む
       	writer.write(contributor);
       	writer.newLine();
       	writer.write(title);
       	writer.newLine();
       	writer.write(date);
       	writer.newLine();
       	writer.write(content);
       	writer.newLine();

       	//ストリームを閉じる
       	writer.close();


       	//***** 感謝のメッセージのHTMLを出力する *****

       	//HTML出力の準備をする
       	response.setContentType("text/html; charset=Shift_JIS"); //文字化けを防止
       	PrintWriter out = response.getWriter(); //HTMLの出力に必要なPrintWriterを作成する

       	//感謝のHTMLを出力する
       	out.println("<html>");
       	out.println("<head><title>ありがとうございました。</title></head>");
       	out.println("<body bgcolor='#33CCFF' text='#000000'>");
       	out.println("<font size='big'><b>投稿ありがとうございました。");
       	out.println("<br>おいしい料理ができたら、また教えてくださいね☆</b></font><br><br>");
       	out.println("[ <a href=\"IchiranServlet\">レシピ一覧画面へ</a> ]");
       	out.println("</body>");
       	out.println("</html>");

       	//HTML出力のあとかたづけをする
       	out.close();
    }

    /**
    *  日本語コードを正しい形に変換する
    */
    private String convertToUnicode(String s) throws UnsupportedEncodingException {
       	return new String(s.getBytes("8859_1"),"JISAutoDetect");
    }

    /**
    *  改行を正しい形に変換する
    */
    private String convertReturnCode(String s) {
       	StringTokenizer tokenizer = new StringTokenizer(s, "\n\r");
       	String outStr = new String();

       	while( tokenizer.hasMoreTokens() ) {
       	    outStr += tokenizer.nextToken();
       	    if( tokenizer.hasMoreTokens() ){
              		outStr += "<BR>";
       	    }
       	}

       	return outStr;
    }
}
