001/** 002 * Copyright 2005-2015 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 */ 016package edu.sampleu.kew.krad.form; 017 018import java.text.ParseException; 019import java.text.SimpleDateFormat; 020import java.util.Date; 021import java.util.HashMap; 022import java.util.Map; 023 024import org.kuali.rice.kew.stats.Stats; 025import org.kuali.rice.kew.stats.web.StatsAction; 026import org.kuali.rice.kew.api.KewApiConstants; 027import org.kuali.rice.krad.util.GlobalVariables; 028import 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 */ 037public 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}