//參考base-4.0.2.jar
public class AuditObject extends HashMap<String, Object> implements TimeReferable
//參考api-1.0.0.jar
//該接口用於表示實現類是時間可參考的,也就是可以得到基準時間。
//之前的實時風控都是基於當前時間來進行的,引入該類但願將實時風控擴展到更深的領域。
public abstract interface TimeReferable extends Serializable
{
public abstract Date getReferenceTime();
public abstract void setReferenceTime(Date paramDate);
}
//兩個構造器,使用默認構造器時,自動生成uuid,uuid屬性與equals方法相關。
public AuditObject(String paramString1, String paramString2)
{
this();
setPrimaryKey(paramString1);
setBizCode(paramString2);
}
public AuditObject()
{
setUuid(UUID.randomUUID().toString());
}
//使用get方法從HashMap中獲取對應key的value並轉化成對應類型的值
//特別注意,這些方法的修飾符爲默認(default),因此僅供包內訪問使用,可在本身寫的ETL中加上這些方法。
String getString(String paramString)
{
Object localObject = get(paramString);
return localObject == null ? null : localObject.toString();
}
Long getLong(String paramString)
{
Object localObject = get(paramString);
return localObject == null ? null : Long.valueOf(Long.parseLong(localObject.toString()));
}
Date getDate(String paramString)
{
Object localObject = get(paramString);
return localObject == null ? null : new Date(Long.parseLong(localObject.toString()));
}
//重寫hashCode()和equals()方法
//特別要注意的是,此處的equals()方法經過比較兩個對象的uuid是否相同來判斷兩個對象是否相同
//默認構造器會自動生成uuid
public int hashCode()
{
return getUuid().hashCode();
}
public boolean equals(Object paramObject)
{
if (this == paramObject) {
return true;
}
if (paramObject == null) {
return false;
}
if (getClass() != paramObject.getClass()) {
return false;
}
AuditObject localAuditObject = (AuditObject)paramObject;
return getUuid().equals(localAuditObject.getUuid());
}