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 edu.sampleu.kew.krad.form;
017
018 import java.text.ParseException;
019 import java.text.SimpleDateFormat;
020 import java.util.Date;
021 import java.util.HashMap;
022 import java.util.Map;
023
024 import org.kuali.rice.kew.stats.Stats;
025 import org.kuali.rice.kew.stats.web.StatsAction;
026 import org.kuali.rice.kew.api.KewApiConstants;
027 import org.kuali.rice.krad.util.GlobalVariables;
028 import org.kuali.rice.krad.web.form.UifFormBase;
029
030 /**
031 * A Struts ActionForm for the {@link StatsAction}.
032 *
033 * @see StatsAction
034 *
035 * @author Kuali Rice Team (rice.collab@kuali.org)
036 */
037 public class StatsForm extends UifFormBase {
038
039 private static final long serialVersionUID = 4587377779133823858L;
040 private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(StatsForm.class);
041 private static final String BEGIN_DATE = "begDate";
042 private static final String END_DATE = "endDate";
043
044 public static final String DAY_TIME_UNIT = "DDD";
045 public static final String WEEK_TIME_UNIT = "WW";
046 public static final String MONTH_TIME_UNIT = "MM";
047 public static final String YEAR_TIME_UNIT = "YYYY";
048
049 public static final String DEFAULT_BEGIN_DATE = "01/01/1900";
050 public static final String DEFAULT_END_DATE = "01/01/2400";
051 public static final String BEG_DAY_TIME = " 00:00";
052 public static final String END_DAY_TIME = " 23:59";
053 public static final String DATE_FORMAT = "MM/dd/yyyy";
054 public static final String TIME_FORMAT = " HH:mm";
055
056 private Stats stats;
057 private String methodToCall = "";
058 private String avgActionsPerTimeUnit = DAY_TIME_UNIT;
059
060 private String begDate;
061 private String endDate;
062
063 private Date beginningDate;
064 private Date endingDate;
065
066 // KULRICE-3137: Added a backLocation parameter similar to the one from lookups.
067 private String backLocation;
068
069 public StatsForm() {
070 stats = new Stats();
071 }
072
073 /**
074 * Retrieves the "returnLocation" parameter after calling "populate" on the superclass.
075 *
076 * @see org.kuali.rice.krad.web.struts.form.KualiForm#populate(javax.servlet.http.HttpServletRequest)
077 */
078 // @Override
079 // public void populate(HttpServletRequest request) {
080 // super.populate(request);
081 //
082 // if (getParameter(request, KRADConstants.RETURN_LOCATION_PARAMETER) != null) {
083 // setBackLocation(getParameter(request, KRADConstants.RETURN_LOCATION_PARAMETER));
084 // }
085 // }
086
087 public void determineBeginDate() {
088 SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT + TIME_FORMAT);
089
090 beginningDate = null;
091 try {
092 if (getBegDate() == null || getBegDate().trim().equals("")) {
093 beginningDate = dateFormat.parse(DEFAULT_BEGIN_DATE + BEG_DAY_TIME);
094 } else {
095 beginningDate = dateFormat.parse(getBegDate() + BEG_DAY_TIME);
096 }
097
098 dateFormat = new SimpleDateFormat(DATE_FORMAT);
099 begDate = dateFormat.format(beginningDate);
100 } catch (ParseException e) {
101 //parse error caught in validate methods
102 } finally {
103 if (beginningDate == null) {
104 try {
105 beginningDate = dateFormat.parse(DEFAULT_BEGIN_DATE + BEG_DAY_TIME);
106 } catch (ParseException e) {
107 throw new RuntimeException("Default Begin Date format incorrect");
108 }
109 }
110 }
111 }
112
113 public void determineEndDate() {
114 SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT + TIME_FORMAT);
115
116 endingDate = null;
117 try {
118 if (getEndDate() == null || getEndDate().trim().equals("")) {
119 endingDate = dateFormat.parse(DEFAULT_END_DATE + END_DAY_TIME);
120 } else {
121 endingDate = dateFormat.parse(getEndDate() + END_DAY_TIME);
122 }
123
124 dateFormat = new SimpleDateFormat(DATE_FORMAT);
125 endDate = dateFormat.format(endingDate);
126 } catch (ParseException e) {
127 //parse error caught in validate methods
128 } finally {
129 if (endingDate == null) {
130 try {
131 endingDate = dateFormat.parse(DEFAULT_END_DATE + END_DAY_TIME);
132 } catch (ParseException e) {
133 throw new RuntimeException("Default End Date format incorrect");
134 }
135 }
136 }
137 }
138
139 public Map makePerUnitOfTimeDropDownMap() {
140
141 Map dropDownMap = new HashMap();
142 dropDownMap.put(DAY_TIME_UNIT, KewApiConstants.DAILY_UNIT);
143 dropDownMap.put(WEEK_TIME_UNIT, KewApiConstants.WEEKLY_UNIT);
144 dropDownMap.put(MONTH_TIME_UNIT, KewApiConstants.MONTHLY_UNIT);
145 dropDownMap.put(YEAR_TIME_UNIT, KewApiConstants.YEARLY_UNIT);
146 return dropDownMap;
147
148 }
149
150 public void validateDates() {
151 LOG.debug("validate()");
152
153 //this.validateDate(BEGIN_DATE, this.getBegDate(), "general.error.fieldinvalid");
154 //this.validateDate(END_DATE, this.getEndDate(), "general.error.fieldinvalid");
155 if (getBegDate() != null && getBegDate().length() != 0) {
156 try {
157 new SimpleDateFormat(DATE_FORMAT + TIME_FORMAT).parse(getBegDate().trim() + END_DAY_TIME);
158 } catch (ParseException e) {
159 GlobalVariables.getMessageMap().putError(BEGIN_DATE, "general.error.fieldinvalid", "Begin Date");
160 }
161 }
162 if (getEndDate() != null && getEndDate().length() != 0) {
163 try {
164 new SimpleDateFormat(DATE_FORMAT + TIME_FORMAT).parse(getEndDate().trim() + END_DAY_TIME);
165 } catch (ParseException e) {
166 GlobalVariables.getMessageMap().putError(END_DATE, "general.error.fieldinvalid", "End Date");
167 }
168 }
169 }
170
171 public Stats getStats() {
172 return stats;
173 }
174
175 public void setStats(Stats stats) {
176 this.stats = stats;
177 }
178
179 // public String getApprovedLabel() {
180 // return KewApiConstants.ROUTE_HEADER_APPROVED_LABEL;
181 // }
182
183 public String getCanceledLabel() {
184 return KewApiConstants.ROUTE_HEADER_CANCEL_LABEL;
185 }
186
187 public String getDisapprovedLabel() {
188 return KewApiConstants.ROUTE_HEADER_DISAPPROVED_LABEL;
189 }
190
191 public String getEnrouteLabel() {
192 return KewApiConstants.ROUTE_HEADER_ENROUTE_LABEL;
193 }
194
195 public String getExceptionLabel() {
196 return KewApiConstants.ROUTE_HEADER_EXCEPTION_LABEL;
197 }
198
199 public String getFinalLabel() {
200 return KewApiConstants.ROUTE_HEADER_FINAL_LABEL;
201 }
202
203 public String getInitiatedLabel() {
204 return KewApiConstants.ROUTE_HEADER_INITIATED_LABEL;
205 }
206
207 public String getProcessedLabel() {
208 return KewApiConstants.ROUTE_HEADER_PROCESSED_LABEL;
209 }
210
211 public String getSavedLabel() {
212 return KewApiConstants.ROUTE_HEADER_SAVED_LABEL;
213 }
214
215 public String getAvgActionsPerTimeUnit() {
216 return avgActionsPerTimeUnit;
217 }
218
219 public void setAvgActionsPerTimeUnit(String string) {
220 avgActionsPerTimeUnit = string;
221 }
222
223 public String getBegDate() {
224 return begDate;
225 }
226
227 public void setBegDate(String begDate) {
228 this.begDate = begDate;
229 }
230
231 public String getEndDate() {
232 return endDate;
233 }
234
235 public void setEndDate(String endDate) {
236 this.endDate = endDate;
237 }
238
239 public String getMethodToCall() {
240 return methodToCall;
241 }
242
243 public void setMethodToCall(String methodToCall) {
244 this.methodToCall = methodToCall;
245 }
246
247 public Date getBeginningDate() {
248 return beginningDate;
249 }
250
251 public void setBeginningDate(Date beginningDate) {
252 this.beginningDate = beginningDate;
253 }
254
255 public Date getEndingDate() {
256 return endingDate;
257 }
258
259 public void setEndingDate(Date endingDate) {
260 this.endingDate = endingDate;
261 }
262
263 public String getDayTimeUnit() {
264 return DAY_TIME_UNIT;
265 }
266
267 public String getMonthTimeUnit() {
268 return MONTH_TIME_UNIT;
269 }
270
271 public String getWeekTimeUnit() {
272 return WEEK_TIME_UNIT;
273 }
274
275 public String getYearTimeUnit() {
276 return YEAR_TIME_UNIT;
277 }
278
279 public String getBackLocation() {
280 return this.backLocation;
281 }
282
283 public void setBackLocation(String backLocation) {
284 this.backLocation = backLocation;
285 }
286
287 }