If interval is opened (for example, some process is not finished yet) and end date might be null:
public static boolean isOverlapping(Date start1, Date end1, Date start2, Date end2)
{
return
((null == end2) || start1.before(end2)) &&
((null == end1) || start2.before(end1)) ;
}