View Javadoc
1   /**
2    * Copyright 2005-2015 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.kew.routeheader;
17  
18  import org.joda.time.DateTime;
19  import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
20  
21  import javax.persistence.Column;
22  import javax.persistence.Entity;
23  import javax.persistence.GeneratedValue;
24  import javax.persistence.Id;
25  import javax.persistence.JoinColumn;
26  import javax.persistence.ManyToOne;
27  import javax.persistence.Table;
28  import java.sql.Timestamp;
29  import java.util.Map;
30  
31  /**
32   * Model bean representing the valid application document statuses for a document type
33   * 
34   * @author Kuali Rice Team (kuali-rice@googlegroups.com)
35   *
36   */
37  @Entity
38  @Table(name="KREW_APP_DOC_STAT_TRAN_T")
39  public class DocumentStatusTransition extends PersistableBusinessObjectBase {
40  	private static final long serialVersionUID = -2212481684546954746L;
41  
42  	@Id
43  	@GeneratedValue(generator="KREW_DOC_HDR_S")
44  	@Column(name="APP_DOC_STAT_TRAN_ID")
45  	private String statusTransitionId;
46  	
47  	@Column(name="DOC_HDR_ID")
48  	private String documentId;
49   	
50  	@Column(name="APP_DOC_STAT_FROM")
51  	private String oldAppDocStatus;
52  	
53  	@Column(name="APP_DOC_STAT_TO")
54  	private String newAppDocStatus;
55  	
56  	@Column(name="STAT_TRANS_DATE")
57  	private java.sql.Timestamp statusTransitionDate;
58  
59      @ManyToOne
60      @JoinColumn(name="DOC_HDR_ID", insertable = false, updatable = false)
61      private DocumentRouteHeaderValue documentRouteHeaderValue;
62  	
63      public DocumentStatusTransition() {
64      }
65  
66      public DocumentStatusTransition(String documentId, String oldStatus, String newStatus) {
67      	this.documentId = documentId;
68      	this.oldAppDocStatus = oldStatus;
69      	this.newAppDocStatus = newStatus;
70      	this.statusTransitionDate = new Timestamp(System.currentTimeMillis());
71      }
72  
73  	public String getStatusTransitionId() {
74  		return this.statusTransitionId;
75  	}
76  
77  	public void setStatusTransitionId(String statusTransitionId) {
78  		this.statusTransitionId = statusTransitionId;
79  	}
80  
81  	public String getDocumentId() {
82  		return this.documentId;
83  	}
84  
85  	public void setDocumentId(String documentId) {
86  		this.documentId = documentId;
87  	}
88  
89  	public String getOldAppDocStatus() {
90  		return this.oldAppDocStatus;
91  	}
92  
93  	public void setOldAppDocStatus(String oldAppDocStatus) {
94  		this.oldAppDocStatus = oldAppDocStatus;
95  	}
96  
97  	public String getNewAppDocStatus() {
98  		return this.newAppDocStatus;
99  	}
100 
101 	public void setNewAppDocStatus(String newAppDocStatus) {
102 		this.newAppDocStatus = newAppDocStatus;
103 	}
104 
105 	public java.sql.Timestamp getStatusTransitionDate() {
106 		return this.statusTransitionDate;
107 	}
108 
109 	public void setStatusTransitionDate(java.sql.Timestamp statusTransitionDate) {
110 		this.statusTransitionDate = statusTransitionDate;
111 	}
112 
113     public DocumentStatusTransition deepCopy(Map<Object, Object> visited) {
114         if (visited.containsKey(this)) {
115             return (DocumentStatusTransition)visited.get(this);
116         }
117         DocumentStatusTransition copy = new DocumentStatusTransition();
118         visited.put(this, copy);
119         copy.statusTransitionId = statusTransitionId;
120         copy.documentId = documentId;
121         copy.oldAppDocStatus = oldAppDocStatus;
122         copy.newAppDocStatus = newAppDocStatus;
123         if (statusTransitionDate != null) {
124             copy.statusTransitionDate = new Timestamp(statusTransitionDate.getTime());
125         }
126         if (documentRouteHeaderValue != null) {
127             copy.documentRouteHeaderValue = documentRouteHeaderValue.deepCopy(visited);
128         }
129         return copy;
130     }
131 
132     public static DocumentStatusTransition from(org.kuali.rice.kew.api.document.DocumentStatusTransition im) {
133         if (im == null) {
134             return null;
135         }
136         DocumentStatusTransition transition = new DocumentStatusTransition(im.getDocumentId(), im.getOldStatus(), im.getNewStatus());
137         transition.setStatusTransitionId(im.getId());
138         if (im.getStatusTransitionDate() != null) {
139             transition.setStatusTransitionDate(new Timestamp(im.getStatusTransitionDate().getMillis()));
140         }
141         return transition;
142     }
143 
144     public static org.kuali.rice.kew.api.document.DocumentStatusTransition to(DocumentStatusTransition bo) {
145         if (bo == null) {
146             return null;
147         }
148 
149         org.kuali.rice.kew.api.document.DocumentStatusTransition.Builder builder = org.kuali.rice.kew.api.document.DocumentStatusTransition.Builder.create(bo.getDocumentId(), bo.getOldAppDocStatus(), bo.getNewAppDocStatus());
150         builder.setId(bo.getStatusTransitionId());
151         if (bo.getStatusTransitionDate() != null) {
152             builder.setStatusTransitionDate(new DateTime(bo.getStatusTransitionDate().getTime()));
153         }
154         return builder.build();
155     }
156 
157     public DocumentRouteHeaderValue getDocumentRouteHeaderValue() {
158         return documentRouteHeaderValue;
159     }
160 
161     public void setDocumentRouteHeaderValue(DocumentRouteHeaderValue documentRouteHeaderValue) {
162         this.documentRouteHeaderValue = documentRouteHeaderValue;
163     }
164 }