package org.hibernate.auction.model; import java.io.Serializable; import java.util.Date; /** * An immutable class representing a comment from users. *

* Comments are always made in the context of an auction, that * is, a comment has a reference to an Item. The comment has * a free text field and a rating (using a typesafe enumeration). * * @see Item * @see User * @see Rating * @author Christian Bauer */ public class Comment implements Serializable, Comparable { private Long id = null; private int version; private Rating rating; private String text; private User fromUser; private Item item; private Date created = new Date(); /** * No-arg constructor for JavaBean tools. */ Comment() { } /** * Full constructor. * * @param rating * @param text * @param fromUser * @param item */ public Comment(Rating rating, String text, User fromUser, Item item) { this.rating = rating; this.text = text; this.fromUser = fromUser; this.item = item; } // ********************** Accessor Methods ********************** // public Long getId() { return id; } public Rating getRating() { return rating; } public String getText() { return text; } public void setText(String text) { this.text = text; } public User getFromUser() { return fromUser; } public Item getItem() { return item; } public Date getCreated() { return created; } // ********************** Common Methods ********************** // public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Comment)) return false; final Comment comment = (Comment) o; if (!created.equals(comment.created)) return false; if (!rating.equals(comment.rating)) return false; if (text != null ? !text.equals(comment.text) : comment.text != null) return false; return true; } public int hashCode() { int result; result = rating.hashCode(); result = 29 * result + (text != null ? text.hashCode() : 0); result = 29 * result + created.hashCode(); return result; } public String toString() { return "Comment ('" + getId() + "'), " + "Rating: '" + getRating() + "'"; } public int compareTo(Object o) { if (o instanceof Comment) { return this.getCreated().compareTo(((Comment) o).getCreated()); } return 0; } // ********************** Business Methods ********************** // }