📄 timesheetvalidator.java
字号:
package net.java.workeffort.webapp.action.validator;import java.math.BigDecimal;import java.util.List;import net.java.workeffort.service.domain.TimeEntry;import net.java.workeffort.service.domain.Timesheet;import net.java.workeffort.webapp.action.TimesheetCrudController;import org.apache.commons.beanutils.PropertyUtils;import org.apache.commons.lang.StringUtils;import org.springframework.validation.Errors;import org.springframework.validation.Validator;/** * @author Antony Joseph */public class TimesheetValidator implements Validator { public boolean supports(Class clazz) { return clazz.isAssignableFrom(Timesheet.class); } public void validate(Object obj, Errors errors) { Timesheet timesheet = (Timesheet) obj; List timeEntries = timesheet.getTimeEntries(); if (timeEntries == null) return; BigDecimal val0 = new BigDecimal("0.00"); BigDecimal val24 = new BigDecimal("24.00"); // validate hours is between 0 and 24. for (int i = 0; i < timeEntries.size(); i++) { TimeEntry te = (TimeEntry) timeEntries.get(i); if (te.getWorkId() == null) { errors.rejectValue("timeEntries[" + i + "].workId", "workId.required"); } if (StringUtils.isEmpty(te.getRateTypeCd())) { errors.rejectValue("timeEntries[" + i + "].rateTypeCd", "rateType.required"); } for (int j = 0; j < TimesheetCrudController.MAX_DAYS; j++) { BigDecimal hours = (BigDecimal) getSimpleProperty(te, "day" + j); if (hours != null) { if (hours.compareTo(val0) < 0 || hours.compareTo(val24) > 0) errors.rejectValue("timeEntries[" + i + "].day" + j, "errors.hour.range", new Object[] { new Integer(j + 1) }, null); } } } // validate that the total hours for a day across multiple time // entries is not over 24. if (!errors.hasErrors() && timeEntries.size() > 1) { for (int i = 0; i < TimesheetCrudController.MAX_DAYS; i++) { BigDecimal totalHoursForDay = new BigDecimal("0.00"); for (int j = 0; j < timeEntries.size(); j++) { TimeEntry te = (TimeEntry) timeEntries.get(j); BigDecimal hours = (BigDecimal) getSimpleProperty(te, "day" + i); if (hours != null) { totalHoursForDay = totalHoursForDay.add(hours); } } if (totalHoursForDay.compareTo(val24) > 0) { for (int k = 0; k < timeEntries.size(); k++) { if (k == 0) { errors.rejectValue( "timeEntries[" + k + "].day" + i, "errors.dayTotalOver24", new Object[] { new Integer(i + 1) }, null); } else { errors.rejectValue( "timeEntries[" + k + "].day" + i, "errors.blank"); } } } } } } private Object getSimpleProperty(Object obj, String propertyName) { try { return PropertyUtils.getSimpleProperty(obj, propertyName); } catch (Exception e) { throw new RuntimeException("Error while getting property:" + propertyName + " from object:" + obj, e); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -