/******************************************************************************* * Copyright (c) 2011 - 2012 Siamak Haschemi & Benjamin Haupt * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ package de.bht.fpa.mail.s000000.common.mail.model; import java.util.Date; import java.util.LinkedList; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.Id; import javax.persistence.Lob; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; /** * This class represents an e-mail. It can be used together with JAXB and JPA. * * <p> * <i>Note that this class can be used together with JAXB and JPA.</i> * </p> * * @author Siamak Haschemi * */ @Entity @XmlRootElement @XmlAccessorType(XmlAccessType.PROPERTY) public class Message extends BaseEntity { private static final long serialVersionUID = -7507357058099089398L; /** * Note that the ID for messages is not auto-generated in the database, * because messages have an unique ID assigned by the IMAP server. */ @Id private Long id; @Lob private String text; @Lob private String subject; @OneToOne(cascade = CascadeType.ALL) private Sender sender; @Enumerated(EnumType.STRING) private Importance importance; @Temporal(TemporalType.DATE) private Date received; @Temporal(TemporalType.DATE) private Date sent; @OneToMany(cascade = CascadeType.ALL) private List<Recipient> recipients = new LinkedList<Recipient>(); @OneToMany(cascade = CascadeType.ALL) private List<Attachment> attachment = new LinkedList<Attachment>(); @Column(name = "READ_") private Boolean read; @Override @XmlElement public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Sender getSender() { return sender; } public void setSender(Sender sender) { this.sender = sender; } public List<Recipient> getRecipients() { return recipients; } public void setRecipients(List<Recipient> recipient) { this.recipients = recipient; } @XmlJavaTypeAdapter(DateAdapter.class) public Date getReceived() { return received; } public void setReceived(Date received) { this.received = received; } @XmlJavaTypeAdapter(DateAdapter.class) public Date getSent() { return sent; } public void setSent(Date sent) { this.sent = sent; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public List<Attachment> getAttachment() { return attachment; } public void setAttachment(List<Attachment> attachment) { this.attachment = attachment; } public Importance getImportance() { return importance; } public void setImportance(Importance importance) { this.importance = importance; } public Boolean isRead() { return read; } public void setRead(Boolean read) { this.read = read; } public String getText() { return text; } public void setText(String text) { this.text = text; } @Override public String toString() { StringBuilder s = new StringBuilder(); s.append("[Message: "); s.append("id=").append(id).append(" "); s.append("sender=").append(sender).append(" "); s.append("received=").append(received).append(" "); s.append("subject=").append(subject).append(" "); s.append("read=").append(read).append(" "); s.append("importance=").append(importance).append(" "); s.append("attachment=("); for (Attachment a : attachment) { s.append(a).append(","); } s.append(")").append(" "); s.append("recipient=("); for (Recipient r : recipients) { s.append(r).append(","); } s.append(")"); s.append("text=").append(text); s.append("]").append(" "); return s.toString(); } public String toShortString() { StringBuilder s = new StringBuilder(); s.append("[Message: "); s.append("sender=").append(sender).append(" "); s.append("received=").append(received).append(" "); s.append("subject=").append(subject).append(" "); s.append("read=").append(read).append(" "); s.append("importance=").append(importance).append(" "); s.append("recipient=("); for (Recipient r : recipients) { s.append(r).append(","); } s.append(")"); s.append("#attachments=" + attachment.size()); s.append("]").append(" "); return s.toString(); } }