/*
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2005 satoshi akabane(akabane@logical-paradox.org)
 * $Id: LookupFactory.java,v 1.2 2005/09/07 13:38:06 rampil Exp $
 */
package org.logical_paradox.vsan.lookup;

/**
 * vsan用のサービス検索ロジックファクトリ
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.2 $
 */
public class LookupFactory {
	/** ルックアップタイプ - RMIによる実装 */
	public static final int TYPE_RMI = 1;
	/** ルックアップタイプ - hashmapによる実装 */

	public static final int TYPE_HASHMAP = 2;
	/** RMIによる接続を行うタイプのルックアップ */
	private static final Lookup rmiLookup = new RMILookup();
	/** HashMapをレジストリとするタイプのルックアップ */
	private static final Lookup hashmapLookup = new HashMapLookup();

	/** デフォルトのルックアップタイプ */
	private static int defaultLookupType = TYPE_RMI;

	/**
	 * デフォルトルックアップを設定する。
	 * @param type ルックアップの種類
	 */
	public static final void setDefaultLookupType(int type) {
		defaultLookupType = type;
	}
	/**
	 * サービス検索ロジックを取得する.
	 * @return サービス検索ロジック
	 */
	public static final Lookup getLookup() {
		return getLookup(defaultLookupType);
	}
	/**
	 * サービス検索ロジックを取得する.
	 * @param type タイプ
	 * @return ルックアップ
	 */
	public static final Lookup getLookup(int type) {
		switch(type) {
			// RMI
			case TYPE_RMI:
				return rmiLookup;
			// HashMap
			case TYPE_HASHMAP:
				return hashmapLookup;
			default:
				throw new IllegalArgumentException();
		}
	}
}
