// ========================================================================
// Copyright (C) zeroth Project Team. All rights reserved.
// GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
// http://www.gnu.org/licenses/agpl-3.0.txt
// ========================================================================
package zeroth.framework.standard.shared;
import static org.apache.commons.lang3.builder.ToStringStyle.*;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
/**
* データオブジェクト
* <p>
* データオブジェクトの基本的な機能を提供する。 参照オブジェクトと値オブジェクトは本クラスを継承すること。
* </p>
* @author nilcy
*/
public abstract class AbstractDataObject implements DataObject {
/** 識別番号 */
private static final long serialVersionUID = -4438164461402375117L;
/** コンストラクタ */
public AbstractDataObject() {
}
/**
* オブジェクトの文字列表現
* <p>
* オブジェクトをもとに短縮形式で生成する。一時フィールド(transient)も生成キーの対象とする。
* </p>
* @return オブジェクトの文字列表現
*/
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, SHORT_PREFIX_STYLE, true);
}
/**
* オブジェクトの同値検査
* <p>
* オブジェクトと比較対象オブジェクトが等しいか検査する。一時フィールド(transient)も検査の対象とする。
* </p>
* @param other 比較対象オブジェクト
* @return オブジェクトと比較対象オブジェクトが等しいとき真。等しくないとき偽。
*/
@Override
public boolean equals(final Object other) {
return EqualsBuilder.reflectionEquals(this, other, true);
}
/**
* オブジェクトのハッシュコード
* <p>
* オブジェクトをもとにハッシュコードを生成する。一時フィールド(transient)も生成キーの対象とする。
* </p>
*/
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this, true);
}
/** {@inheritDoc} */
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}