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.documentlink;
017
018import java.io.Serializable;
019
020import javax.persistence.Column;
021import javax.persistence.Entity;
022import javax.persistence.GeneratedValue;
023import javax.persistence.Id;
024import javax.persistence.Table;
025
026import org.hibernate.annotations.GenericGenerator;
027import org.hibernate.annotations.Parameter;
028import org.kuali.rice.core.framework.persistence.jpa.OrmUtils;
029import org.kuali.rice.kew.api.document.DocumentLinkContract;
030import org.kuali.rice.kew.service.KEWServiceLocator;
031
032/**
033 * Server side bean for DocumentLinkDAO 
034 * 
035 * @author Kuali Rice Team (kuali-rice@googlegroups.com)
036 *
037 */
038
039@Entity
040@Table(name="KREW_DOC_LNK_T")
041//@Sequence(name="KREW_DOC_LNK_S",property="docLinkId")
042public class DocumentLink implements Serializable, DocumentLinkContract {
043
044        private static final long serialVersionUID = 551926904795633010L;
045        
046        @Id
047        @GeneratedValue(generator="KREW_DOC_LNK_S")
048        @GenericGenerator(name="KREW_DOC_LNK_S",strategy="org.hibernate.id.enhanced.SequenceStyleGenerator",parameters={
049                        @Parameter(name="sequence_name",value="KREW_DOC_LNK_S"),
050                        @Parameter(name="value_column",value="id")
051        })
052        @Column(name="DOC_LNK_ID")
053        private String docLinkId;
054    @Column(name="ORGN_DOC_ID")
055        private String orgnDocId;
056    @Column(name="DEST_DOC_ID")
057        private String destDocId;
058    
059        /**
060         * @return the docLinkId
061         */
062        public String getDocLinkId() {
063                return this.docLinkId;
064        }
065
066        /**
067         * @param docLinkId the docLinkId to set
068         */
069        public void setDocLinkId(String docLinkId) {
070                this.docLinkId = docLinkId;
071        }
072
073        /**
074         * @return the orgnDocId
075         */
076        public String getOrgnDocId() {
077                return this.orgnDocId;
078        }
079
080        /**
081         * @param orgnDocId the orgnDocId to set
082         */
083        public void setOrgnDocId(String orgnDocId) {
084                this.orgnDocId = orgnDocId;
085        }
086
087        /**
088         * @return the destDocId
089         */
090        public String getDestDocId() {
091                return this.destDocId;
092        }
093
094        /**
095         * @param destDocId the destDocId to set
096         */
097        public void setDestDocId(String destDocId) {
098                this.destDocId = destDocId;
099        }
100        
101        //@PrePersist
102        public void beforeInsert(){
103                OrmUtils.populateAutoIncValue(this, KEWServiceLocator.getEntityManagerFactory().createEntityManager());         
104        }
105        
106        // new contract methods for Rice 2.0
107        
108        @Override
109        public String getId() {
110                if (getDocLinkId() == null) {
111                        return null;
112                }
113                return getDocLinkId().toString();
114        }
115
116        @Override
117        public String getOriginatingDocumentId() {
118                return getOrgnDocId();
119        }
120
121        @Override
122        public String getDestinationDocumentId() {
123                return getDestDocId();
124        }
125        
126        public static org.kuali.rice.kew.api.document.DocumentLink to(DocumentLink documentLinkBo) {
127                if (documentLinkBo == null) {
128                        return null;
129                }
130                return org.kuali.rice.kew.api.document.DocumentLink.Builder.create(documentLinkBo).build();
131        }
132
133        public static DocumentLink from(org.kuali.rice.kew.api.document.DocumentLink documentLink) {
134                if (documentLink == null) {
135                        return null;
136                }
137                DocumentLink documentLinkBo = new DocumentLink();
138                if (documentLink.getId() != null) {
139                        documentLinkBo.setDocLinkId(documentLink.getId());
140                }
141                documentLinkBo.setOrgnDocId(documentLink.getOriginatingDocumentId());
142                documentLinkBo.setDestDocId(documentLink.getDestinationDocumentId());
143                return documentLinkBo;
144        }
145        
146}