Example usage for org.joda.time Interval toDuration

List of usage examples for org.joda.time Interval toDuration

Introduction

In this page you can find the example usage for org.joda.time Interval toDuration.

Prototype

public Duration toDuration() 

Source Link

Document

Gets the duration of this time interval.

Usage

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;
}