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 }