Event.java
package com.tradecloud.domain.event;
import com.tradecloud.common.base.PersistenceBase;
import javax.persistence.MappedSuperclass;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlElement;
import java.util.Date;
import java.util.List;
@MappedSuperclass
public class Event extends PersistenceBase {
/**
* UID.
*/
private static final long serialVersionUID = 1L;
/**
* User name of the logged in user that cause this event to be logged.
*/
@NotNull
@XmlElement
private String username;
/**
* Event create date/time stamp.
*/
@XmlElement
@Temporal(TemporalType.TIMESTAMP)
@NotNull
protected Date createDateTime;
/**
* Explanation or reason for the need for an event. Not required but some of
* the events require a reason to be given.
*/
@XmlElement
@Size(max = 500)
private String reason;
@XmlElement
@Size(max = 500)
private String instruction;
private Date eventDate;
public Event() {
createDateTime = new Date();
}
public Event(String username) {
this.username = username;
createDateTime = new Date();
}
public String getInstruction() {
return instruction;
}
public void setInstruction(String instruction) {
this.instruction = instruction;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getCreateDateTime() {
return createDateTime;
}
public void setCreateDateTime(Date createDateTime) {
this.createDateTime = createDateTime;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
public static <X extends Event> X getLastEvent(List<X> events) {
return events == null || events.isEmpty() ? null : events.get(events.size() - 1);
}
public static <X extends EnumTypedEvent> X getFirstEvent(List<X> events, EventType eventType) {
for (X event : events) {
if (event.getEventType().equals(eventType)) {
return event;
}
}
return null;
}
public Date getEventDate() {
return eventDate;
}
public void setEventDate(Date eventDate) {
this.eventDate = eventDate;
}
}