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