package com.interpress_project.modernshare.client.view.wizard;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import com.interpress_project.modernshare.AppKeys;
import com.interpress_project.modernshare.ipcommon.SystemBase;

public class NoticeFile {
	private SystemBase sb = SystemBase.getInstance();
	private String linesep = sb.getLineSeparator();
	private File file = null;
	private StringBuffer strbuf = new StringBuffer();

	/**
	 * NoticeFile
	 * @param path
	 * @param filter
	 * @param bROmode
	 */
	public NoticeFile(String path, String[] filter, boolean bROmode) {
		if (bROmode) {
			createROMessage(path, filter);
		}
		else {
			createRWMessage(path, filter);
		}

		path = path + "/" + AppKeys.NOTICEFILE;
		file = new File(path);
	}

	/**
	 * createRWMessage
	 * @param path
	 * @param filter
	 */
	private void createRWMessage(String path, String[] filter) {
		strbuf.append(path + "フォルダについて" + linesep);
		strbuf.append(linesep);

		strbuf.append("このフォルダはホットショットフォルダとして管理されています。フォルダ配下に置かれたファイルやフォルダは、HotShotによって" + "データセンタへ定期的にバックアップされます。"
		    + linesep);
		strbuf.append(linesep);

		strbuf.append("バックアップから除外されるファイル・ルールは以下の通りです。" + linesep);
		strbuf.append(linesep);

		for (int i = 0; i < filter.length; i++) {
			strbuf.append("ルール(" + i + "): " + filter[i] + linesep);
		}
		strbuf.append(linesep);

		strbuf.append("注意点" + linesep);
		strbuf.append("このフォルダ配下に置かれる.svnフォルダは、絶対に削除しないでください。万一削除してしまった場合にはHotShotによる自動監視が正しく機能しなくなります。" + linesep);
		strbuf.append("もしも誤って削除してしまった場合には、以下のように復旧を行ってください。" + linesep);
		strbuf.append(linesep);

		strbuf.append("1. HotShotからこのフォルダを切断します。" + linesep);
		strbuf.append("　切断してもこのフォルダのデータはそのまま保持されます。");
		strbuf.append(linesep);

		strbuf.append("2. このフォルダ名を任意の名前に変更します。" + linesep);
		strbuf.append("　名前を変更してバックアップしておきます。");
		strbuf.append(linesep);

		strbuf.append("3. HotShotを利用してデータセンタからチェックアウトを行います。" + linesep);
		strbuf.append("　このフォルダに関連づけられたタグ名を使用してチェックアウトを行います。なお、チェックアウトの際にローカルフォルダ名を、名前変更前の、元のフォルダ名にします。" + linesep);
		strbuf.append(linesep);
	}

	/**
	 * createROMessage
	 * @param path
	 * @param filter
	 */
	private void createROMessage(String path, String[] filter) {
		strbuf.append(path + "フォルダについて" + linesep);
		strbuf.append(linesep);

		strbuf.append("このフォルダはホットショット読み取り専用共有フォルダとして管理されています。フォルダ配下に置かれたファイルやフォルダは、HotShotによって"
		    + "データセンタに格納されたデータと定期的に同期されます。" + "その際ローカルフォルダに追加されたデータは削除されてしまいますのでご注意ください。" + linesep);
		strbuf.append(linesep);

		strbuf.append("バックアップから除外されるファイル・ルールは以下の通りです。" + linesep);
		strbuf.append(linesep);

		for (int i = 0; i < filter.length; i++) {
			strbuf.append("ルール(" + i + "): " + filter[i] + linesep);
		}
		strbuf.append(linesep);

		strbuf.append("注意点" + linesep);
		strbuf.append("このフォルダ配下に置かれる.svnフォルダは、絶対に削除しないでください。万一削除してしまった場合にはHotShotによる自動監視が正しく機能しなくなります。" + linesep);
		strbuf.append("もしも誤って削除してしまった場合には、以下のように復旧を行ってください。" + linesep);
		strbuf.append(linesep);

		strbuf.append("1. HotShotからこのフォルダを切断します。" + linesep);
		strbuf.append("　切断してもこのフォルダのデータはそのまま保持されます。");
		strbuf.append(linesep);

		strbuf.append("2. このフォルダ名を、任意の名前に変更します。" + linesep);
		strbuf.append("　名前を変更してバックアップしておきます。");
		strbuf.append(linesep);

		strbuf.append("3. HotShotを利用してデータセンタから読み込みモードとしてチェックアウトを行います。" + linesep);
		strbuf.append("　このフォルダに関連づけられたタグ名を使用してチェックアウトを行います。なお、チェックアウトの際にローカルフォルダ名を、名前変更前の、元のフォルダ名にします。" + linesep);
		strbuf.append(linesep);
	}

	/**
	 * create
	 */
	void create() {
		if (file.exists()) {
			file.delete();
		}
		FileWriter out = null;
		try {
			out = new FileWriter(file);
			out.write(strbuf.toString());
			out.flush();
			out.close();
		}
		catch (IOException ex) {
			sb.getLogger().error("Noticeファイルの書き出しに失敗しました。:" + file.getAbsolutePath(), ex);
			return;
		}
		return;
	}
}
