Validation 带日期的java验证

Validation 带日期的java验证,validation,open-source,java,Validation,Open Source,Java,我有一个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

我有一个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
我有不同的部门,有预设的最小/最大员工,我可以分配为经理。所以人力资源部的最小值为1,最大值为3,我从今天到年底分配了2个

在IT部门,我为Jade和robert分配了一个部分日期,以便在整个期间将其计算为1。Lisa的电话是端到端的。加在一起就是2,在最小/最大范围内


基本上,底线是在任何时候我都必须确保分配不会违反最小/最大规则所以,我想听听关于如何在java应用程序中验证此类场景的建议。您发现的任何开源API都很有用。

如果我正确理解了您的问题,您基本上希望找出哪些间隔重叠。关于日期,我通常倾向于使用它,因为与现成的java日期相比,它有一个非常干净、漂亮的API

Joda time还提供了间隔和检查间隔是否重叠的方法:

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

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())));
}

有了这一点,您可以通过间隔检查它们是否重叠/相互作用,并检查它是否超过您的最大数量

你找到解决问题的办法了吗?