ProductEvent.java
package com.tradecloud.domain.model.events;
import com.tradecloud.domain.event.EventType;
import org.hibernate.annotations.AccessType;
import javax.persistence.Entity;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlAttribute;
import java.util.Date;
/**
* Events for the Product Entity.
*/
@Entity
@Table(name = "productevent")
@AccessType("field")
@NamedQuery(query = "select ce from ProductEvent ce where ce.consumerTag = :consumerTag", name = "findAllProductEventsForUser")
public class ProductEvent extends Event {
private static final long serialVersionUID = 1L;
@XmlAttribute
private String reason;
public static enum ProductEventType implements EventType {
PRODUCT_CREATED,
PRODUCT_TEMPLATE_CREATED,
PRODUCT_UPDATED,
PRODUCT_TEMPLATE_UPDATED,
PRODUCT_DELETED,
PRODUCT_TEMPLATE_DELETED,
PRODUCT_TARIFFED,
PRODUCT_TEMPLATE_TARIFFED,
PRODUCT_UNTARIFFED,
PRODUCT_TEMPLATE_UNTARIFFED,
UNVERIFIED;
}
protected ProductEvent() {
super();
}
public ProductEvent(String reference, Date timestamp, String organisationalUnit, String eventType, String reason, String consumerTag) {
super(reference, timestamp, organisationalUnit, eventType, consumerTag);
this.reason = reason;
}
public ProductEvent(final Long id, final String reference, final Date timestamp, final String organisationalUnit,
final ProductEventType eventType,
final String reason, final String consumerTag) {
super(id, reference, timestamp, organisationalUnit, eventType.name(), consumerTag);
this.reason = reason;
}
public String getReason() {
return reason;
}
@Override
public Date getTimestamp() {
return super.getTimestamp();
}
@Override
public Class getInstanceClass() {
return ProductEvent.class;
}
}