001/**
002 * Copyright 2005-2016 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 */
016package org.kuali.rice.ken.bo;
017
018import org.hibernate.annotations.GenericGenerator;
019import org.hibernate.annotations.Parameter;
020import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
021
022import javax.persistence.*;
023import java.sql.Timestamp;
024
025/**
026 * This class represents and instance of a NotificationMessageDelivery.  A Notification gets delivered to 
027 * recipients, possibly in various ways.  For each delivery type that a recipient gets sent to them, 
028 * they have an instance of this entity.
029 * @author Kuali Rice Team (rice.collab@kuali.org)
030 */
031@Entity
032@Table(name="KREN_NTFCTN_MSG_DELIV_T")
033public class NotificationMessageDelivery extends PersistableBusinessObjectBase implements Lockable {
034    @Id
035    @GeneratedValue(generator="KREN_NTFCTN_MSG_DELIV_S")
036        @GenericGenerator(name="KREN_NTFCTN_MSG_DELIV_S",strategy="org.hibernate.id.enhanced.SequenceStyleGenerator",parameters={
037                        @Parameter(name="sequence_name",value="KREN_NTFCTN_MSG_DELIV_S"),
038                        @Parameter(name="value_column",value="id")
039        })
040        @Column(name="NTFCTN_MSG_DELIV_ID")
041        private Long id;
042    @Column(name="STAT_CD", nullable=false)
043        private String messageDeliveryStatus;
044    @Column(name="RECIP_ID", nullable=false)
045        private String userRecipientId;
046    @Column(name="SYS_ID", nullable=true)
047        private String deliverySystemId;  // can hold an identifier from the endpoint delivery mechanism system (i.e. workflow id, SMS id, etc)
048        @Column(name="LOCKD_DTTM", nullable=true)
049        private Timestamp lockedDateValue;
050
051    /**
052     * Lock column for OJB optimistic locking
053     */
054//    @Version
055//      @Column(name="VER_NBR")
056//      private Integer lockVerNbr;
057    
058    @OneToOne(fetch=FetchType.EAGER, cascade={CascadeType.REFRESH, CascadeType.DETACH})
059        @JoinColumn(name="NTFCTN_ID")
060        private NotificationBo notification;
061
062    /**
063     * Constructs a NotificationMessageDelivery instance.
064     */
065    public NotificationMessageDelivery() {
066    }
067    
068    /**
069     * Gets the id attribute. 
070     * @return Returns the id.
071     */
072    public Long getId() {
073        return id;
074    }
075
076    /**
077     * Sets the id attribute value.
078     * @param id The id to set.
079     */
080    public void setId(Long id) {
081        this.id = id;
082    }
083
084
085    /**
086     * Return value of lock column for OJB optimistic locking
087     * @return value of lock column for OJB optimistic locking
088     */
089    //public Integer getLockVerNbr() {
090    //    return lockVerNbr;
091        //return Integer.valueOf(super.getVersionNumber().intValue());
092    //}
093
094    /**
095     * Set value of lock column for OJB optimistic locking
096     * @param lockVerNbr value of lock column for OJB optimistic locking
097     */
098    //public void setLockVerNbr(Integer lockVerNbr) {
099    //    this.lockVerNbr = lockVerNbr;
100    //  //super.setVersionNumber(lockVerNbr.longValue());
101    //}
102
103    /**
104     * Gets the messageDeliveryStatus attribute. 
105     * @return Returns the messageDeliveryStatus.
106     */
107    public String getMessageDeliveryStatus() {
108        return messageDeliveryStatus;
109    }
110
111    /**
112     * Sets the messageDeliveryStatus attribute value.
113     * @param deliveryStatus The messageDeliveryStatus to set.
114     */
115    public void setMessageDeliveryStatus(String deliveryStatus) {
116        this.messageDeliveryStatus = deliveryStatus;
117    }
118
119    /**
120     * Gets the userRecipientId attribute. 
121     * @return Returns the userRecipientId.
122     */
123    public String getUserRecipientId() {
124        return userRecipientId;
125    }
126
127    /**
128     * Sets the userRecipientId attribute value.
129     * @param userRecipientId The userRecipientId to set.
130     */
131    public void setUserRecipientId(String userRecipientId) {
132        this.userRecipientId = userRecipientId;
133    }
134
135    /**
136     * Gets the lockedDate attribute. 
137     * @return Returns the lockedDate.
138     */
139    public Timestamp getLockedDateValue() {
140        return this.lockedDateValue;
141    }
142    
143    /**
144     * Sets the lockedDate attribute value.
145     * @param lockedDateValue The lockedDate to set.
146     */
147    public void setLockedDateValue(Timestamp lockedDateValue) {
148        this.lockedDateValue = lockedDateValue;
149    }
150
151    /**
152     * Gets the notification attribute. 
153     * @return Returns the notification.
154     */
155    public NotificationBo getNotification() {
156        return notification;
157    }
158
159    /**
160     * Sets the notification attribute value.
161     * @param notification The notification to set.
162     */
163    public void setNotification(NotificationBo notification) {
164        this.notification = notification;
165    }
166
167    /**
168     * Gets the deliverySystemId attribute. 
169     * @return Returns the deliverySystemId.
170     */
171    public String getDeliverySystemId() {
172        return deliverySystemId;
173    }
174
175    /**
176     * Sets the deliverySystemId attribute value.
177     * @param deliverySystemId The deliverySystemId to set.
178     */
179    public void setDeliverySystemId(String deliverySystemId) {
180        this.deliverySystemId = deliverySystemId;
181    }
182}