/*
 * $Id: SimpleDocumentAccessor.java,v 1.5 2005/05/31 14:38:19 rampil Exp $
 * Copyright (c) 2004 LOGICAL-PARADOX.ORG
 */
package org.logical_paradox.koike.simple.document;

import java.io.File;

import org.logical_paradox.common.io.FileUtils;
import org.logical_paradox.koike.core.document.Document;
import org.logical_paradox.koike.core.document.DocumentAccessor;
import org.logical_paradox.koike.simple.SimpleSetConstant;

/**
 * ファイルから直接文書データを取得するタイプのシンプルなドキュメントアクセサ
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.5 $
 */
public class SimpleDocumentAccessor implements DocumentAccessor {
	/** コンテンツが格納されているディレクトリ */
	public static final String LOCAL_CONTENTS_DIR = "docs";
	/** ドキュメントリソースとの接続が既にきれているかどうか */
	private boolean closed = false;

	/**
	 * 指定キーに対応するドキュメントを取得する
	 * @param key キー
	 * @return 取得できたドキュメント(null: 該当なし)
	 * @throws Exception アクセス中に発生した例外
	 */
	public Document getDocument(String key) throws Exception {
		Document document = new Document();
		document.setDocument(FileUtils.readFully(SimpleSetConstant.LOCAL_CONTENTS_DIR + File.separator + key, SimpleSetConstant.CONTENTS_ENCODING));

		return document;
	}

	/**
	 * ドキュメントアクセサをクローズする
	 * 何もセッションを保持していないので，何もしないで処理をかえす
	 */
	public void close() throws Exception {
		closed = true;
	}
	/**
	 * 接続が既にクローズされているかどうかを返す
	 * @return true:クローズされている / false:クローズされていない
	 */
	public boolean isClosed() {
		return closed;
	}
}
