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