2013-08-19 2 views
0

리소스 관리를 다루는 자바 웹 애플리케이션이 있습니다.날짜가있는 자바 유효성 확인

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 년을 2 년으로 할당했습니다.

IT 부서에서는 Jade와 robert가 전체 기간 동안 1로 계산되도록 부분 날짜를 할당했습니다. 리사가 끝까지. 함께 최대/최대 범위에있는 2입니다.

기본적으로 결산은 할당이 최소/최대 규칙을 위반하지 않도록해야합니다. 그래서 자바 애플리케이션에서 이러한 종류의 시나리오를 검증하는 방법에 대한 제안을 원합니다. 유용한 오픈 소스 API.

+0

문제의 해결책을 찾으셨습니까? – u6f6o

답변

1

귀하의 질문을 올바르게 이해 한 경우 기본적으로 어떤 간격이 겹치는 지 알아야합니다. 날짜에 관해서는, 보통 http://joda-time.sourceforge.net/을 사용하는 경향이 있는데, 이는 out-of-the-box java Date에 비해 매우 깨끗하고 멋진 API를 사용하기 때문입니다. http://joda-time.sourceforge.net/apidocs/org/joda/time/Interval.html#overlap(org.joda.time.ReadableInterval) 그럼에도 불구하고

나는 별 일 기준으로 확인하고 싶었다대로, 나를 위해 작동하지 않았다, 따라서 내가 나 자신을 구현했다 :

Joda 시간도 간격과 간격이 중복 여부를 확인하는 방법을 제공합니다 베이스 개체로 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()))); 
} 

장소에 데, 당신은 간격을 통과하고 그들이/상호 작용을 중복하고 당신의 최대 수를 초과하는지 확인하면 확인할 수 있습니다.