View Javadoc

1   /*
2    * Copyright 2005-2008 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  
17  package org.kuali.rice.kns.web.struts.form;
18  
19  import org.kuali.rice.kns.util.WebUtils;
20  import org.kuali.rice.krad.question.Question;
21  import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
22  import org.kuali.rice.krad.util.KRADConstants;
23  
24  import javax.servlet.http.HttpServletRequest;
25  import java.util.ArrayList;
26  
27  /**
28   * This class is the action form for all Question Prompts.
29   * 
30   * 
31   */
32  public class QuestionPromptForm extends KualiForm {
33      private static final long serialVersionUID = 1L;
34      private ArrayList buttons;
35      private String caller;
36  
37      private String formKey;
38      private String questionIndex;
39      private String questionText;
40      private String questionType;
41      private String title;
42      private String context;
43      private String reason;
44      private String showReasonField;
45      private String questionAnchor;
46      private String methodToCallPath;
47      private String docNum;
48  
49      /**
50  	 * @return the docNum
51  	 */
52  	public String getDocNum() {
53  		return this.docNum;
54  	}
55  
56  	/**
57  	 * @param docNum the docNum to set
58  	 */
59  	public void setDocNum(String docNum) {
60  		this.docNum = docNum;
61  	}
62  
63  	/**
64       * @return boolean
65       */
66      public String getShowReasonField() {
67          return showReasonField;
68      }
69  
70      /**
71       * @param showReasonField
72       */
73      public void setShowReasonField(String showReasonField) {
74          this.showReasonField = showReasonField;
75      }
76  
77      /**
78       * @return Returns the buttons.
79       */
80      public ArrayList getButtons() {
81          return buttons;
82      }
83  
84      /**
85       * @return Returns the caller.
86       */
87      public String getCaller() {
88          return caller;
89      }
90  
91      /**
92       * @return Returns the formKey.
93       */
94      public String getFormKey() {
95          return formKey;
96      }
97  
98      /**
99       * @return Returns the questionIndex.
100      */
101     public String getQuestionIndex() {
102         return questionIndex;
103     }
104 
105     /**
106      * @return Returns the questionText.
107      */
108     public String getQuestionText() {
109         return questionText != null ? WebUtils.filterHtmlAndReplaceRiceMarkup(questionText) : questionText;
110     }
111 
112     /**
113      * @return Returns the questionName.
114      */
115     public String getQuestionType() {
116         return questionType;
117     }
118 
119     /**
120      * @return Returns the title.
121      */
122     public String getTitle() {
123         return title;
124     }
125 
126     /**
127      * @see org.kuali.rice.krad.web.struts.pojo.PojoForm#populate(javax.servlet.http.HttpServletRequest)
128      */
129     public void populate(HttpServletRequest request) {
130         super.populate(request);
131 
132         // set the title of the jsp, this should come from a resource bundle
133         title = KRADConstants.QUESTION_PAGE_TITLE;
134 
135         if (request.getAttribute(KRADConstants.DOC_FORM_KEY) != null) {
136             this.setFormKey((String) request.getAttribute(KRADConstants.DOC_FORM_KEY));
137         }
138         else if (request.getParameter(KRADConstants.DOC_FORM_KEY) != null) {
139             this.setFormKey(request.getParameter(KRADConstants.DOC_FORM_KEY));
140         }
141         
142         if (request.getAttribute(KRADConstants.DOC_NUM) != null) {
143             this.setFormKey((String) request.getAttribute(KRADConstants.DOC_NUM));
144         }
145         
146 
147         if (request.getParameter(KRADConstants.RETURN_LOCATION_PARAMETER) != null) {
148             this.setBackLocation(request.getParameter(KRADConstants.RETURN_LOCATION_PARAMETER));
149         }
150 
151         if (getMethodToCall().equals(KRADConstants.START_METHOD)) { // don't do this for the processAnswer action otherwise it blows up
152             Question kualiQuestion = KRADServiceLocatorWeb.getQuestion(questionType);
153             if (kualiQuestion == null) {
154                 throw new RuntimeException("question implementation not found: " + request.getParameter(KRADConstants.QUESTION_IMPL_ATTRIBUTE_NAME));
155             }
156 
157 
158             // some questions types default these so we should default if not
159             // present in request
160             if (questionText == null) {
161                 questionText = kualiQuestion.getQuestion();
162             }
163 
164             if (buttons == null) {
165                 buttons = kualiQuestion.getButtons();
166             }
167         }
168     }
169 
170     /**
171      * @param buttons The buttons to set.
172      */
173     public void setButtons(ArrayList buttons) {
174         this.buttons = buttons;
175     }
176 
177     /**
178      * @param caller The caller to set.
179      */
180     public void setCaller(String caller) {
181         this.caller = caller;
182     }
183 
184     /**
185      * @param formKey The formKey to set.
186      */
187     public void setFormKey(String formKey) {
188         this.formKey = formKey;
189     }
190 
191     /**
192      * @param questionIndex The questionIndex to set.
193      */
194     public void setQuestionIndex(String questionIndex) {
195         this.questionIndex = questionIndex;
196     }
197 
198     /**
199      * @param questionText The questionText to set.
200      */
201     public void setQuestionText(String questionText) {
202         this.questionText = questionText;
203     }
204 
205     /**
206      * @param questionName The questionName to set.
207      */
208     public void setQuestionType(String questionName) {
209         this.questionType = questionName;
210     }
211 
212     /**
213      * @param title The title to set.
214      */
215     public void setTitle(String title) {
216         this.title = title;
217     }
218 
219     public String getContext() {
220         return context;
221     }
222 
223     public void setContext(String context) {
224         this.context = context;
225     }
226 
227     /**
228      * @return String
229      */
230     public String getReason() {
231         return reason;
232     }
233 
234     /**
235      * @param reason
236      */
237     public void setReason(String reason) {
238         this.reason = reason;
239     }
240 
241     public String getQuestionAnchor() {
242         return questionAnchor;
243     }
244 
245     public void setQuestionAnchor(String questionAnchor) {
246         this.questionAnchor = questionAnchor;
247     }
248 
249     public String getMethodToCallPath() {
250         return methodToCallPath;
251 }
252     public void setMethodToCallPath(String methodToCallPath) {
253         this.methodToCallPath = methodToCallPath;
254     }
255     
256 }