View Javadoc

1   /**
2    * Copyright 2005-2011 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.rice.ksb.messaging;
17  
18  import java.sql.Timestamp;
19  
20  import javax.persistence.Column;
21  import javax.persistence.Entity;
22  import javax.persistence.GeneratedValue;
23  import javax.persistence.Id;
24  import javax.persistence.NamedQueries;
25  import javax.persistence.NamedQuery;
26  import javax.persistence.Table;
27  import javax.persistence.Transient;
28  import javax.persistence.Version;
29  
30  import org.hibernate.annotations.GenericGenerator;
31  import org.hibernate.annotations.Parameter;
32  import org.kuali.rice.core.framework.persistence.jpa.OrmUtils;
33  import org.kuali.rice.ksb.api.messaging.AsynchronousCall;
34  import org.kuali.rice.ksb.service.KSBServiceLocator;
35  
36  /**
37   * A message which has been persisted to the data store.
38   *
39   * @author Kuali Rice Team (rice.collab@kuali.org)
40   */
41  @Entity
42  @Table(name="KRSB_MSG_QUE_T")
43  //@Sequence(name="KRSB_MSG_QUE_S", property="routeQueueId")
44  @NamedQueries({
45    @NamedQuery(name="PersistedMessage.FindAll", query="select pm from PersistedMessageBO pm"),
46    @NamedQuery(name="PersistedMessage.FindByServiceName", query="select pm from PersistedMessage pm where pm.serviceName = :serviceName and pm.methodName = :methodName"),
47    @NamedQuery(name="PersistedMessage.GetNextDocuments", query="select pm from PersistedMessage pm where pm.applicationId = :applicationId and pm.queueStatus <> :queueStatus and pm.ipNumber = :ipNumber order by queuePriority asc, routeQueueId asc, queueDate asc")
48  })
49  public class PersistedMessageBO implements PersistedMessage {
50  
51  	private static final long serialVersionUID = -7047766894738304195L;
52  
53  	@Id
54  	@GeneratedValue(generator="KRSB_MSG_QUE_S")
55  	@GenericGenerator(name="KRSB_MSG_QUE_S",strategy="org.hibernate.id.enhanced.SequenceStyleGenerator",parameters={
56  			@Parameter(name="sequence_name",value="KRSB_MSG_QUE_S"),
57  			@Parameter(name="value_column",value="id")
58  	})
59  	@Column(name="MSG_QUE_ID")
60  	private Long routeQueueId;
61  	@Column(name="PRIO")
62  	private Integer queuePriority;
63  	@Column(name="STAT_CD")
64  	private String queueStatus;
65  	@Column(name="DT")
66  	private Timestamp queueDate;
67  	@Column(name="EXP_DT")
68  	private Timestamp expirationDate;
69  	@Column(name="RTRY_CNT")
70  	private Integer retryCount;
71  	@Version
72  	@Column(name="VER_NBR")
73  	private Integer lockVerNbr;
74      @Column(name="IP_NBR")
75  	private String ipNumber;
76      @Column(name="SVC_NM")
77  	private String serviceName;
78      @Column(name="APPL_ID")
79  	private String applicationId;
80      @Column(name="SVC_MTHD_NM")
81  	private String methodName;
82      @Transient
83      private AsynchronousCall methodCall;
84      @Transient
85      private PersistedMessagePayload payload;
86      @Column(name="APP_VAL_ONE")
87  	private String value1;
88      @Column(name="APP_VAL_TWO")
89  	private String value2;
90      
91      public PersistedMessageBO() {
92          // default constructor
93      }
94      
95      //@PrePersist
96      public void beforeInsert(){
97          OrmUtils.populateAutoIncValue(this, KSBServiceLocator.getMessageEntityManagerFactory().createEntityManager());
98      }
99      
100 	@Override
101     public String getApplicationId() {
102 		return this.applicationId;
103 	}
104 
105 	public void setApplicationId(String applicationId) {
106 		this.applicationId = applicationId;
107 	}
108 
109     @Override
110     public String getIpNumber() {
111         return this.ipNumber;
112     }
113     
114     public void setIpNumber(String ipNumber) {
115         this.ipNumber = ipNumber;
116     }
117     
118 	@Override
119     public Timestamp getQueueDate() {
120 		return this.queueDate;
121 	}
122 
123 	@Override
124     public Integer getQueuePriority() {
125 		return this.queuePriority;
126 	}
127 
128 	@Override
129     public String getQueueStatus() {
130 		return this.queueStatus;
131 	}
132 
133 	@Override
134     public Integer getRetryCount() {
135 		return this.retryCount;
136 	}
137 
138 
139 	public void setQueueDate(Timestamp timestamp) {
140 	    this.queueDate = timestamp;
141 	}
142 
143 	public void setQueuePriority(Integer integer) {
144 	    this.queuePriority = integer;
145 	}
146 
147 	public void setQueueStatus(String string) {
148 	    this.queueStatus = string;
149 	}
150 
151 	public void setRetryCount(Integer integer) {
152 	    this.retryCount = integer;
153 	}
154 
155 
156     public Integer getLockVerNbr() {
157         return this.lockVerNbr;
158     }
159     
160     public void setLockVerNbr(Integer lockVerNbr) {
161         this.lockVerNbr = lockVerNbr;
162     }
163     
164     @Override
165     public Long getRouteQueueId() {
166         return this.routeQueueId;
167     }
168     
169     public void setRouteQueueId(Long queueSequence) {
170         this.routeQueueId = queueSequence;
171     }
172     
173 	@Override
174     public String getServiceName() {
175 		return this.serviceName;
176 	}
177 
178 	public void setServiceName(String serviceName) {
179 		this.serviceName = serviceName;
180 	}
181 
182     public String toString() {
183 	return "[RouteQueue: " + ", routeQueueId=" + this.routeQueueId + ", ipNumber=" + this.ipNumber 
184 		+ "applicationId=" + this.applicationId + ", serviceName=" + this.serviceName + ", methodName=" + methodName 
185 		+ ", queueStatus=" + this.queueStatus + ", queuePriority=" + this.queuePriority
186 		+ ", queueDate=" + this.queueDate + "]";
187     }
188 
189 	@Override
190     public AsynchronousCall getMethodCall() {
191 		return this.methodCall;
192 	}
193 
194 	public void setMethodCall(AsynchronousCall methodCall) {
195 		this.methodCall = methodCall;
196 	}
197 
198 	@Override
199     public String getMethodName() {
200 		return this.methodName;
201 	}
202 
203 	public void setMethodName(String methodName) {
204 		this.methodName = methodName;
205 	}
206 
207 	@Override
208     public Timestamp getExpirationDate() {
209 		return this.expirationDate;
210 	}
211 
212 	public void setExpirationDate(Timestamp expirationDate) {
213 		this.expirationDate = expirationDate;
214 	}
215 
216     @Override
217     public PersistedMessagePayload getPayload() {
218 	if (this.payload == null) {
219 	    if (this.getRouteQueueId() == null) {
220 		return null;
221 }	    this.payload = KSBServiceLocator.getMessageQueueService().findByPersistedMessageByRouteQueueId(this.getRouteQueueId()); 
222 	}
223         return this.payload;
224     }
225 
226     public void setPayload(PersistedMessagePayload payload) {
227         this.payload = payload;
228     }
229 
230     @Override
231     public String getValue1() {
232         return this.value1;
233     }
234 
235     public void setValue1(String value1) {
236         this.value1 = value1;
237     }
238 
239     @Override
240     public String getValue2() {
241         return this.value2;
242     }
243 
244     public void setValue2(String value2) {
245         this.value2 = value2;
246     }
247 
248 }