/** * ESUP-Portail Helpdesk - Copyright (c) 2004-2009 ESUP-Portail consortium. */ package org.esupportail.helpdesk.domain.beans; import java.io.Serializable; import java.sql.Timestamp; /** * A FAQ event, used to send reports. */ public final class FaqEvent implements Serializable { /** An update action. */ public static final String UPDATE = "UPDATE"; /** An update action. */ public static final String CREATE = "CREATE"; /** An update action. */ public static final String DELETE = "DELETE"; /** An update action. */ public static final String MOVE_TO = "MOVE_TO"; /** An update action. */ public static final String MOVE_FROM = "MOVE_FROM"; /** * The serialization id. */ private static final long serialVersionUID = -5138181415262950015L; /** * Primary key. */ private long id; /** * The action. */ private String action; /** * The author. */ private User author; /** * The label (for deletions). */ private String label; /** * The department. */ private Department department; /** * The from department. */ private Department fromDepartment; /** * The to department. */ private Department toDepartment; /** * The FAQ id. */ private long faqId; /** * The date. */ private Timestamp date; /** * Constructor. */ public FaqEvent() { super(); } /** * Constructor. * @param action * @param author * @param faq * @param department * @param fromDepartment * @param toDepartment */ protected FaqEvent( final String action, final User author, final Faq faq, final Department department, final Department fromDepartment, final Department toDepartment) { super(); this.action = action; this.author = author; this.label = faq.getLabel(); this.department = department; this.fromDepartment = fromDepartment; this.toDepartment = toDepartment; this.faqId = faq.getId(); this.date = new Timestamp(System.currentTimeMillis()); } /** * @param action * @param author * @param faq * @return a simple event. */ protected static FaqEvent simple( final String action, final User author, final Faq faq) { return new FaqEvent(action, author, faq, faq.getDepartment(), null, null); } /** * @param author * @param faq * @return an update event. */ public static FaqEvent update( final User author, final Faq faq) { return simple(UPDATE, author, faq); } /** * @param author * @param faq * @return a create event. */ public static FaqEvent create( final User author, final Faq faq) { return simple(CREATE, author, faq); } /** * @param author * @param faq * @return a delete event. */ public static FaqEvent delete( final User author, final Faq faq) { return simple(DELETE, author, faq); } /** * @param author * @param faq * @param fromDepartment * @return a moveTo event for a FAQ. */ public static FaqEvent moveTo( final User author, final Faq faq, final Department fromDepartment) { return new FaqEvent( MOVE_TO, author, faq, fromDepartment, null, faq.getDepartment()); } /** * @param author * @param faq * @param fromDepartment * @return a moveFrom event for a FAQ. */ public static FaqEvent moveFrom( final User author, final Faq faq, final Department fromDepartment) { return new FaqEvent( MOVE_FROM, author, faq, faq.getDepartment(), fromDepartment, null); } /** * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(final Object obj) { if (obj == null) { return false; } if (!(obj instanceof FaqEvent)) { return false; } return ((FaqEvent) obj).getId() == getId(); } /** * @see java.lang.Object#hashCode() */ @Override public int hashCode() { return (int) getId(); } /** * @return the id */ public long getId() { return id; } /** * @param id the id to set */ public void setId(final long id) { this.id = id; } /** * @return the action */ public String getAction() { return action; } /** * @param action the action to set */ public void setAction(final String action) { this.action = action; } /** * @return the author */ public User getAuthor() { return author; } /** * @param author the author to set */ public void setAuthor(final User author) { this.author = author; } /** * @return the label */ public String getLabel() { return label; } /** * @param label the label to set */ public void setLabel(final String label) { this.label = label; } /** * @return the department */ public Department getDepartment() { return department; } /** * @param department the department to set */ public void setDepartment(final Department department) { this.department = department; } /** * @return the fromDepartment */ public Department getFromDepartment() { return fromDepartment; } /** * @param fromDepartment the fromDepartment to set */ public void setFromDepartment(final Department fromDepartment) { this.fromDepartment = fromDepartment; } /** * @return the toDepartment */ public Department getToDepartment() { return toDepartment; } /** * @param toDepartment the toDepartment to set */ public void setToDepartment(final Department toDepartment) { this.toDepartment = toDepartment; } /** * @return the date */ public Timestamp getDate() { return date; } /** * @param date the date to set */ public void setDate(final Timestamp date) { this.date = date; } /** * @return the faqId */ public long getFaqId() { return faqId; } /** * @param faqId the faqId to set */ public void setFaqId(final long faqId) { this.faqId = faqId; } }