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

import java.net.InetAddress;

/**
 * IPAddress
 * ネットマスクつきアドレスを管理するクラス
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.3 $
 */
public abstract class IPAddress {
	/** IPアドレス */
	protected final InetAddress ipAddress;
	/** ネットマスク */
	protected final InetAddress netmask;

	/**
	 * コンストラクタ
	 * @param ip IPアドレス
	 * @param nm ネットマスク
	 */
	public IPAddress(InetAddress ip, InetAddress nm) {
		ipAddress = ip;
		netmask = nm;
	}
	/**
	 * IPアドレスを返す
	 * @return IPアドレス
	 */
	public InetAddress getIPAddress() {
		return ipAddress;
	}
	/**
	 * ネットマスクを返す
	 * @return ネットマスク
	 */
	public InetAddress getNetmask() {
		return netmask;
	}
	/**
	 * このIPアドレスの文字列表現を返す
	 * @return 文字列表現
	 */
	public String toString() {
		return ipAddress.toString();
	}
	/**
	 * 比較する
	 * @param ip IPアドレス
	 * @return true:完全一致 / false:違う
	 */
	public boolean equals(IPAddress ip) {
		return ip.getIPAddress().equals(ipAddress) && ip.getNetmask().equals(netmask) ? true : false;
	}
	/**
	 * 指定されたIPアドレスが，当該ネットワークの範囲に含まれているかどうかを返す
	 * @param ip 調査対象IPアドレス
	 * @return true:ある / false:なし
	 */
	public abstract boolean includes(InetAddress ip);
	/**
	 * 指定されたIPアドレスが，当該ネットワークの範囲に含まれているかどうかを返す
	 * @param ip 調査対象IPアドレス
	 * @return true:ある / false:なし
	 */
	public abstract boolean includes(String ip);
}

// end of IPAddress.java
