/*
 * IndexAccessorFactory
 * 転置インデックスへアクセスするためのインターフェースを生成するファクトリ
 * なぜabstract factoryパターンかというと，アクセサ以外のクラスも生成する必要があるかもしれないため
 */
package org.logical_paradox.fts;

public class IndexAccessorFactory {
	public static final int JDBM_INDEX_ACCESSOR = 1;
	public static final int BTREE_INDEX_ACCESSOR = 2;

	/**
	 * 指定されたタイプのアクセサを生成するファクトリメソッド
	 * 
	 * @param type タイプ
	 * @param idxFilename インデックスファイル名
	 * @return アクセサ
	 * @throws Exception アクセサの生成に失敗した
	 */
	public static IndexAccessor getIndexAccessor(int type, String idxFilename) throws Exception {
		switch(type) {
			case BTREE_INDEX_ACCESSOR:
				return new CommonBtreeIndexAccessor(idxFilename);
			case JDBM_INDEX_ACCESSOR:
				return new JDBM_IndexAccessor(idxFilename);
			default:
				throw new IllegalArgumentException();
		}
	}
	/**
	 * デフォルトで指定されているIndexAccessorを生成するタイプのファクトリメソッド
	 * 
	 * @param idxFilename インデックスファイル名
	 * @return アクセサ
	 * @throws Exception アクセサの生成に失敗した
	 */
	public static IndexAccessor getIndexAccessor(String idxFilename) throws Exception {
		return IndexAccessorFactory.getIndexAccessor(FullTextSearchProperty.DEFAULT_INDEX_ACCESSOR, idxFilename);
	}
}

// end of IndexAccessorFactory.java
