001 /**
002 * Copyright 2005-2014 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.kew.routeheader;
017
018 import org.joda.time.DateTime;
019 import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
020
021 import javax.persistence.Column;
022 import javax.persistence.Entity;
023 import javax.persistence.GeneratedValue;
024 import javax.persistence.Id;
025 import javax.persistence.JoinColumn;
026 import javax.persistence.ManyToOne;
027 import javax.persistence.Table;
028 import java.sql.Timestamp;
029 import java.util.Map;
030
031 /**
032 * Model bean representing the valid application document statuses for a document type
033 *
034 * @author Kuali Rice Team (kuali-rice@googlegroups.com)
035 *
036 */
037 @Entity
038 @Table(name="KREW_APP_DOC_STAT_TRAN_T")
039 public class DocumentStatusTransition extends PersistableBusinessObjectBase {
040 private static final long serialVersionUID = -2212481684546954746L;
041
042 @Id
043 @GeneratedValue(generator="KREW_DOC_HDR_S")
044 @Column(name="APP_DOC_STAT_TRAN_ID")
045 private String statusTransitionId;
046
047 @Column(name="DOC_HDR_ID")
048 private String documentId;
049
050 @Column(name="APP_DOC_STAT_FROM")
051 private String oldAppDocStatus;
052
053 @Column(name="APP_DOC_STAT_TO")
054 private String newAppDocStatus;
055
056 @Column(name="STAT_TRANS_DATE")
057 private java.sql.Timestamp statusTransitionDate;
058
059 @ManyToOne
060 @JoinColumn(name="DOC_HDR_ID", insertable = false, updatable = false)
061 private DocumentRouteHeaderValue documentRouteHeaderValue;
062
063 public DocumentStatusTransition() {
064 }
065
066 public DocumentStatusTransition(String documentId, String oldStatus, String newStatus) {
067 this.documentId = documentId;
068 this.oldAppDocStatus = oldStatus;
069 this.newAppDocStatus = newStatus;
070 this.statusTransitionDate = new Timestamp(System.currentTimeMillis());
071 }
072
073 public String getStatusTransitionId() {
074 return this.statusTransitionId;
075 }
076
077 public void setStatusTransitionId(String statusTransitionId) {
078 this.statusTransitionId = statusTransitionId;
079 }
080
081 public String getDocumentId() {
082 return this.documentId;
083 }
084
085 public void setDocumentId(String documentId) {
086 this.documentId = documentId;
087 }
088
089 public String getOldAppDocStatus() {
090 return this.oldAppDocStatus;
091 }
092
093 public void setOldAppDocStatus(String oldAppDocStatus) {
094 this.oldAppDocStatus = oldAppDocStatus;
095 }
096
097 public String getNewAppDocStatus() {
098 return this.newAppDocStatus;
099 }
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 }