package fr.openwide.maven.artifact.notifier.core.business.audit.model;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
import org.bindgen.Bindable;
import org.hibernate.search.annotations.Analyzer;
import org.hibernate.search.annotations.DateBridge;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Fields;
import org.hibernate.search.annotations.Resolution;
import fr.openwide.core.commons.util.CloneUtils;
import fr.openwide.core.jpa.search.util.HibernateSearchAnalyzer;
import fr.openwide.maven.artifact.notifier.core.business.user.model.User;
@Embeddable
@Bindable
public class AuditSummary implements Serializable {
private static final long serialVersionUID = 2489494492556206554L;
public static final String CREATION_DATE_SORT = "creationDateSort";
public static final String LAST_EDIT_DATE_SORT = "lastEditDateSort";
@Column(nullable = false)
@DateBridge(resolution = Resolution.MILLISECOND)
@Fields({ @Field(analyzer = @Analyzer(definition = HibernateSearchAnalyzer.KEYWORD)),
@Field(name = CREATION_DATE_SORT, analyzer = @Analyzer(definition = HibernateSearchAnalyzer.TEXT_SORT)) })
private Date creationDate;
@ManyToOne(optional = true, fetch = FetchType.LAZY)
private User creationAuthor;
@Column(nullable = false)
@DateBridge(resolution = Resolution.MILLISECOND)
@Fields({ @Field(analyzer = @Analyzer(definition = HibernateSearchAnalyzer.KEYWORD)),
@Field(name = LAST_EDIT_DATE_SORT, analyzer = @Analyzer(definition = HibernateSearchAnalyzer.TEXT_SORT)) })
private Date lastEditDate;
@ManyToOne(optional = true, fetch = FetchType.LAZY)
private User lastEditAuthor;
public AuditSummary() {
super();
}
public Date getCreationDate() {
return CloneUtils.clone(creationDate);
}
public void setCreationDate(Date creationDate) {
this.creationDate = CloneUtils.clone(creationDate);
}
public User getCreationAuthor() {
return creationAuthor;
}
public void setCreationAuthor(User creationAuthor) {
this.creationAuthor = creationAuthor;
}
public Date getLastEditDate() {
return CloneUtils.clone(lastEditDate);
}
public void setLastEditDate(Date lastEditDate) {
this.lastEditDate = CloneUtils.clone(lastEditDate);
}
public User getLastEditAuthor() {
return lastEditAuthor;
}
public void setLastEditAuthor(User lastEditAuthor) {
this.lastEditAuthor = lastEditAuthor;
}
}