List of usage examples for org.joda.time Interval getStart
public DateTime getStart()
From source file:net.sourceforge.fenixedu.domain.personnelSection.contracts.PersonContractSituation.java
License:Open Source License
public int getDaysInInterval(Interval intervalWithNextPeriods) { LocalDate beginDate = getBeginDate().isBefore(intervalWithNextPeriods.getStart().toLocalDate()) ? intervalWithNextPeriods.getStart().toLocalDate() : getBeginDate();/*from w w w . j a v a2 s . c o m*/ LocalDate endDate = getEndDate() == null || getEndDate().isAfter(intervalWithNextPeriods.getEnd().toLocalDate()) ? intervalWithNextPeriods.getEnd().toLocalDate() : getEndDate(); return Days.daysBetween(beginDate, endDate).getDays(); }
From source file:net.sourceforge.fenixedu.domain.personnelSection.contracts.PersonProfessionalRegime.java
License:Open Source License
public int getDaysInInterval(Interval interval) { LocalDate beginDate = getBeginDate().isBefore(interval.getStart().toLocalDate()) ? interval.getStart().toLocalDate() : getBeginDate();//from www . j a v a 2s. c o m LocalDate endDate = getEndDate() == null || getEndDate().isAfter(interval.getEnd().toLocalDate()) ? interval.getEnd().toLocalDate() : getEndDate(); return Days.daysBetween(beginDate, endDate).getDays(); }
From source file:net.sourceforge.fenixedu.domain.space.EventSpaceOccupation.java
License:Open Source License
public boolean alreadyWasOccupiedBy(final EventSpaceOccupation occupation) { if (this.equals(occupation)) { return true; }//from w w w . j a v a2s. c o m if (occupation.isLessonInstanceSpaceOccupation() || occupation.isWrittenEvaluationSpaceOccupation() || intersects(occupation.getBeginDate(), occupation.getEndDate())) { List<Interval> thisOccupationIntervals = getEventSpaceOccupationIntervals(occupation.getBeginDate(), occupation.getEndDate()); List<Interval> passedOccupationIntervals = occupation .getEventSpaceOccupationIntervals((YearMonthDay) null, (YearMonthDay) null); for (Interval interval : thisOccupationIntervals) { for (Interval passedInterval : passedOccupationIntervals) { if (interval.getStart().isBefore(passedInterval.getEnd()) && interval.getEnd().isAfter(passedInterval.getStart())) { return true; } } } } return false; }
From source file:net.sourceforge.fenixedu.domain.space.EventSpaceOccupation.java
License:Open Source License
public boolean alreadyWasOccupiedIn(final YearMonthDay startDate, final YearMonthDay endDate, final HourMinuteSecond startTime, final HourMinuteSecond endTime, final DiaSemana dayOfWeek, final FrequencyType frequency, final Boolean dailyFrequencyMarkSaturday, final Boolean dailyFrequencyMarkSunday) { startTime.setSecondOfMinute(0);//from w w w.jav a2 s . c o m endTime.setSecondOfMinute(0); if (intersects(startDate, endDate)) { List<Interval> thisOccupationIntervals = getEventSpaceOccupationIntervals(startDate, endDate); List<Interval> passedOccupationIntervals = generateEventSpaceOccupationIntervals(startDate, endDate, startTime, endTime, frequency, dayOfWeek, dailyFrequencyMarkSaturday, dailyFrequencyMarkSunday, null, null); for (Interval interval : thisOccupationIntervals) { for (Interval passedInterval : passedOccupationIntervals) { if (interval.getStart().isBefore(passedInterval.getEnd()) && interval.getEnd().isAfter(passedInterval.getStart())) { return true; } } } } return false; }
From source file:net.sourceforge.fenixedu.domain.space.EventSpaceOccupation.java
License:Open Source License
public static List<Interval> generateEventSpaceOccupationIntervals(YearMonthDay begin, final YearMonthDay end, final HourMinuteSecond beginTime, final HourMinuteSecond endTime, final FrequencyType frequency, final DiaSemana diaSemana, final Boolean dailyFrequencyMarkSaturday, final Boolean dailyFrequencyMarkSunday, final YearMonthDay startDateToSearch, final YearMonthDay endDateToSearch) { List<Interval> result = new ArrayList<Interval>(); begin = getBeginDateInSpecificWeekDay(diaSemana, begin); if (frequency == null) { if (!begin.isAfter(end) && (startDateToSearch == null || (!end.isBefore(startDateToSearch) && !begin.isAfter(endDateToSearch)))) { result.add(createNewInterval(begin, end, beginTime, endTime)); return result; }//from w w w.ja va 2 s. co m } else { int numberOfDaysToSum = frequency.getNumberOfDays(); while (true) { if (begin.isAfter(end)) { break; } if (startDateToSearch == null || (!begin.isBefore(startDateToSearch) && !begin.isAfter(endDateToSearch))) { Interval interval = createNewInterval(begin, begin, beginTime, endTime); if (!frequency.equals(FrequencyType.DAILY) || ((dailyFrequencyMarkSaturday || interval.getStart().getDayOfWeek() != SATURDAY_IN_JODA_TIME) && (dailyFrequencyMarkSunday || interval.getStart().getDayOfWeek() != SUNDAY_IN_JODA_TIME))) { result.add(interval); } } begin = begin.plusDays(numberOfDaysToSum); } } return result; }
From source file:net.sourceforge.fenixedu.domain.space.LessonSpaceOccupation.java
License:Open Source License
@Override public boolean isOccupiedByExecutionCourse(final ExecutionCourse executionCourse, final DateTime start, final DateTime end) { final Lesson lesson = getLesson(); if (lesson.getExecutionCourse() == executionCourse) { final List<Interval> intervals = getEventSpaceOccupationIntervals(start.toYearMonthDay(), end.toYearMonthDay().plusDays(1)); for (final Interval interval : intervals) { if (start.isBefore(interval.getEnd()) && end.isAfter(interval.getStart())) { return true; }/*ww w.j a va 2 s .c om*/ } } return false; }
From source file:net.sourceforge.fenixedu.domain.teacher.DegreeTeachingService.java
License:Open Source License
public double getTotalHoursAfter20AndSaturdays() { int minutesAfter20AndSaturday = 0; for (Lesson lesson : getShift().getAssociatedLessonsSet()) { for (Interval lessonInterval : lesson.getAllLessonIntervals()) { if (lessonInterval.getStart().getDayOfWeek() == DateTimeConstants.SATURDAY) { minutesAfter20AndSaturday += Minutes .minutesBetween(lessonInterval.getStart(), lessonInterval.getEnd()).getMinutes(); } else { DateTime dateTimeAfter20 = lessonInterval.getStart().toLocalDate() .toDateTime(new LocalTime(20, 0, 0)); if (dateTimeAfter20.isBefore(lessonInterval.getEnd())) { if (!dateTimeAfter20.isAfter(lessonInterval.getStart())) { minutesAfter20AndSaturday += Minutes .minutesBetween(lessonInterval.getStart(), lessonInterval.getEnd()) .getMinutes(); } else { minutesAfter20AndSaturday += Minutes .minutesBetween(dateTimeAfter20, lessonInterval.getEnd()).getMinutes(); }// w w w . j a v a 2 s.c om } } } } return (double) minutesAfter20AndSaturday / DateTimeConstants.MINUTES_PER_HOUR; }
From source file:net.sourceforge.fenixedu.domain.Teacher.java
License:Open Source License
private List<Interval> getNotOverlapedIntervals(Interval overlapInterval, Interval notYetOverlapedInterval) { List<Interval> intervals = new ArrayList<Interval>(); LocalDate overlapIntervalStart = overlapInterval.getStart().toLocalDate(); LocalDate overlapIntervalEnd = overlapInterval.getEnd().toLocalDate(); LocalDate notYetOverlapedIntervalStart = notYetOverlapedInterval.getStart().toLocalDate(); LocalDate notYetOverlapedIntervalEnd = notYetOverlapedInterval.getEnd().toLocalDate(); if (overlapIntervalStart.equals(notYetOverlapedIntervalStart) && !overlapIntervalEnd.equals(notYetOverlapedIntervalEnd)) { intervals.add(new Interval(overlapInterval.getEnd().plusDays(1), notYetOverlapedInterval.getEnd())); } else if (!overlapIntervalStart.equals(notYetOverlapedIntervalStart) && overlapIntervalEnd.equals(notYetOverlapedIntervalEnd)) { intervals/*from w ww . j a va2s. c o m*/ .add(new Interval(notYetOverlapedInterval.getStart(), overlapInterval.getStart().minusDays(1))); } else if (!overlapIntervalStart.equals(notYetOverlapedIntervalStart) && !overlapIntervalEnd.equals(notYetOverlapedIntervalEnd)) { intervals .add(new Interval(notYetOverlapedInterval.getStart(), overlapInterval.getStart().minusDays(1))); intervals.add(new Interval(overlapInterval.getEnd().plusDays(1), notYetOverlapedInterval.getEnd())); } return intervals; }
From source file:net.sourceforge.fenixedu.domain.Teacher.java
License:Open Source License
private boolean isSabbaticalForSemester(Interval exemptionInterval, Interval semesterPeriod) { double overlapPercentageThisSemester = calculateLessonsIntervalAndExemptionOverlapPercentage(semesterPeriod, exemptionInterval);//from www . ja v a 2s . c om if (overlapPercentageThisSemester == 1) { return true; } if (semesterPeriod.contains(exemptionInterval.getStart())) { return overlapPercentageThisSemester >= 0.5; } ExecutionSemester firstExecutionPeriod = ExecutionSemester.readByDateTime(exemptionInterval.getStart()); Interval firstExecutionPeriodInterval = new Interval( firstExecutionPeriod.getBeginDateYearMonthDay().toLocalDate().toDateTimeAtStartOfDay(), firstExecutionPeriod.getEndDateYearMonthDay().toLocalDate().toDateTimeAtStartOfDay()); double overlapPercentageFirstSemester = calculateLessonsIntervalAndExemptionOverlapPercentage( firstExecutionPeriodInterval, exemptionInterval); return overlapPercentageFirstSemester < 0.5; }
From source file:net.sourceforge.fenixedu.domain.Teacher.java
License:Open Source License
public boolean isActiveForSemester(ExecutionSemester executionSemester) { int minimumWorkingDays = 90; int activeDays = 0; Interval semesterInterval = new Interval( executionSemester.getBeginDateYearMonthDay().toLocalDate().toDateTimeAtStartOfDay(), executionSemester.getEndDateYearMonthDay().toLocalDate().toDateTimeAtStartOfDay()); PersonProfessionalData personProfessionalData = getPerson().getPersonProfessionalData(); if (personProfessionalData != null) { GiafProfessionalData giafProfessionalData = personProfessionalData.getGiafProfessionalData(); if (giafProfessionalData != null) { for (final PersonContractSituation situation : giafProfessionalData .getValidPersonContractSituations()) { if (situation.overlaps(semesterInterval) && situation.getProfessionalCategory() != null && situation.getProfessionalCategory().getCategoryType().equals(CategoryType.TEACHER)) { LocalDate beginDate = situation.getBeginDate() .isBefore(semesterInterval.getStart().toLocalDate()) ? semesterInterval.getStart().toLocalDate() : situation.getBeginDate(); LocalDate endDate = situation.getEndDate() == null || situation.getEndDate().isAfter(semesterInterval.getEnd().toLocalDate()) ? semesterInterval.getEnd().toLocalDate() : situation.getEndDate(); int days = new Interval(beginDate.toDateTimeAtStartOfDay(), endDate.toDateTimeAtStartOfDay()).toPeriod(PeriodType.days()).getDays() + 1; activeDays = activeDays + days; }//w w w.j a va 2 s . c om } } } return activeDays >= minimumWorkingDays; }