//参考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());
}