View Javadoc
1   /**
2    * Copyright 2005-2015 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.kns.web.struts.form;
17  
18  import org.kuali.rice.kns.service.KNSServiceLocator;
19  import org.kuali.rice.kns.util.WebUtils;
20  import org.kuali.rice.kns.question.Question;
21  import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
22  import org.kuali.rice.krad.util.KRADConstants;
23  import org.kuali.rice.krad.util.GlobalVariables;
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 = KNSServiceLocator.getQuestion(questionType);
153             if (kualiQuestion == null) {
154                 throw new RuntimeException("question implementation not found: " + request.getParameter(KRADConstants.QUESTION_IMPL_ATTRIBUTE_NAME));
155             }
156            
157             // KULRICE-8077: PO Quote Limitation of Only 9 Vendors
158             String questionId = request.getParameter(KRADConstants.QUESTION_INST_ATTRIBUTE_NAME);
159             String questionTextAttributeName = KRADConstants.QUESTION_TEXT_ATTRIBUTE_NAME + questionId;
160             
161             if (GlobalVariables.getUserSession().retrieveObject(questionTextAttributeName)!=null) {
162                 this.setQuestionText((String)GlobalVariables.getUserSession().retrieveObject(questionTextAttributeName));
163                 GlobalVariables.getUserSession().removeObject(questionTextAttributeName);
164             }
165            
166             // some questions types default these so we should default if not
167             // present in request
168             if (questionText == null) {
169                 questionText = kualiQuestion.getQuestion();
170             }
171 
172             if (buttons == null) {
173                 buttons = kualiQuestion.getButtons();
174             }
175         }
176     }
177 
178     /**
179      * @param buttons The buttons to set.
180      */
181     public void setButtons(ArrayList buttons) {
182         this.buttons = buttons;
183     }
184 
185     /**
186      * @param caller The caller to set.
187      */
188     public void setCaller(String caller) {
189         this.caller = caller;
190     }
191 
192     /**
193      * @param formKey The formKey to set.
194      */
195     public void setFormKey(String formKey) {
196         this.formKey = formKey;
197     }
198 
199     /**
200      * @param questionIndex The questionIndex to set.
201      */
202     public void setQuestionIndex(String questionIndex) {
203         this.questionIndex = questionIndex;
204     }
205 
206     /**
207      * @param questionText The questionText to set.
208      */
209     public void setQuestionText(String questionText) {
210         this.questionText = questionText;
211     }
212 
213     /**
214      * @param questionName The questionName to set.
215      */
216     public void setQuestionType(String questionName) {
217         this.questionType = questionName;
218     }
219 
220     /**
221      * @param title The title to set.
222      */
223     public void setTitle(String title) {
224         this.title = title;
225     }
226 
227     public String getContext() {
228         return context;
229     }
230 
231     public void setContext(String context) {
232         this.context = context;
233     }
234 
235     /**
236      * @return String
237      */
238     public String getReason() {
239         return reason;
240     }
241 
242     /**
243      * @param reason
244      */
245     public void setReason(String reason) {
246         this.reason = reason;
247     }
248 
249     public String getQuestionAnchor() {
250         return questionAnchor;
251     }
252 
253     public void setQuestionAnchor(String questionAnchor) {
254         this.questionAnchor = questionAnchor;
255     }
256 
257     public String getMethodToCallPath() {
258         return methodToCallPath;
259 }
260     public void setMethodToCallPath(String methodToCallPath) {
261         this.methodToCallPath = methodToCallPath;
262     }
263     
264 }