List of usage examples for org.joda.time Interval toDuration
public Duration toDuration()
From source file:TVShowTimelineMaker.timeConstraints.PeriodToDayConstraint.java
@Override public boolean ConstraintSatisfied() { boolean con = true; if (this.getType() == PeriodToDayType.SAME_AS_START) { if (this.mPeriodEvent instanceof OncePeriodEvent) { OncePeriodEvent mOncePeriodEvent = (OncePeriodEvent) this.mPeriodEvent; if (this.mDayEvent instanceof OnceDayEvent) { OnceDayEvent mOnceDayEvent = (OnceDayEvent) this.mDayEvent; con = con/* w w w . jav a 2s .c o m*/ && (mOncePeriodEvent.getEarliestPossibleStartTime() .equals(mOnceDayEvent.getEarliestPossibleStartTime())) && (mOncePeriodEvent.getLatestPossibleStartTime() .equals(mOnceDayEvent.getLatestPossibleEndTime())); } else if (this.mDayEvent instanceof YearlyDayEvent) { YearlyDayEvent mYearlyDayEvent = (YearlyDayEvent) this.mDayEvent; Set<DayOfYear> days = new java.util.HashSet<>(31); DateTime endDay = mOncePeriodEvent.getLatestPossibleStartTime().withHourOfDay(23); for (DateTime curDay = mOncePeriodEvent.getEarliestPossibleStartTime().withHourOfDay(1); curDay .isBefore(endDay); curDay = curDay.plusDays(1)) { days.add(DayOfYear.fromDateTime(curDay)); } con = con && days.containsAll(mYearlyDayEvent.getPossibleDays()); } } else if (this.mPeriodEvent instanceof YearlyPeriodEvent) { YearlyPeriodEvent mSeason = (YearlyPeriodEvent) this.mPeriodEvent; if (this.mDayEvent instanceof OnceDayEvent) { OnceDayEvent mOnceDayEvent = (OnceDayEvent) this.mDayEvent; Set<DayOfYear> days = new java.util.HashSet<>(31); DateTime endDay = mOnceDayEvent.getLatestPossibleEndTime().withHourOfDay(23); for (DateTime curDay = mOnceDayEvent.getEarliestPossibleStartTime().withHourOfDay(1); curDay .isBefore(endDay); curDay = curDay.plusDays(1)) { days.add(DayOfYear.fromDateTime(curDay)); } con = con && days.containsAll(mSeason.getStartPossibleDays()); } else if (this.mDayEvent instanceof YearlyDayEvent) { YearlyDayEvent mYearlyDayEvent = (YearlyDayEvent) this.mDayEvent; con = con && mSeason.getStartPossibleDays().containsAll(mYearlyDayEvent.getPossibleDays()) && mYearlyDayEvent.getPossibleDays().containsAll(mSeason.getStartPossibleDays()); } } } else if (this.getType() == PeriodToDayType.SAME_AS_END) { if (this.mPeriodEvent instanceof OncePeriodEvent) { OncePeriodEvent mOncePeriodEvent = (OncePeriodEvent) this.mPeriodEvent; if (this.mDayEvent instanceof OnceDayEvent) { OnceDayEvent mOnceDayEvent = (OnceDayEvent) this.mDayEvent; con = con && (mOncePeriodEvent.getEarliestPossibleEndTime() .equals(mOnceDayEvent.getEarliestPossibleStartTime())) && (mOncePeriodEvent.getLatestPossibleEndTime() .equals(mOnceDayEvent.getLatestPossibleEndTime())); } else if (this.mDayEvent instanceof YearlyDayEvent) { YearlyDayEvent mYearlyDayEvent = (YearlyDayEvent) this.mDayEvent; Set<DayOfYear> days = new java.util.HashSet<>(31); DateTime endDay = mOncePeriodEvent.getLatestPossibleEndTime().withHourOfDay(23); for (DateTime curDay = mOncePeriodEvent.getEarliestPossibleEndTime().withHourOfDay(1); curDay .isBefore(endDay); curDay = curDay.plusDays(1)) { days.add(DayOfYear.fromDateTime(curDay)); } con = con && days.containsAll(mYearlyDayEvent.getPossibleDays()); } } else if (this.mPeriodEvent instanceof YearlyPeriodEvent) { YearlyPeriodEvent mSeason = (YearlyPeriodEvent) this.mPeriodEvent; if (this.mDayEvent instanceof OnceDayEvent) { OnceDayEvent mOnceDayEvent = (OnceDayEvent) this.mDayEvent; Set<DayOfYear> days = new java.util.HashSet<>(31); DateTime endDay = mOnceDayEvent.getLatestPossibleEndTime().withHourOfDay(23); for (DateTime curDay = mOnceDayEvent.getEarliestPossibleStartTime().withHourOfDay(1); curDay .isBefore(endDay); curDay = curDay.plusDays(1)) { days.add(DayOfYear.fromDateTime(curDay)); } con = con && days.containsAll(mSeason.getEndPossibleDays()); } else if (this.mDayEvent instanceof YearlyDayEvent) { YearlyDayEvent mYearlyDayEvent = (YearlyDayEvent) this.mDayEvent; con = con && mSeason.getEndPossibleDays().containsAll(mYearlyDayEvent.getPossibleDays()) && mYearlyDayEvent.getPossibleDays().containsAll(mSeason.getEndPossibleDays()); } } } else if (this.getType() == PeriodToDayType.MIDDLE) { if (this.mPeriodEvent instanceof OncePeriodEvent) { OncePeriodEvent mOncePeriodEvent = (OncePeriodEvent) this.mPeriodEvent; org.joda.time.Interval mMiddleStartInterval = new org.joda.time.Interval( mOncePeriodEvent.getEarliestPossibleStartTime(), mOncePeriodEvent.getEarliestPossibleEndTime()); org.joda.time.Interval mMiddleEndInterval = new org.joda.time.Interval( mOncePeriodEvent.getLatestPossibleStartTime(), mOncePeriodEvent.getLatestPossibleEndTime()); int startDays = mMiddleStartInterval.toDuration().toStandardDays().getDays(); int endDays = mMiddleEndInterval.toDuration().toStandardDays().getDays(); DateTime MiddleStartTime = mOncePeriodEvent.getEarliestPossibleStartTime().plusDays(startDays / 2) .withHourOfDay(1); DateTime MiddleEndTime = mOncePeriodEvent.getLatestPossibleEndTime().minusDays(endDays / 2) .withHourOfDay(23); if (this.mDayEvent instanceof OnceDayEvent) { OnceDayEvent mOnceDayEvent = (OnceDayEvent) this.mDayEvent; con = con && (MiddleStartTime.equals(mOnceDayEvent.getEarliestPossibleStartTime())) && (MiddleEndTime.equals(mOnceDayEvent.getLatestPossibleEndTime())); } else if (this.mDayEvent instanceof YearlyDayEvent) { YearlyDayEvent mYearlyDayEvent = (YearlyDayEvent) this.mDayEvent; Set<DayOfYear> days = new java.util.HashSet<>(31); DateTime endDay = MiddleEndTime.withHourOfDay(23); for (DateTime curDay = MiddleStartTime.withHourOfDay(1); curDay .isBefore(endDay); curDay = curDay.plusDays(1)) { days.add(DayOfYear.fromDateTime(curDay)); } con = con && days.containsAll(mYearlyDayEvent.getPossibleDays()); } } else if (this.mPeriodEvent instanceof YearlyPeriodEvent) { YearlyPeriodEvent mSeason = (YearlyPeriodEvent) this.mPeriodEvent; Set<DayOfYear> days1 = new java.util.HashSet<>( Math.max(mSeason.getStartPossibleDays().size(), mSeason.getEndPossibleDays().size())); //todo:make this mutiThreaded for (DayOfYear curDay1 : mSeason.getStartPossibleDays()) { for (DayOfYear curDay2 : mSeason.getEndPossibleDays()) { int diff = curDay1.diff(curDay2); int move = diff / 2; int rem = diff % 2; days1.add(curDay1.plusDays(move)); if (rem == 1) { days1.add(curDay1.plusDays(move + 1)); } } } if (this.mDayEvent instanceof OnceDayEvent) { OnceDayEvent mOnceDayEvent = (OnceDayEvent) this.mDayEvent; Set<DayOfYear> days2 = new java.util.HashSet<>(31); DateTime endDay = mOnceDayEvent.getLatestPossibleEndTime().withHourOfDay(23); for (DateTime curDay = mOnceDayEvent.getEarliestPossibleStartTime().withHourOfDay(1); curDay .isBefore(endDay); curDay = curDay.plusDays(1)) { days2.add(DayOfYear.fromDateTime(curDay)); } con = con && days2.containsAll(days1); } else if (this.mDayEvent instanceof YearlyDayEvent) { YearlyDayEvent mYearlyDayEvent = (YearlyDayEvent) this.mDayEvent; con = con && days1.containsAll(mYearlyDayEvent.getPossibleDays()) && mYearlyDayEvent.getPossibleDays().containsAll(days1); } } } return con; }
From source file:TVShowTimelineMaker.timeConstraints.PeriodToDayConstraint.java
@Override public boolean applyConstraint() { boolean changed = false; if (this.getType() == PeriodToDayType.SAME_AS_START) { if (this.mPeriodEvent instanceof OncePeriodEvent) { OncePeriodEvent mOncePeriodEvent = (OncePeriodEvent) this.mPeriodEvent; if (this.mDayEvent instanceof OnceDayEvent) { OnceDayEvent mOnceDayEvent = (OnceDayEvent) this.mDayEvent; if (mOncePeriodEvent.getEarliestPossibleStartTime() .isBefore(mOnceDayEvent.getEarliestPossibleStartTime())) { mOncePeriodEvent//from w ww . j a va 2 s.com .setEarliestPossibleDateForStart(mOnceDayEvent.getEarliestPossibleStartTime()); changed = true; } if (mOnceDayEvent.getEarliestPossibleStartTime() .isBefore(mOncePeriodEvent.getEarliestPossibleStartTime())) { mOnceDayEvent.setEarliestPossibleDate(mOncePeriodEvent.getEarliestPossibleStartTime()); changed = true; } if (mOncePeriodEvent.getLatestPossibleStartTime() .isAfter(mOnceDayEvent.getLatestPossibleEndTime())) { mOncePeriodEvent.setLatestPossibleDateForStart(mOnceDayEvent.getLatestPossibleEndTime()); changed = true; } if (mOnceDayEvent.getLatestPossibleEndTime() .isAfter(mOncePeriodEvent.getLatestPossibleStartTime())) { mOnceDayEvent.setLatestPossibleDate(mOncePeriodEvent.getLatestPossibleStartTime()); changed = true; } } else if (this.mDayEvent instanceof YearlyDayEvent) { YearlyDayEvent mYearlyDayEvent = (YearlyDayEvent) this.mDayEvent; Set<DayOfYear> days = new java.util.HashSet<>(31); DateTime endDay = mOncePeriodEvent.getLatestPossibleStartTime().withHourOfDay(23); for (DateTime curDay = mOncePeriodEvent.getEarliestPossibleStartTime().withHourOfDay(1); curDay .isBefore(endDay); curDay = curDay.plusDays(1)) { days.add(DayOfYear.fromDateTime(curDay)); } if (!days.containsAll(mYearlyDayEvent.getPossibleDays())) { mYearlyDayEvent.getPossibleDays().retainAll(days); changed = true; } } } else if (this.mPeriodEvent instanceof YearlyPeriodEvent) { YearlyPeriodEvent mSeason = (YearlyPeriodEvent) this.mPeriodEvent; if (this.mDayEvent instanceof OnceDayEvent) { OnceDayEvent mOnceDayEvent = (OnceDayEvent) this.mDayEvent; Set<DayOfYear> days = new java.util.HashSet<>(31); DateTime endDay = mOnceDayEvent.getLatestPossibleEndTime().withHourOfDay(23); for (DateTime curDay = mOnceDayEvent.getEarliestPossibleStartTime().withHourOfDay(1); curDay .isBefore(endDay); curDay = curDay.plusDays(1)) { days.add(DayOfYear.fromDateTime(curDay)); } if (!days.containsAll(mSeason.getStartPossibleDays())) { mSeason.getStartPossibleDays().retainAll(days); changed = true; } if (!mSeason.getStartPossibleDays().isEmpty()) { int startYear = mOnceDayEvent.getEarliestPossibleStartTime().getYear(); DayOfYear curDayOfYear = DayOfYear .fromDateTime(mOnceDayEvent.getEarliestPossibleStartTime()); while (!mSeason.getStartPossibleDays().contains(curDayOfYear)) { curDayOfYear = curDayOfYear.plusDays(1); if (curDayOfYear.equals(DayOfYear.startOfYear)) { startYear++; } } DateTime oldDateTime = mOnceDayEvent.getEarliestPossibleStartTime(); mOnceDayEvent.setEarliestPossibleDate(curDayOfYear.toDateTime().withYear(startYear)); if (!mOnceDayEvent.getEarliestPossibleStartTime().equals(oldDateTime)) { changed = true; } int endYear = mOnceDayEvent.getLatestPossibleEndTime().getYear(); curDayOfYear = DayOfYear.fromDateTime(mOnceDayEvent.getLatestPossibleEndTime()); while (!mSeason.getStartPossibleDays().contains(curDayOfYear)) { curDayOfYear = curDayOfYear.plusDays(-1); if (curDayOfYear.equals(DayOfYear.endOfYear)) { endYear--; } } oldDateTime = mOnceDayEvent.getLatestPossibleEndTime(); mOnceDayEvent.setLatestPossibleDate(curDayOfYear.toDateTime().withYear(endYear)); if (!mOnceDayEvent.getLatestPossibleEndTime().equals(oldDateTime)) { changed = true; } } } else if (this.mDayEvent instanceof YearlyDayEvent) { YearlyDayEvent mYearlyDayEvent = (YearlyDayEvent) this.mDayEvent; if (mSeason.getStartPossibleDays().containsAll(mYearlyDayEvent.getPossibleDays())) { mYearlyDayEvent.getPossibleDays().retainAll(mSeason.getStartPossibleDays()); changed = true; } if (mYearlyDayEvent.getPossibleDays().containsAll(mSeason.getStartPossibleDays())) { mSeason.getStartPossibleDays().retainAll(mYearlyDayEvent.getPossibleDays()); changed = true; } } } } else if (this.getType() == PeriodToDayType.SAME_AS_END) { if (this.mPeriodEvent instanceof OncePeriodEvent) { OncePeriodEvent mOncePeriodEvent = (OncePeriodEvent) this.mPeriodEvent; if (this.mDayEvent instanceof OnceDayEvent) { OnceDayEvent mOnceDayEvent = (OnceDayEvent) this.mDayEvent; if (mOncePeriodEvent.getEarliestPossibleEndTime() .isBefore(mOnceDayEvent.getEarliestPossibleStartTime())) { mOncePeriodEvent .setEarliestPossibleDateForEnd(mOnceDayEvent.getEarliestPossibleStartTime()); changed = true; } if (mOnceDayEvent.getEarliestPossibleStartTime() .isBefore(mOncePeriodEvent.getEarliestPossibleEndTime())) { mOnceDayEvent.setEarliestPossibleDate(mOncePeriodEvent.getEarliestPossibleEndTime()); changed = true; } if (mOncePeriodEvent.getLatestPossibleEndTime() .isAfter(mOnceDayEvent.getLatestPossibleEndTime())) { mOncePeriodEvent.setLatestPossibleDateForEnd(mOnceDayEvent.getLatestPossibleEndTime()); changed = true; } if (mOnceDayEvent.getLatestPossibleEndTime() .isAfter(mOncePeriodEvent.getLatestPossibleEndTime())) { mOnceDayEvent.setLatestPossibleDate(mOncePeriodEvent.getLatestPossibleEndTime()); changed = true; } } else if (this.mDayEvent instanceof YearlyDayEvent) { YearlyDayEvent mYearlyDayEvent = (YearlyDayEvent) this.mDayEvent; Set<DayOfYear> days = new java.util.HashSet<>(31); DateTime endDay = mOncePeriodEvent.getLatestPossibleEndTime().withHourOfDay(23); for (DateTime curDay = mOncePeriodEvent.getEarliestPossibleEndTime().withHourOfDay(1); curDay .isBefore(endDay); curDay = curDay.plusDays(1)) { days.add(DayOfYear.fromDateTime(curDay)); } if (!days.containsAll(mYearlyDayEvent.getPossibleDays())) { mYearlyDayEvent.getPossibleDays().retainAll(days); changed = true; } } } else if (this.mPeriodEvent instanceof YearlyPeriodEvent) { YearlyPeriodEvent mSeason = (YearlyPeriodEvent) this.mPeriodEvent; if (this.mDayEvent instanceof OnceDayEvent) { OnceDayEvent mOnceDayEvent = (OnceDayEvent) this.mDayEvent; Set<DayOfYear> days = new java.util.HashSet<>(31); DateTime endDay = mOnceDayEvent.getLatestPossibleEndTime().withHourOfDay(23); for (DateTime curDay = mOnceDayEvent.getEarliestPossibleStartTime().withHourOfDay(1); curDay .isBefore(endDay); curDay = curDay.plusDays(1)) { days.add(DayOfYear.fromDateTime(curDay)); } if (!days.containsAll(mSeason.getEndPossibleDays())) { mSeason.getEndPossibleDays().retainAll(days); changed = true; } if (!mSeason.getEndPossibleDays().isEmpty()) { int startYear = mOnceDayEvent.getEarliestPossibleStartTime().getYear(); DayOfYear curDayOfYear = DayOfYear .fromDateTime(mOnceDayEvent.getEarliestPossibleStartTime()); while (!mSeason.getEndPossibleDays().contains(curDayOfYear)) { curDayOfYear = curDayOfYear.plusDays(1); if (curDayOfYear.equals(DayOfYear.startOfYear)) { startYear++; } } DateTime oldDateTime = mOnceDayEvent.getEarliestPossibleStartTime(); mOnceDayEvent.setEarliestPossibleDate(curDayOfYear.toDateTime().withYear(startYear)); if (!mOnceDayEvent.getEarliestPossibleStartTime().equals(oldDateTime)) { changed = true; } int endYear = mOnceDayEvent.getLatestPossibleEndTime().getYear(); curDayOfYear = DayOfYear.fromDateTime(mOnceDayEvent.getLatestPossibleEndTime()); while (!mSeason.getEndPossibleDays().contains(curDayOfYear)) { curDayOfYear = curDayOfYear.plusDays(-1); if (curDayOfYear.equals(DayOfYear.endOfYear)) { endYear--; } } oldDateTime = mOnceDayEvent.getLatestPossibleEndTime(); mOnceDayEvent.setLatestPossibleDate(curDayOfYear.toDateTime().withYear(endYear)); if (!mOnceDayEvent.getLatestPossibleEndTime().equals(oldDateTime)) { changed = true; } } } else if (this.mDayEvent instanceof YearlyDayEvent) { YearlyDayEvent mYearlyDayEvent = (YearlyDayEvent) this.mDayEvent; if (mSeason.getEndPossibleDays().containsAll(mYearlyDayEvent.getPossibleDays())) { mYearlyDayEvent.getPossibleDays().retainAll(mSeason.getEndPossibleDays()); changed = true; } if (mYearlyDayEvent.getPossibleDays().containsAll(mSeason.getEndPossibleDays())) { mSeason.getEndPossibleDays().retainAll(mYearlyDayEvent.getPossibleDays()); changed = true; } } } } else if (this.getType() == PeriodToDayType.MIDDLE) { if (this.mPeriodEvent instanceof OncePeriodEvent) { OncePeriodEvent mOncePeriodEvent = (OncePeriodEvent) this.mPeriodEvent; org.joda.time.Interval mMiddleStartInterval = new org.joda.time.Interval( mOncePeriodEvent.getEarliestPossibleStartTime(), mOncePeriodEvent.getEarliestPossibleEndTime()); org.joda.time.Interval mMiddleEndInterval = new org.joda.time.Interval( mOncePeriodEvent.getLatestPossibleStartTime(), mOncePeriodEvent.getLatestPossibleEndTime()); int startDays = mMiddleStartInterval.toDuration().toStandardDays().getDays(); int endDays = mMiddleEndInterval.toDuration().toStandardDays().getDays(); DateTime MiddleStartTime = mOncePeriodEvent.getEarliestPossibleStartTime().plusDays(startDays / 2) .withHourOfDay(1); DateTime MiddleEndTime = mOncePeriodEvent.getLatestPossibleEndTime().minusDays(endDays / 2) .withHourOfDay(23); if (this.mDayEvent instanceof OnceDayEvent) { OnceDayEvent mOnceDayEvent = (OnceDayEvent) this.mDayEvent; if (mOnceDayEvent.getEarliestPossibleStartTime().isBefore(MiddleStartTime)) { mOnceDayEvent.setEarliestPossibleDate(MiddleStartTime); changed = true; } if (mOnceDayEvent.getLatestPossibleEndTime().isAfter(MiddleEndTime)) { mOnceDayEvent.setLatestPossibleDate(MiddleEndTime); changed = true; } //Todo: change mOncePeriodEvent } else if (this.mDayEvent instanceof YearlyDayEvent) { YearlyDayEvent mYearlyDayEvent = (YearlyDayEvent) this.mDayEvent; Set<DayOfYear> days = new java.util.HashSet<>(31); DateTime endDay = MiddleEndTime.withHourOfDay(23); for (DateTime curDay = MiddleStartTime.withHourOfDay(1); curDay .isBefore(endDay); curDay = curDay.plusDays(1)) { days.add(DayOfYear.fromDateTime(curDay)); } if (days.containsAll(mYearlyDayEvent.getPossibleDays())) { mYearlyDayEvent.getPossibleDays().retainAll(days); changed = true; } //Todo: change mOncePeriodEvent } } else if (this.mPeriodEvent instanceof YearlyPeriodEvent) { YearlyPeriodEvent mSeason = (YearlyPeriodEvent) this.mPeriodEvent; Set<DayOfYear> days1 = new java.util.HashSet<>( Math.max(mSeason.getStartPossibleDays().size(), mSeason.getEndPossibleDays().size())); //todo:make this mutiThreaded for (DayOfYear curDay1 : mSeason.getStartPossibleDays()) { for (DayOfYear curDay2 : mSeason.getEndPossibleDays()) { int diff = curDay1.diff(curDay2); int move = diff / 2; int rem = diff % 2; days1.add(curDay1.plusDays(move)); if (rem == 1) { days1.add(curDay1.plusDays(move + 1)); } } } if (this.mDayEvent instanceof OnceDayEvent) { OnceDayEvent mOnceDayEvent = (OnceDayEvent) this.mDayEvent; Set<DayOfYear> days2 = new java.util.HashSet<>(31); DateTime endDay = mOnceDayEvent.getLatestPossibleEndTime().withHourOfDay(23); for (DateTime curDay = mOnceDayEvent.getEarliestPossibleStartTime().withHourOfDay(1); curDay .isBefore(endDay); curDay = curDay.plusDays(1)) { days2.add(DayOfYear.fromDateTime(curDay)); } //TODO: change mSeason if (!days1.containsAll(days2)) { if (!days1.isEmpty()) { int startYear = mOnceDayEvent.getEarliestPossibleStartTime().getYear(); DayOfYear curDayOfYear = DayOfYear .fromDateTime(mOnceDayEvent.getEarliestPossibleStartTime()); while (!days1.contains(curDayOfYear)) { curDayOfYear = curDayOfYear.plusDays(1); if (curDayOfYear.equals(DayOfYear.startOfYear)) { startYear++; } } DateTime oldDateTime = mOnceDayEvent.getEarliestPossibleStartTime(); mOnceDayEvent.setEarliestPossibleDate(curDayOfYear.toDateTime().withYear(startYear)); if (!mOnceDayEvent.getEarliestPossibleStartTime().equals(oldDateTime)) { changed = true; } int endYear = mOnceDayEvent.getLatestPossibleEndTime().getYear(); curDayOfYear = DayOfYear.fromDateTime(mOnceDayEvent.getLatestPossibleEndTime()); while (!days1.contains(curDayOfYear)) { curDayOfYear = curDayOfYear.plusDays(-1); if (curDayOfYear.equals(DayOfYear.endOfYear)) { endYear--; } } oldDateTime = mOnceDayEvent.getLatestPossibleEndTime(); mOnceDayEvent.setLatestPossibleDate(curDayOfYear.toDateTime().withYear(endYear)); if (!mOnceDayEvent.getLatestPossibleEndTime().equals(oldDateTime)) { changed = true; } } } } else if (this.mDayEvent instanceof YearlyDayEvent) { YearlyDayEvent mYearlyDayEvent = (YearlyDayEvent) this.mDayEvent; if (!days1.containsAll(mYearlyDayEvent.getPossibleDays())) { mYearlyDayEvent.getPossibleDays().retainAll(days1); changed = true; } //TODO: change mSeason if (mYearlyDayEvent.getPossibleDays().containsAll(days1)) { } } } } return changed; }
From source file:TVShowTimelineMaker.timeConstraints.PeriodToDayConstraint.java
@Override public boolean complexApplyConstraint() { boolean changed = this.applyConstraint(); if (this.mDayEvent.isMarkedForComplexEval() && (!this.mPeriodEvent.isMarkedForComplexEval())) { this.mPeriodEvent.setUpForComplexEval(); }/*from w ww. j a v a 2 s. c o m*/ if ((!this.mDayEvent.isMarkedForComplexEval()) && (this.mPeriodEvent.isMarkedForComplexEval())) { this.mDayEvent.setUpForComplexEval(); } if (this.mDayEvent.isMarkedForComplexEval() && this.mPeriodEvent.isMarkedForComplexEval()) { if (this.getType() == PeriodToDayType.SAME_AS_START) { SameTimeAsDayAcceptor startAcceptor = new SameTimeAsDayAcceptor(); startAcceptor.add(this.mDayEvent); startAcceptor.add(this.mPeriodEvent.getStart()); if (this.mPeriodEvent instanceof OncePeriodEvent) { java.util.Iterator<DateTime> i = ((OncePeriodEvent) this.mPeriodEvent).getStartPossibleDays() .iterator(); while (i.hasNext()) { DateTime curDay = i.next(); if (!startAcceptor.accept(curDay)) { i.remove(); } else if (!startAcceptor.accept2(curDay)) { i.remove(); } } } else if (this.mPeriodEvent instanceof YearlyPeriodEvent) { java.util.Iterator<DayOfYear> i = ((YearlyPeriodEvent) this.mPeriodEvent).getStartPossibleDays() .iterator(); while (i.hasNext()) { DayOfYear curDay = i.next(); if (!startAcceptor.accept(curDay)) { i.remove(); } else if (!startAcceptor.accept2(curDay)) { i.remove(); } } } if (this.mDayEvent instanceof OnceDayEvent) { java.util.Iterator<DateTime> i = ((OnceDayEvent) this.mDayEvent).getPossibleDays().iterator(); while (i.hasNext()) { DateTime curDay = i.next(); if (!startAcceptor.accept(curDay)) { i.remove(); } else if (!startAcceptor.accept2(curDay)) { i.remove(); } } } else if (this.mDayEvent instanceof YearlyDayEvent) { java.util.Iterator<DayOfYear> i = ((YearlyDayEvent) this.mDayEvent).getPossibleDays() .iterator(); while (i.hasNext()) { DayOfYear curDay = i.next(); if (!startAcceptor.accept(curDay)) { i.remove(); } else if (!startAcceptor.accept2(curDay)) { i.remove(); } } } } else if (this.getType() == PeriodToDayType.SAME_AS_END) { SameTimeAsDayAcceptor endAcceptor = new SameTimeAsDayAcceptor(); endAcceptor.add(this.mDayEvent); endAcceptor.add(this.mPeriodEvent.getEnd()); if (this.mPeriodEvent instanceof OncePeriodEvent) { java.util.Iterator<DateTime> i = ((OncePeriodEvent) this.mPeriodEvent).getEndPossibleDays() .iterator(); while (i.hasNext()) { DateTime curDay = i.next(); if (!endAcceptor.accept(curDay)) { i.remove(); } else if (!endAcceptor.accept2(curDay)) { i.remove(); } } } else if (this.mPeriodEvent instanceof YearlyPeriodEvent) { java.util.Iterator<DayOfYear> i = ((YearlyPeriodEvent) this.mPeriodEvent).getEndPossibleDays() .iterator(); while (i.hasNext()) { DayOfYear curDay = i.next(); if (!endAcceptor.accept(curDay)) { i.remove(); } else if (!endAcceptor.accept2(curDay)) { i.remove(); } } } if (this.mDayEvent instanceof OnceDayEvent) { java.util.Iterator<DateTime> i = ((OnceDayEvent) this.mDayEvent).getPossibleDays().iterator(); while (i.hasNext()) { DateTime curDay = i.next(); if (!endAcceptor.accept(curDay)) { i.remove(); } else if (!endAcceptor.accept2(curDay)) { i.remove(); } } } else if (this.mDayEvent instanceof YearlyDayEvent) { java.util.Iterator<DayOfYear> i = ((YearlyDayEvent) this.mDayEvent).getPossibleDays() .iterator(); while (i.hasNext()) { DayOfYear curDay = i.next(); if (!endAcceptor.accept(curDay)) { i.remove(); } else if (!endAcceptor.accept2(curDay)) { i.remove(); } } } } else if (this.getType() == PeriodToDayType.MIDDLE) { if (this.mPeriodEvent instanceof OncePeriodEvent) { OncePeriodEvent mOncePeriodEvent = (OncePeriodEvent) this.mPeriodEvent; org.joda.time.Interval mMiddleStartInterval = new org.joda.time.Interval( mOncePeriodEvent.getEarliestPossibleStartTime(), mOncePeriodEvent.getEarliestPossibleEndTime()); org.joda.time.Interval mMiddleEndInterval = new org.joda.time.Interval( mOncePeriodEvent.getLatestPossibleStartTime(), mOncePeriodEvent.getLatestPossibleEndTime()); int startDays = mMiddleStartInterval.toDuration().toStandardDays().getDays(); int endDays = mMiddleEndInterval.toDuration().toStandardDays().getDays(); DateTime MiddleStartTime = mOncePeriodEvent.getEarliestPossibleStartTime() .plusDays(startDays / 2).withHourOfDay(1); DateTime MiddleEndTime = mOncePeriodEvent.getLatestPossibleEndTime().minusDays(endDays / 2) .withHourOfDay(23); Set<DateTime> days1 = new java.util.HashSet<>(31); for (DateTime curDay = MiddleStartTime; curDay .isBefore(MiddleEndTime); curDay = curDay.plusDays(1)) { days1.add(curDay); } if (this.mDayEvent instanceof OnceDayEvent) { OnceDayEvent mOnceDayEvent = (OnceDayEvent) this.mDayEvent; if (!days1.containsAll(mOnceDayEvent.getPossibleDays())) { mOnceDayEvent.getPossibleDays().retainAll(days1); } //Todo: change mOncePeriodEvent } else if (this.mDayEvent instanceof YearlyDayEvent) { YearlyDayEvent mYearlyDayEvent = (YearlyDayEvent) this.mDayEvent; Set<DayOfYear> days2 = new java.util.HashSet<>(31); DateTime endDay = MiddleEndTime.withHourOfDay(23); for (DateTime curDay = MiddleStartTime.withHourOfDay(1); curDay .isBefore(endDay); curDay = curDay.plusDays(1)) { days2.add(DayOfYear.fromDateTime(curDay)); } if (days2.containsAll(mYearlyDayEvent.getPossibleDays())) { mYearlyDayEvent.getPossibleDays().retainAll(days2); } //Todo: change mOncePeriodEvent } } else if (this.mPeriodEvent instanceof YearlyPeriodEvent) { YearlyPeriodEvent mSeason = (YearlyPeriodEvent) this.mPeriodEvent; Set<DayOfYear> days1 = new java.util.HashSet<>( Math.max(mSeason.getStartPossibleDays().size(), mSeason.getEndPossibleDays().size())); //todo:make this mutiThreaded for (DayOfYear curDay1 : mSeason.getStartPossibleDays()) { for (DayOfYear curDay2 : mSeason.getEndPossibleDays()) { int diff = curDay1.diff(curDay2); int move = diff / 2; int rem = diff % 2; days1.add(curDay1.plusDays(move)); if (rem == 1) { days1.add(curDay1.plusDays(move + 1)); } } } if (this.mDayEvent instanceof OnceDayEvent) { OnceDayEvent mOnceDayEvent = (OnceDayEvent) this.mDayEvent; Set<DayOfYear> days2 = new java.util.HashSet<>(31); for (DateTime curDay : mOnceDayEvent.getPossibleDays()) { days2.add(DayOfYear.fromDateTime(curDay)); } //TODO: change mSeason if (!days1.containsAll(days2)) { Iterator<DateTime> onceEventIterator = mOnceDayEvent.getPossibleDays().iterator(); while (onceEventIterator.hasNext()) { DateTime curDay = onceEventIterator.next(); if (!days1.contains(DayOfYear.fromDateTime(curDay))) { onceEventIterator.remove(); } } } } else if (this.mDayEvent instanceof YearlyDayEvent) { YearlyDayEvent mYearlyDayEvent = (YearlyDayEvent) this.mDayEvent; if (days1.containsAll(mYearlyDayEvent.getPossibleDays())) { mYearlyDayEvent.getPossibleDays().retainAll(days1); } //TODO: change mSeason if (mYearlyDayEvent.getPossibleDays().containsAll(days1)) { } } } } } return changed; }
From source file:Utilidades.Auxi.java
public static Cupo calcularTiempoMoto(Cupo cupo) { long gracia = 0; try {/*w w w.j ava 2 s .c om*/ gracia = Long.valueOf(Conection.getConfiguraciones().findConfiguraciones("gracia").getValor()); } catch (Exception e) { e.printStackTrace(); } gracia *= 1000 * 60; Interval intervalo = new Interval(cupo.getSalida().getTime(), cupo.getSalida().getTime()); if (cupo.getSalida().getTime() - gracia > cupo.getCupoPK().getIngreso().getTime()) { intervalo = new Interval(cupo.getCupoPK().getIngreso().getTime(), cupo.getSalida().getTime() - gracia); } long horas = intervalo.toDuration().getStandardHours(); long minutos = intervalo.toDuration().getStandardMinutes(); minutos -= horas * 60; Configuraciones mediaHora, unaHora, porHora; int tipo = selector(cupo.getPlaca().getPlaca()); switch (tipo) { case 1: mediaHora = Conection.getConfiguraciones().findConfiguraciones("mediaHoraMoto"); unaHora = Conection.getConfiguraciones().findConfiguraciones("unaHoraMoto"); porHora = Conection.getConfiguraciones().findConfiguraciones("porHoraMoto"); break; case 2: mediaHora = Conection.getConfiguraciones().findConfiguraciones("mediaHoraCarro"); unaHora = Conection.getConfiguraciones().findConfiguraciones("unaHoraCarro"); porHora = Conection.getConfiguraciones().findConfiguraciones("porHoraCarro"); break; case 3: mediaHora = Conection.getConfiguraciones().findConfiguraciones("mediaHoraMoto"); unaHora = Conection.getConfiguraciones().findConfiguraciones("unaHoraMoto"); porHora = Conection.getConfiguraciones().findConfiguraciones("porHoraMoto"); break; default: mediaHora = new Configuraciones("mhDef", "0"); unaHora = new Configuraciones("uhDef", "0"); porHora = new Configuraciones("phDef", "0"); break; } cupo.setHoras(horas); cupo.setMinutos(minutos); if (horas == 0 && minutos == 0) { cupo.setCobroSugerido(0); } else { if (horas == 0) { if (minutos < 30) { cupo.setCobroSugerido(Long.parseLong(mediaHora.getValor())); } else { cupo.setCobroSugerido(Long.parseLong(unaHora.getValor())); } } else if (minutos < 30) { if (tipo == 2) { cupo.setCobroSugerido( (Long.parseLong(porHora.getValor()) * horas) + Long.parseLong(mediaHora.getValor())); } else { cupo.setCobroSugerido(Long.parseLong(porHora.getValor()) * (horas + 1)); } } else { cupo.setCobroSugerido(Long.parseLong(porHora.getValor()) * (horas + 1)); } } return cupo; }
From source file:Utilidades.Auxi.java
public static String[] calcularTiempoMotoTentativo(Cupo cupo) { long gracia = 0, entrada = cupo.getCupoPK().getIngreso().getTime(), salida = new Date().getTime() + 1; try {/*from ww w.ja v a2 s . co m*/ gracia = Long.valueOf(Conection.getConfiguraciones().findConfiguraciones("gracia").getValor()); } catch (Exception e) { e.printStackTrace(); } gracia *= 1000 * 60; Interval intervalo = new Interval(salida, salida); if (salida - gracia > entrada) { intervalo = new Interval(entrada, salida - gracia); } Period period = intervalo.toPeriod(); PeriodFormatter minutesAndSeconds = new PeriodFormatterBuilder().printZeroAlways().appendHours() .appendSeparator(":").appendMinutes().toFormatter(); String result = minutesAndSeconds.print(period); long horas = intervalo.toDuration().getStandardHours(); long minutos = intervalo.toDuration().getStandardMinutes(); long cobro = 0; minutos -= horas * 60; Configuraciones mediaHora, unaHora, porHora; int tipo = selector(cupo.getPlaca().getPlaca()); switch (tipo) { case 1: mediaHora = Conection.getConfiguraciones().findConfiguraciones("mediaHoraMoto"); unaHora = Conection.getConfiguraciones().findConfiguraciones("unaHoraMoto"); porHora = Conection.getConfiguraciones().findConfiguraciones("porHoraMoto"); break; case 2: mediaHora = Conection.getConfiguraciones().findConfiguraciones("mediaHoraCarro"); unaHora = Conection.getConfiguraciones().findConfiguraciones("unaHoraCarro"); porHora = Conection.getConfiguraciones().findConfiguraciones("porHoraCarro"); break; case 3: mediaHora = Conection.getConfiguraciones().findConfiguraciones("mediaHoraMoto"); unaHora = Conection.getConfiguraciones().findConfiguraciones("unaHoraMoto"); porHora = Conection.getConfiguraciones().findConfiguraciones("porHoraMoto"); break; default: mediaHora = new Configuraciones("mhDef", "0"); unaHora = new Configuraciones("uhDef", "0"); porHora = new Configuraciones("phDef", "0"); break; } cupo.setHoras(horas); cupo.setMinutos(minutos); if (horas == 0 && minutos == 0) { cobro = 0; } else { if (horas == 0) { if (minutos < 30) { cobro = Long.parseLong(mediaHora.getValor()); } else { cobro = Long.parseLong(unaHora.getValor()); } } else if (minutos < 30) { if (tipo == 2) { cobro = (Long.parseLong(porHora.getValor()) * horas) + Long.parseLong(mediaHora.getValor()); } else { cobro = Long.parseLong(porHora.getValor()) * (horas + 1); } } else { cobro = Long.parseLong(porHora.getValor()) * (horas + 1); } } String retorno[] = { result, String.valueOf(cobro) }; return retorno; }