package jp.cssj.cti2.examples;

import java.io.File;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.URI;

import jp.cssj.cti2.CTIDriverManager;
import jp.cssj.cti2.CTISession;
import jp.cssj.cti2.helpers.CTISessionHelper;
import jp.cssj.resolver.helpers.MetaSourceImpl;

/**
 * クライアントから送ったデータを変換します。
 */
public class ClientResource {
	/** 接続先。 */
	private static final URI SERVER_URI = URI.create("ctip://127.0.0.1:8099/");

	/** ユーザー。 */
	private static final String USER = "user";

	/** パスワード。 */
	private static final String PASSWORD = "kappa";

	public static void main(String[] args) throws Exception {
		// 接続する
		CTISession session = CTIDriverManager.getSession(SERVER_URI, USER,
				PASSWORD);
		try {
			// test.pdfに結果を出力する
			File file = new File("test.pdf");
			CTISessionHelper.setResultFile(session, file);

			// リソースの送信
			{
				PrintWriter out = new PrintWriter(new OutputStreamWriter(
						session.resource(new MetaSourceImpl(URI
								.create("style.css"), "text/html")), "UTF-8"));
				try {
					// CSSを出力
					out.println("p {color: Red;}");
				} finally {
					out.close();
				}
			}

			// 出力先ストリームを取得
			{
				PrintWriter out = new PrintWriter(new OutputStreamWriter(
						session.transcode(new MetaSourceImpl(URI.create("."),
								"text/html")), "UTF-8"));
				try {
					// 文書を出力
					out.println("<html>");
					out.println("<head>");
					out.println("<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>");
					out.println("<link rel='StyleSheet' type='text/css' href='style.css'>");
					out.println("<title>サンプル</title>");
					out.println("</head>");
					out.println("<body>");
					out.println("<p>Hello World!</p>");
					out.println("</body>");
					out.println("</html>");
				} finally {
					out.close();
				}
			}
		} finally {
			// セッションを閉じる(忘れやすいので注意!)
			session.close();
		}
	}
}