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.krad.bo; 017 018 import org.kuali.rice.core.api.exception.RiceRuntimeException; 019 020 import javax.persistence.Column; 021 import javax.persistence.Entity; 022 import javax.persistence.Id; 023 import javax.persistence.Table; 024 import javax.persistence.Transient; 025 026 import org.kuali.rice.core.api.exception.RiceRuntimeException; 027 import org.kuali.rice.kew.api.WorkflowDocument; 028 029 /** 030 * Business Object representing a document header. The document header contains metadata about a document. 031 * This contains a reference to the template associated with the document. 032 * This also provides the access to the underlying {@link WorkflowDocument} associated with this document header. 033 * 034 * @author Kuali Rice Team (rice.collab@kuali.org) 035 */ 036 @Entity 037 @Table(name="KRNS_DOC_HDR_T") 038 public class DocumentHeader extends PersistableBusinessObjectBase { 039 040 @Id 041 @Column(name="DOC_HDR_ID") 042 private String documentNumber; 043 @Column(name="FDOC_DESC") 044 private String documentDescription; 045 @Column(name="ORG_DOC_HDR_ID") 046 private String organizationDocumentNumber; 047 @Column(name="TMPL_DOC_HDR_ID") 048 private String documentTemplateNumber; 049 @Column(name="EXPLANATION") 050 private String explanation; 051 052 @Transient 053 private WorkflowDocument workflowDocument; 054 055 /** 056 * Constructor - creates empty instances of dependent objects 057 * 058 */ 059 public DocumentHeader() { 060 super(); 061 } 062 063 /** 064 * Returns an instance of the the {@link WorkflowDocument} associated with this document header. 065 * The workflowDocument provides the core client interface for interacting with the KEW workflow module. 066 * @return workflowDocument 067 */ 068 public WorkflowDocument getWorkflowDocument() { 069 if (workflowDocument == null) { 070 throw new RiceRuntimeException("The workflow document is null. This indicates that the DocumentHeader has not been initialized properly. This can be caused by not retrieving a document using the DocumentService."); 071 } 072 073 return workflowDocument; 074 } 075 076 /** 077 * Returns whether this document header has a {@link WorkflowDocument} associated with it. 078 * @return true if the workflowDocument is not null 079 */ 080 public boolean hasWorkflowDocument() { 081 return (workflowDocument != null); 082 } 083 084 085 /** 086 * Associates a {@link WorkflowDocument} with this document header. 087 * @param workflowDocument 088 */ 089 public void setWorkflowDocument(WorkflowDocument workflowDocument) { 090 this.workflowDocument = workflowDocument; 091 } 092 093 /** 094 * Returns the documentNumber (also known as the docuementHeaderId). This is a unique identifier for the document. 095 * @return the documentNumber 096 */ 097 public String getDocumentNumber() { 098 return this.documentNumber; 099 } 100 101 /** 102 * Sets the documentNumber for this document. It serves as a unique identifier for the document. 103 * @param documentNumber the documentNumber to set 104 */ 105 public void setDocumentNumber(String documentNumber) { 106 this.documentNumber = documentNumber; 107 } 108 109 /** 110 * Returns the description text for this document. 111 * @return the documentDescription 112 */ 113 public String getDocumentDescription() { 114 return this.documentDescription; 115 } 116 117 /** 118 * Sets the description text for this document. 119 * @param documentDescription the documentDescription to set 120 */ 121 public void setDocumentDescription(String documentDescription) { 122 this.documentDescription = documentDescription; 123 } 124 125 /** 126 * Returns the organizationDocumentNumber. This identifier is one that may be used by a client to refer to the document. 127 * @return the organizationDocumentNumber 128 */ 129 public String getOrganizationDocumentNumber() { 130 return this.organizationDocumentNumber; 131 } 132 133 /** 134 * Sets the value of the organizationDocumentNumber 135 * @param organizationDocumentNumber the organizationDocumentNumber to set 136 */ 137 public void setOrganizationDocumentNumber(String organizationDocumentNumber) { 138 this.organizationDocumentNumber = organizationDocumentNumber; 139 } 140 141 /** 142 * Returns the documentTemplateNumber. It identifies the document template associated with this document. 143 * @return the documentTemplateNumber 144 */ 145 public String getDocumentTemplateNumber() { 146 return this.documentTemplateNumber; 147 } 148 149 /** 150 * Associates this document with a document template. 151 * @param documentTemplateNumber the id of the documentTemplate associated with this document 152 */ 153 public void setDocumentTemplateNumber(String documentTemplateNumber) { 154 this.documentTemplateNumber = documentTemplateNumber; 155 } 156 157 /** 158 * Gets the explanation attribute. This text provides additional information about the purpose of the document. 159 * @return Returns the explanation. 160 */ 161 public String getExplanation() { 162 return explanation; 163 } 164 165 /** 166 * Sets the explanation attribute value. 167 * @param explanation The explanation text string. 168 */ 169 public void setExplanation(String explanation) { 170 this.explanation = explanation; 171 } 172 173 }