001 /*
002 * Copyright 2005-2007 The Kuali Foundation
003 *
004 *
005 * Licensed under the Educational Community License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.opensource.org/licenses/ecl2.php
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.kuali.rice.kew.stats.web;
018
019 import java.text.ParseException;
020 import java.text.SimpleDateFormat;
021 import java.util.Date;
022 import java.util.HashMap;
023 import java.util.Map;
024
025 import javax.servlet.http.HttpServletRequest;
026
027 import org.kuali.rice.kew.stats.Stats;
028 import org.kuali.rice.kew.util.KEWConstants;
029 import org.kuali.rice.kns.web.struts.form.KualiForm;
030 import org.kuali.rice.krad.util.GlobalVariables;
031 import org.kuali.rice.krad.util.KRADConstants;
032
033
034 /**
035 * A Struts ActionForm for the {@link StatsAction}.
036 *
037 * @see StatsAction
038 *
039 * @author Kuali Rice Team (rice.collab@kuali.org)
040 */
041 public class StatsForm extends KualiForm {
042
043 private static final long serialVersionUID = 4587377779133823858L;
044 private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(StatsForm.class);
045 private static final String BEGIN_DATE = "begDate";
046 private static final String END_DATE = "endDate";
047
048 public static final String DAY_TIME_UNIT = "DDD";
049 public static final String WEEK_TIME_UNIT = "WW";
050 public static final String MONTH_TIME_UNIT = "MM";
051 public static final String YEAR_TIME_UNIT = "YYYY";
052
053 public static final String DEFAULT_BEGIN_DATE = "01/01/1900";
054 public static final String DEFAULT_END_DATE = "01/01/2400";
055 public static final String BEG_DAY_TIME = " 00:00";
056 public static final String END_DAY_TIME = " 23:59";
057 public static final String DATE_FORMAT = "MM/dd/yyyy";
058 public static final String TIME_FORMAT = " HH:mm";
059
060 private Stats stats;
061 private String methodToCall = "";
062 private String avgActionsPerTimeUnit = DAY_TIME_UNIT;
063
064 private String begDate;
065 private String endDate;
066
067 private Date beginningDate;
068 private Date endingDate;
069
070 // KULRICE-3137: Added a backLocation parameter similar to the one from lookups.
071 private String backLocation;
072
073 public StatsForm() {
074 stats = new Stats();
075 }
076
077 /**
078 * Retrieves the "returnLocation" parameter after calling "populate" on the superclass.
079 *
080 * @see org.kuali.rice.krad.web.struts.form.KualiForm#populate(javax.servlet.http.HttpServletRequest)
081 */
082 @Override
083 public void populate(HttpServletRequest request) {
084 super.populate(request);
085
086 if (getParameter(request, KRADConstants.RETURN_LOCATION_PARAMETER) != null) {
087 setBackLocation(getParameter(request, KRADConstants.RETURN_LOCATION_PARAMETER));
088 }
089 }
090
091 public void determineBeginDate() {
092 SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT + TIME_FORMAT);
093
094 beginningDate = null;
095 try {
096 if (getBegDate() == null || getBegDate().trim().equals("")) {
097 beginningDate = dateFormat.parse(DEFAULT_BEGIN_DATE + BEG_DAY_TIME);
098 } else {
099 beginningDate = dateFormat.parse(getBegDate() + BEG_DAY_TIME);
100 }
101
102 dateFormat = new SimpleDateFormat(DATE_FORMAT);
103 begDate = dateFormat.format(beginningDate);
104 } catch (ParseException e) {
105 //parse error caught in validate methods
106 } finally {
107 if (beginningDate == null) {
108 try {
109 beginningDate = dateFormat.parse(DEFAULT_BEGIN_DATE + BEG_DAY_TIME);
110 } catch (ParseException e) {
111 throw new RuntimeException("Default Begin Date format incorrect");
112 }
113 }
114 }
115 }
116
117 public void determineEndDate() {
118 SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT + TIME_FORMAT);
119
120 endingDate = null;
121 try {
122 if (getEndDate() == null || getEndDate().trim().equals("")) {
123 endingDate = dateFormat.parse(DEFAULT_END_DATE + END_DAY_TIME);
124 } else {
125 endingDate = dateFormat.parse(getEndDate() + END_DAY_TIME);
126 }
127
128 dateFormat = new SimpleDateFormat(DATE_FORMAT);
129 endDate = dateFormat.format(endingDate);
130 } catch (ParseException e) {
131 //parse error caught in validate methods
132 } finally {
133 if (endingDate == null) {
134 try {
135 endingDate = dateFormat.parse(DEFAULT_END_DATE + END_DAY_TIME);
136 } catch (ParseException e) {
137 throw new RuntimeException("Default End Date format incorrect");
138 }
139 }
140 }
141 }
142
143 public Map makePerUnitOfTimeDropDownMap() {
144
145 Map dropDownMap = new HashMap();
146 dropDownMap.put(DAY_TIME_UNIT, KEWConstants.DAILY_UNIT);
147 dropDownMap.put(WEEK_TIME_UNIT, KEWConstants.WEEKLY_UNIT);
148 dropDownMap.put(MONTH_TIME_UNIT, KEWConstants.MONTHLY_UNIT);
149 dropDownMap.put(YEAR_TIME_UNIT, KEWConstants.YEARLY_UNIT);
150 return dropDownMap;
151
152 }
153
154 public void validateDates() {
155 LOG.debug("validate()");
156
157 //this.validateDate(BEGIN_DATE, this.getBegDate(), "general.error.fieldinvalid");
158 //this.validateDate(END_DATE, this.getEndDate(), "general.error.fieldinvalid");
159 if (getBegDate() != null && getBegDate().length() != 0) {
160 try {
161 new SimpleDateFormat(DATE_FORMAT + TIME_FORMAT).parse(getBegDate().trim()+END_DAY_TIME);
162 } catch (ParseException e) {
163 GlobalVariables.getMessageMap().putError(BEGIN_DATE, "general.error.fieldinvalid", "Begin Date");
164 }
165 }
166 if (getEndDate() != null && getEndDate().length() != 0) {
167 try {
168 new SimpleDateFormat(DATE_FORMAT + TIME_FORMAT).parse(getEndDate().trim()+END_DAY_TIME);
169 } catch (ParseException e) {
170 GlobalVariables.getMessageMap().putError(END_DATE, "general.error.fieldinvalid", "End Date");
171 }
172 }
173 }
174
175 public Stats getStats() {
176 return stats;
177 }
178
179 public void setStats(Stats stats) {
180 this.stats = stats;
181 }
182
183 public String getCanceledLabel() {
184 return KEWConstants.ROUTE_HEADER_CANCEL_LABEL;
185 }
186
187 public String getDisapprovedLabel() {
188 return KEWConstants.ROUTE_HEADER_DISAPPROVED_LABEL;
189 }
190
191 public String getEnrouteLabel() {
192 return KEWConstants.ROUTE_HEADER_ENROUTE_LABEL;
193 }
194
195 public String getExceptionLabel() {
196 return KEWConstants.ROUTE_HEADER_EXCEPTION_LABEL;
197 }
198
199 public String getFinalLabel() {
200 return KEWConstants.ROUTE_HEADER_FINAL_LABEL;
201 }
202
203 public String getInitiatedLabel() {
204 return KEWConstants.ROUTE_HEADER_INITIATED_LABEL;
205 }
206
207 public String getProcessedLabel() {
208 return KEWConstants.ROUTE_HEADER_PROCESSED_LABEL;
209 }
210
211 public String getSavedLabel() {
212 return KEWConstants.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 }