View Javadoc

1   /**
2    * Copyright 2005-2013 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.rice.krad.web.form;
17  
18  import org.apache.commons.lang.StringUtils;
19  import org.kuali.rice.core.api.CoreApiServiceLocator;
20  import org.kuali.rice.kew.api.WorkflowDocument;
21  import org.kuali.rice.kim.api.identity.Person;
22  import org.kuali.rice.kim.api.services.KimApiServiceLocator;
23  import org.kuali.rice.krad.document.Document;
24  import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
25  
26  /**
27   * Base form for all <code>DocumentView</code> screens
28   * 
29   * @author Kuali Rice Team (rice.collab@kuali.org)
30   */
31  public class DocumentFormBase extends UifFormBase {
32  	private static final long serialVersionUID = 2190268505427404480L;
33  	
34  	private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(DocumentFormBase.class);
35  
36  	private String annotation = "";
37  	private String command;
38  
39  	private String docId;
40  	private String docTypeName;
41  
42  	protected Document document;
43  
44  	public DocumentFormBase() {
45  	    super();
46  	    
47  	    instantiateDocument();
48  	}
49  
50  	public String getAnnotation() {
51  		return this.annotation;
52  	}
53  
54  	public void setAnnotation(String annotation) {
55  		this.annotation = annotation;
56  	}
57  
58  	public Document getDocument() {
59  		return this.document;
60  	}
61  
62  	public void setDocument(Document document) {
63  		this.document = document;
64  	}
65  
66  	public String getDocTypeName() {
67  		return this.docTypeName;
68  	}
69  
70  	public void setDocTypeName(String docTypeName) {
71  		this.docTypeName = docTypeName;
72  	}
73  
74  	public String getCommand() {
75  		return this.command;
76  	}
77  
78  	public void setCommand(String command) {
79  		this.command = command;
80  	}
81  
82  	public String getDocId() {
83  		return this.docId;
84  	}
85  
86  	public void setDocId(String docId) {
87  		this.docId = docId;
88  	}
89  	
90      protected String getDefaultDocumentTypeName() {
91          return "";
92      }
93  
94      protected void instantiateDocument() {
95          if (document == null && StringUtils.isNotBlank(getDefaultDocumentTypeName())) {
96              Class<? extends Document> documentClass = KRADServiceLocatorWeb.getDataDictionaryService()
97                      .getDocumentClassByTypeName(getDefaultDocumentTypeName());
98              try {
99                  Document newDocument = documentClass.newInstance();
100                 setDocument(newDocument);
101             } catch (Exception e) {
102                 LOG.error("Unable to instantiate document class " + documentClass.getName() + " document type "
103                         + getDefaultDocumentTypeName());
104                 throw new RuntimeException(e);
105             }
106         }
107     }
108 
109 	/**
110 	 * Retrieves the principal name (network id) for the document's initiator
111 	 * 
112 	 * @return String initiator name
113 	 */
114 	public String getDocumentInitiatorNetworkId() {
115 		String initiatorNetworkId = "";
116 		if (getWorkflowDocument() != null) {
117 			String initiatorPrincipalId = getWorkflowDocument().getInitiatorPrincipalId();
118 			Person initiator = KimApiServiceLocator.getPersonService().getPerson(initiatorPrincipalId);
119 			if (initiator != null) {
120 				initiatorNetworkId = initiator.getPrincipalName();
121 			}
122 		}
123 
124 		return initiatorNetworkId;
125 	}
126 
127 	/**
128 	 * Retrieves the create date for the forms document and formats for
129 	 * presentation
130 	 * 
131 	 * @return String formatted document create date
132 	 */
133     public String getDocumentCreateDate() {
134         String createDateStr = "";
135         if (getWorkflowDocument() != null && getWorkflowDocument().getDateCreated() != null) {
136             createDateStr = CoreApiServiceLocator.getDateTimeService().toString(
137                     getWorkflowDocument().getDateCreated().toDate(), "hh:mm a MM/dd/yyyy");
138         }
139 
140         return createDateStr;
141     }
142 
143 	/**
144 	 * Retrieves the <code>WorkflowDocument</code> instance from the forms
145 	 * document instance
146 	 * 
147 	 * @return WorkflowDocument for the forms document
148 	 */
149 	public WorkflowDocument getWorkflowDocument() {
150 		return getDocument().getDocumentHeader().getWorkflowDocument();
151 	}
152 
153 }