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

import java.util.EventObject;

import org.logical_paradox.vsan.domain.Domain;

/**
 * ドメイン情報が更新された際に発生するイベントのイベントオブジェクト
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.2 $
 */
public class DomainUpdateEventObject extends EventObject {
	/** 変更前のドメイン情報 */
	private final Domain before;
	/** 変更後のドメイン情報 */
	private final Domain after;
	/** この更新情報を破棄するかどうか(true:破棄する / false:破棄しない) */
	private boolean consume = false;

	/**
	 * コンストラクタ
	 * @param source イベントソース
	 * @param b 変更前の値
	 * @param a 変更後の値
	 */
	public DomainUpdateEventObject(Object source, Domain b, Domain a) {
		super(source);

		before = b;
		after = a;
	}
	/**
	 * 変更前のドメイン情報を返す．
	 * @return 変更前のドメイン情報
	 */
	public Domain getDomainBefore() {
		return before;
	}
	/**
	 * 変更後のドメイン情報を返す．
	 * @return 変更後のドメイン情報
	 */
	public Domain getDomainAfter() {
		return after;
	}
	/**
	 * 今回の更新が破棄されるかどうかを返す．
	 * @return true:破棄される / false:破棄されない
	 */
	public boolean isConsumed() {
		return consume;
	}
	/**
	 * イベントオブジェクトを破棄する．
	 * 破棄した場合、今回の更新は無視される．
	 */
	public void consume() {
		consume = true;
	}
}
