我有一个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。
答案 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())));
}
完成此操作后,您可以查看间隔并检查它们是否重叠/交互,并检查它是否超过最大数量。