001/**
002 * Copyright 2005-2016 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}