001 /**
002 * Copyright 2005-2012 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.rice.kcb.bo;
017
018 import java.sql.Timestamp;
019
020 import javax.persistence.Basic;
021 import javax.persistence.Column;
022 import javax.persistence.Entity;
023 import javax.persistence.FetchType;
024 import javax.persistence.Id;
025 import javax.persistence.Lob;
026 import javax.persistence.Table;
027 import javax.persistence.Version;
028
029 import org.apache.commons.lang.StringUtils;
030 import org.apache.commons.lang.builder.ToStringBuilder;
031
032 /**
033 * This class represents an abstract message that has been sent to a single user
034 * recipient and may result in several {@link MessageDelivery}s.
035 * @author Kuali Rice Team (rice.collab@kuali.org)
036 */
037 // this class could possibly just extend the MessageDTO
038 @Entity
039 @Table(name="KREN_MSG_T")
040 public class Message {
041 /**
042 * Field names
043 */
044 public static final String ID_FIELD = "id";
045 public static final String ORIGINID_FIELD = "originId";
046
047 @Id
048 @Column(name="MSG_ID")
049 private Long id;
050 /**
051 * The origin id is an id provided by the originating system that creates the message
052 */
053 @Column(name="ORGN_ID", nullable=false)
054 private String originId;
055 @Column(name="DELIV_TYP", nullable=false)
056 private String deliveryType;
057 @Column(name="CHNL", nullable=false)
058 private String channel;
059 @Column(name="PRODCR", nullable=true)
060 private String producer;
061 @Column(name="CRTE_DTTM", nullable=false)
062 private Timestamp creationDateTime = new Timestamp(System.currentTimeMillis());
063 @Column(name="TTL", nullable=true)
064 private String title;
065 @Lob
066 @Basic(fetch=FetchType.LAZY)
067 @Column(name="CNTNT", nullable=false)
068 private String content;
069 @Column(name="CNTNT_TYP", nullable=true)
070 private String contentType;
071 @Column(name="URL", nullable=true)
072 private String url;
073 @Column(name="RECIP_ID", nullable=false)
074 private String recipient;
075
076 /**
077 * Lock column for OJB optimistic locking
078 */
079 @Version
080 @Column(name="VER_NBR")
081 private Integer lockVerNbr;
082
083 /**
084 * Normal no-arg constructor
085 */
086 public Message() {}
087
088 /**
089 * Shallow-copy constructor
090 * @param m Message object to (shallow) copy
091 */
092 public Message(Message m) {
093 this.id = m.id;
094 this.channel = m.channel;
095 this.content = m.content;
096 this.contentType = m.contentType;
097 this.creationDateTime = m.creationDateTime;
098 this.deliveryType = m.deliveryType;
099 this.lockVerNbr = m.lockVerNbr;
100 this.producer = m.producer;
101 this.recipient = m.recipient;
102 this.title = m.title;
103 }
104
105 /**
106 * Gets the id attribute.
107 * @return Returns the id.
108 */
109 public Long getId() {
110 return id;
111 }
112
113 /**
114 * Sets the id attribute value.
115 * @param id The id to set.
116 */
117 public void setId(Long id) {
118 this.id = id;
119 }
120
121 /**
122 * Gets the origin id
123 * @return the origin id
124 */
125 public String getOriginId() {
126 return this.originId;
127 }
128
129 /**
130 * Sets the origin id
131 * @param originId the origin id
132 */
133 public void setOriginId(String originId) {
134 this.originId = originId;
135 }
136
137 /**
138 * Returns when this Notification entry was created
139 * @return when this Notification entry was created
140 */
141 public Timestamp getCreationDateTime() {
142 return creationDateTime;
143 }
144
145 /**
146 * Sets the creation date of this Notification entry
147 * @param created the creation date of this Notification entry
148 */
149 public void setCreationDateTime(Timestamp created) {
150 this.creationDateTime = created;
151 }
152
153 /**
154 * Return value of lock column for OJB optimistic locking
155 * @return value of lock column for OJB optimistic locking
156 */
157 public Integer getLockVerNbr() {
158 return lockVerNbr;
159 }
160
161 /**
162 * Set value of lock column for OJB optimistic locking
163 * @param lockVerNbr value of lock column for OJB optimistic locking
164 */
165 public void setLockVerNbr(Integer lockVerNbr) {
166 this.lockVerNbr = lockVerNbr;
167 }
168
169 /**
170 * Gets the recipient attribute.
171 * @return Returns the recipient.
172 */
173 public String getRecipient() {
174 return recipient;
175 }
176
177 /**
178 * Sets the recipient attribute value.
179 * @param recipients The recipient to set.
180 */
181 public void setRecipient(String recipient) {
182 this.recipient = recipient;
183 }
184
185 /**
186 * Gets the content attribute.
187 * @return Returns the content.
188 */
189 public String getContent() {
190 return content;
191 }
192
193 /**
194 * Sets the content attribute value.
195 * @param content The content to set.
196 */
197 public void setContent(String content) {
198 this.content = content;
199 }
200
201 /**
202 * Gets the contentType attribute.
203 * @return Returns the contentType.
204 */
205 public String getContentType() {
206 return contentType;
207 }
208
209 /**
210 * Sets the contentType attribute value.
211 * @param contentType The contentType to set.
212 */
213 public void setContentType(String contentType) {
214 this.contentType = contentType;
215 }
216
217 /**
218 * @return the url
219 */
220 public String getUrl() {
221 return this.url;
222 }
223
224 /**
225 * @param url the url
226 */
227 public void setUrl(String url) {
228 this.url = url;
229 }
230
231 /**
232 * Gets the deliveryType attribute.
233 * @return Returns the deliveryType.
234 */
235 public String getDeliveryType() {
236 return deliveryType;
237 }
238
239 /**
240 * Sets the deliveryType attribute value.
241 * @param deliveryType The deliveryType to set.
242 */
243 public void setDeliveryType(String deliveryType) {
244 this.deliveryType = deliveryType.toUpperCase();
245 }
246
247 /**
248 * Gets the title
249 * @return the title of this notification
250 */
251 public String getTitle() {
252 return title;
253 }
254
255 /**
256 * Sets the title
257 * @param title the title of this notification
258 */
259 public void setTitle(String title) {
260 this.title = title;
261 }
262
263 /**
264 * Gets the channel
265 * @return the channel
266 */
267 public String getChannel() {
268 return this.channel;
269 }
270
271 /**
272 * Sets the channel
273 * @param channel the channel
274 */
275 public void setChannel(String channel) {
276 this.channel = channel;
277 }
278
279 /**
280 * Gets the producer
281 * @return the producer
282 */
283 public String getProducer() {
284 return this.producer;
285 }
286
287 /**
288 * Sets the producer
289 * @param producer the producer
290 */
291 public void setProducer(String producer) {
292 this.producer = producer;
293 }
294
295 /**
296 * @see java.lang.Object#toString()
297 */
298 @Override
299 public String toString() {
300 return new ToStringBuilder(this)
301 .append("id", id)
302 .append("creationDateTime", creationDateTime)
303 .append("deliveryType", deliveryType)
304 .append("recipient", recipient)
305 .append("title", title)
306 .append("channel", channel)
307 .append("producer", producer)
308 .append("content", StringUtils.abbreviate(content, 100))
309 .append("contentType", contentType)
310 .append("lockVerNbr", lockVerNbr)
311 .toString();
312 }
313
314 }