package com.porterhead.persistence; import org.springframework.data.annotation.Id; import org.springframework.util.Assert; import java.io.Serializable; import java.util.Date; import java.util.UUID; /** * @version 1.0 * @author: Iain Porter * @since 30/04/2013 */ public abstract class BaseEntity implements Serializable { private int version; @Id private String id; private Date timeCreated; public BaseEntity() { this(UUID.randomUUID()); } public BaseEntity(UUID guid) { Assert.notNull(guid, "UUID is required"); id = guid.toString(); this.timeCreated = new Date(); } public BaseEntity(String guid) { Assert.notNull(guid, "UUID is required"); id = guid; this.timeCreated = new Date(); } public String getId() { return id; } public int hashCode() { return getId().hashCode(); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; BaseEntity that = (BaseEntity) o; if (!id.equals(that.id)) return false; return true; } public int getVersion() { return version; } public Date getTimeCreated() { return timeCreated; } }