public static OwnedInterval getInterval(final Date ref, final Time time, final Owner owner) {
final String begins = time.getBegins();
final String ends = time.getEnds();
final String day = time.getDay().orElse(null);
if (isWeekly(time)) {
return new OwnedInterval(owner, getWeeklyTime(ref, day, begins), getWeeklyTime(ref, day, ends));
} else if (isMonthly(time)) {
return new OwnedInterval(owner, getMonthlyTime(ref, day, begins), getMonthlyTime(ref, day, ends));
} else if (isDaily(time)) {
return new OwnedInterval(owner, getDailyTime(ref, begins), getDailyTime(ref, ends));
} else {
return new OwnedInterval(owner, getSpecificTime(begins), getSpecificTime(ends));
}
}