/*
 * $Id: IPAddressRangeSetFactory.java,v 1.2 2005/05/28 15:49:30 rampil Exp $
 * Copyright (c) 2005 LOGICAL-PARADOX.ORG
 */
package org.logical_paradox.common.net;

/**
 * IPAddressRangeSetFactory
 * プラットフォーム最適のIPアドレス範囲セットクラスを返すファクトリ
 * 下記のシステムプロパティを優先して生成するクラス名を決定する
 * "org.logical_paradox.common.net.IPAddressRangeFactoryClass"
 * 特に指定がない場合，IPv4のセットが作成される
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.2 $
 */
public final class IPAddressRangeSetFactory {
	/** IPアドレス範囲クラスのプロパティキー */
	public static final String IPADDRESS_RANGE_SET_FACTORY_CLS = "org.logical_paradox.common.net.IPAddressRangeFactoryClass";
	/** デフォルトのIPアドレス範囲クラス */
	public static final String DEFAULT_RANGESET_CLASS = "org.logical_paradox.common.net.IPv4AddressRangeSet";

	/**
	 * デフォルトコンストラクタ(protected)
	 * もっとも，クラス自体finalだが..
	 */
	protected IPAddressRangeSetFactory() {
	}

	/**
	 * プラットフォームに最適のIPアドレス範囲セットを返す
	 * @return 選択されたIPアドレス範囲クラス
	 */ 
	public static final IPAddressRangeSet getIPAddressRangeSet() throws ClassNotFoundException {
		String rangeSetClassName = System.getProperty(IPADDRESS_RANGE_SET_FACTORY_CLS);
		if(rangeSetClassName == null || rangeSetClassName.trim().length() == 0) {
			rangeSetClassName = DEFAULT_RANGESET_CLASS;
		}

		try {
			return (IPAddressRangeSet)Class.forName(rangeSetClassName).newInstance();
		} catch(Exception e) {
			throw new ClassNotFoundException(e.getMessage());
		}
	}
}

// end of IPAddressRangeSetFactory.java
