/*
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2005 satoshi akabane(akabane@logical-paradox.org)
 * $Id: StubDocumentAccessor.java,v 1.1 2005/05/31 14:38:20 rampil Exp $
 */
package org.logical_paradox.koike.tools.isys;

import java.io.File;

import org.logical_paradox.common.io.FileUtils;
import org.logical_paradox.common.util.StringUtils;
import org.logical_paradox.koike.core.document.Document;
import org.logical_paradox.koike.core.document.DocumentAccessor;
import org.logical_paradox.koike.rss.document.ContentsAttribute;

/**
 * ドキュメントシステムに接続するインターフェース
 * スタブ用
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.1 $
 */
public class StubDocumentAccessor implements DocumentAccessor {
	/**
	 * ドキュメントを取得する
	 * @param key 文書を識別するキー(ノードID:文書番号)
	 */
	public Document getDocument(String key) throws Exception {
		String[] tokens = key.split(":");
		if(tokens == null || tokens.length != 2) {
			throw new IllegalArgumentException();
		}

		String filename =
			IndexGenerator.DEFAULT_DATA_PATH + File.separator +				// データパス
			tokens[0] + File.separator +									// ノードID
			StringUtils.formatColumns(Integer.parseInt(tokens[1])+1, 8) +	// ファイル名
			".txt";

		Document document = new Document();
		document.setDocument(FileUtils.readFully(filename, "UnicodeBig"));

		// RSS/1bの問い合わせを返す
		ContentsAttribute attribute = new ContentsAttribute();
		// サイト名は仮にノードIDとする
		attribute.setSitename(tokens[0]);
		// タイトルはドキュメント番号とする
		attribute.setTitle("TITLE" + tokens[1]);
		// URLは適当に生成
		attribute.setUrl("http://www.logical-paradox.org/" + tokens[0] + "/index.html");

		document.setAttribute(attribute);
		return document;
	}

	/**
	 * このスタブインターフェースを閉じる
	 * 常にUnsupportedOperationExceptionを返す(クローズはサポートされていないので)
	 * @throws Exception クローズ処理中に検出した例外
	 */
	public void close() throws Exception {
		throw new UnsupportedOperationException();
	}

	/**
	 * リモートのドキュメント管理システムとの接続がクローズされているかどうか返す
	 * このスタブでは常にfalseを返す
	 * @return true:接続中 / false:切断済み
	 */
	public boolean isClosed() {
		return false;
	}

}
