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.kew.routeheader;
017
018import org.bouncycastle.ocsp.OCSPReqGenerator;
019import org.hibernate.annotations.GenericGenerator;
020import org.hibernate.annotations.Parameter;
021import org.joda.time.DateTime;
022import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
023
024import javax.persistence.*;
025import java.sql.Timestamp;
026
027
028/**
029 * Model bean representing the valid application document statuses for a document type
030 * 
031 * @author Kuali Rice Team (kuali-rice@googlegroups.com)
032 *
033 */
034@Entity
035@Table(name="KREW_APP_DOC_STAT_TRAN_T")
036public class DocumentStatusTransition extends PersistableBusinessObjectBase {
037        private static final long serialVersionUID = -2212481684546954746L;
038
039        @Id
040        @GeneratedValue(generator="KREW_DOC_HDR_S")
041        @GenericGenerator(name="KREW_DOC_HDR_S",strategy="org.hibernate.id.enhanced.SequenceStyleGenerator",parameters={
042                        @Parameter(name="sequence_name",value="KREW_DOC_HDR_S"),
043                        @Parameter(name="value_column",value="id")
044        })
045        @Column(name="APP_DOC_STAT_TRAN_ID")
046        private String statusTransitionId;
047        
048        @Column(name="DOC_HDR_ID")
049        private String documentId;
050        
051        @Column(name="APP_DOC_STAT_FROM")
052        private String oldAppDocStatus;
053        
054        @Column(name="APP_DOC_STAT_TO")
055        private String newAppDocStatus;
056        
057        @Column(name="STAT_TRANS_DATE")
058        private java.sql.Timestamp statusTransitionDate;
059        
060    public DocumentStatusTransition() {
061    }
062
063    public DocumentStatusTransition(String documentId, String oldStatus, String newStatus) {
064        this.documentId = documentId;
065        this.oldAppDocStatus = oldStatus;
066        this.newAppDocStatus = newStatus;
067        this.statusTransitionDate = new Timestamp(System.currentTimeMillis());
068    }
069
070        public String getStatusTransitionId() {
071                return this.statusTransitionId;
072        }
073
074        public void setStatusTransitionId(String statusTransitionId) {
075                this.statusTransitionId = statusTransitionId;
076        }
077
078        public String getDocumentId() {
079                return this.documentId;
080        }
081
082        public void setDocumentId(String documentId) {
083                this.documentId = documentId;
084        }
085
086        public String getOldAppDocStatus() {
087                return this.oldAppDocStatus;
088        }
089
090        public void setOldAppDocStatus(String oldAppDocStatus) {
091                this.oldAppDocStatus = oldAppDocStatus;
092        }
093
094        public String getNewAppDocStatus() {
095                return this.newAppDocStatus;
096        }
097
098        public void setNewAppDocStatus(String newAppDocStatus) {
099                this.newAppDocStatus = newAppDocStatus;
100        }
101
102        public java.sql.Timestamp getStatusTransitionDate() {
103                return this.statusTransitionDate;
104        }
105
106        public void setStatusTransitionDate(java.sql.Timestamp statusTransitionDate) {
107                this.statusTransitionDate = statusTransitionDate;
108        }
109
110    public static DocumentStatusTransition from(org.kuali.rice.kew.api.document.DocumentStatusTransition im) {
111        if (im == null) {
112            return null;
113        }
114        DocumentStatusTransition transition = new DocumentStatusTransition(im.getDocumentId(), im.getOldStatus(), im.getNewStatus());
115        transition.setStatusTransitionId(im.getId());
116        if (im.getStatusTransitionDate() != null) {
117            transition.setStatusTransitionDate(new Timestamp(im.getStatusTransitionDate().getMillis()));
118        }
119        return transition;
120    }
121
122    public static org.kuali.rice.kew.api.document.DocumentStatusTransition to(DocumentStatusTransition bo) {
123        if (bo == null) {
124            return null;
125        }
126
127        org.kuali.rice.kew.api.document.DocumentStatusTransition.Builder builder = org.kuali.rice.kew.api.document.DocumentStatusTransition.Builder.create(bo.getDocumentId(), bo.getOldAppDocStatus(), bo.getNewAppDocStatus());
128        builder.setId(bo.getStatusTransitionId());
129        if (bo.getStatusTransitionDate() != null) {
130            builder.setStatusTransitionDate(new DateTime(bo.getStatusTransitionDate().getTime()));
131        }
132        return builder.build();
133    }
134}