带有日期的java验证

时间:2013-08-19 12:52:49

标签: java validation open-source java-api

我有一个java Web应用程序,必须处理资源管理。

示例

Dept      Min     Max   Resource    Effective Date      Last Date
 HR        1       3      Alex        08/19/2013        12/31/2013
 HR        1       3      Adam        08/19/2013        12/31/2013

 IT        2       5      Jade        08/19/2013        10/31/2013
 IT        2       5      Robert      11/01/2013        12/31/2013
 IT        2       5      Lisa        08/19/2013        12/31/2013

我有不同的部门,它们预设了我可以分配为经理的最小/最大员工。因此,HR部门的最小值为1,最大值为3,从今天到年底,我已经分配了2个。

在IT部门,我已经为Jade和robert分配了一个部分日期,在整个期间将它们计为1。丽莎的端到端。它们一起是2,它在最小/最大范围内。

基本上,底线是在任何时候我必须确保分配不会违反最小/最大规则。 所以,我想要了解如何在java应用程序中验证这些场景。您认为有用的任何开源API。

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你基本上想找出哪些区间重叠。关于日期,我通常倾向于使用http://joda-time.sourceforge.net/,因为与开箱即用的Java日期相比,它具有非常干净和漂亮的API。

Joda时间还提供间隔和检查间隔是否重叠的方法:http://joda-time.sourceforge.net/apidocs/org/joda/time/Interval.html#overlap(org.joda.time.ReadableInterval)

然而它并不适合我,因为我想每天检查一次,因此我必须自己实现它,使用Joda time Intervals作为基础对象:

public static boolean checkInteraction(Interval one, Interval another) {
    return  ((one.getEnd().equals(another.getStart()) || one.getEnd().isAfter(another.getStart())) &&
            (another.getEnd().isAfter(one.getStart()) || another.getEnd().equals(one.getStart())));
}

完成此操作后,您可以查看间隔并检查它们是否重叠/交互,并检查它是否超过最大数量。