⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timesheetvalidator.java

📁 一个很好的开源项目管理系统源代码
💻 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 + -