Example usage for org.joda.time LocalDate plusMonths

List of usage examples for org.joda.time LocalDate plusMonths

Introduction

In this page you can find the example usage for org.joda.time LocalDate plusMonths.

Prototype

public LocalDate plusMonths(int months) 

Source Link

Document

Returns a copy of this date plus the specified number of months.

Usage

From source file:de.symeda.sormas.api.utils.DateHelper.java

License:Open Source License

/**
 * requries joda-time/*from   w  w  w . j  a va2 s .c o  m*/
 * 
 * <table>
 * <tr>
 * <td>90</td>
 * <td>-&gt;</td>
 * <td>[1/1/1990, 1/1/1991)</td>
 * </tr>
 * <tr>
 * <td>08</td>
 * <td>-&gt;</td>
 * <td>[1/1/2008, 1/1/2009)</td>
 * </tr>
 * <tr>
 * <td>1830</td>
 * <td>-&gt;</td>
 * <td>[1/1/1830, 1/1/1831)</td>
 * </tr>
 * <tr>
 * <td>3.01</td>
 * <td>-&gt;</td>
 * <td>[1/3/2001, 1/4/2001)</td>
 * </tr>
 * <tr>
 * <td>3.</td>
 * <td>-&gt;</td>
 * <td>[1/3/THIS_YEAR, 1/4/THIS_YEAR)</td>
 * </tr>
 * <tr>
 * <td>3.4.2012</td>
 * <td>-&gt;</td>
 * <td>[3/4/2012, 4/4/2012)</td>
 * </tr>
 * <tr>
 * <td>3.4.</td>
 * <td>-&gt;</td>
 * <td>[3/4/THIS_YEAR, 4/4/THIS_YEAR)</td>
 * </tr>
 * </table>
 * 
 * @param name
 * @param value
 * @return
 */
public static Date[] findDateBounds(String value) {

    if (value == null || value.length() < 2)
        return null;

    int day = -1;
    int month = -1;
    int year = -1;

    Matcher matcher = COMPLETE_DATE_PATTERN.matcher(value);
    if (matcher.matches()) {
        day = Integer.parseInt(matcher.group(1));
        month = Integer.parseInt(matcher.group(3));
        year = Integer.parseInt(matcher.group(5));
    } else {
        matcher = DAY_MONTH_DATE_PATTERN.matcher(value);
        if (matcher.matches()) {
            day = Integer.parseInt(matcher.group(1));
            month = Integer.parseInt(matcher.group(3));
        } else {
            matcher = MONTH_YEAR_DATE_PATTERN.matcher(value);
            if (matcher.matches()) {
                month = Integer.parseInt(matcher.group(1));
                year = Integer.parseInt(matcher.group(3));
            } else {
                matcher = MONTH_DATE_PATTERN.matcher(value);
                if (matcher.matches()) {
                    month = Integer.parseInt(matcher.group(1));
                } else {
                    matcher = DAY_DATE_PATTERN.matcher(value);
                    if (matcher.matches()) {
                        day = Integer.parseInt(matcher.group(1));
                    } else {
                        matcher = YEAR_DATE_PATTERN.matcher(value);
                        if (matcher.matches()) {
                            year = Integer.parseInt(matcher.group(1));
                        } else
                            return null;
                    }
                }
            }
        }
    }

    int thisYear = DateTime.now().year().get();
    if (year == -1) {
        year = thisYear;
    } else if (year < 100) {
        int thisYearDigits = thisYear % 100;
        int thisCentury = thisYear - thisYearDigits;
        if (year < thisYearDigits + 20)
            year += thisCentury;
        else
            year += thisCentury - 100;
    }

    LocalDate start = new LocalDate(year, 1, 1);
    LocalDate end = new LocalDate(year, 1, 1);

    if (month == -1)
        end = end.plusMonths(11);
    else {
        start = start.plusMonths(month - 1);
        end = end.plusMonths(month - 1);
    }
    if (day == -1) {
        end = end.plusMonths(1);
    } else {
        start = start.plusDays(day - 1);
        end = end.plusDays(day);
    }

    return new Date[] { start.toDate(), end.toDate() };
}

From source file:ee.ut.soras.ajavtV2.mudel.ajavaljend.arvutus.SemLeidmiseAbimeetodid.java

License:Open Source License

/**
 *   Rakendab yldistatud Baldwini akent, et leida hetkele <tt>currentDateTime</tt> l2himat 
 *  ajahetke, mis vastab tingimustele <tt>field == soughtValue</tt>. Kui tingimustele vastav
 *  hetk j22b v2lja Baldwini akna raamidest, toimib kui tavaline SET operatsioon, omistades
 *  <tt>field := soughtValue</tt> ajahetke <tt>currentDateTime</tt> raames.
 *  <p>/*  w  w  w .ja  v a 2 s .  c o  m*/
 *  NB! Praegu on implementeeritud ainult aastaaegade ja kvartalite lahendamine. 
    *  <p>
 *  <i>What's the Date? High Accuracy Interpretation of Weekday Name,</i> Dale, Mazur (2009)
 */
public static LocalDateTime applyBaldwinWindow(Granulaarsus field, LocalDateTime currentDateTime,
        String soughtValue) {
    // ---------------------------------
    //  SEASONs
    // ---------------------------------      
    if (field == Granulaarsus.MONTH && soughtValue != null && soughtValue.matches("(SP|SU|FA|WI)")) {
        LocalDate movingFocus = new LocalDate(currentDateTime);
        int addToCurrent = 0;
        // 1) Vaatame eelnevat 4-a kuud
        while (addToCurrent > -4) {
            String currentSeason = getSeason(movingFocus);
            if (currentSeason.equals(soughtValue)) {
                return currentDateTime.plusMonths(addToCurrent);
            }
            movingFocus = movingFocus.plusMonths(-1);
            addToCurrent--;
        }
        // 2) Vaatame jargnevat 4-a kuud
        movingFocus = new LocalDate(currentDateTime);
        addToCurrent = 0;
        while (addToCurrent < 4) {
            String currentSeason = getSeason(movingFocus);
            if (currentSeason.equals(soughtValue)) {
                return currentDateTime.plusMonths(addToCurrent);
            }
            movingFocus = movingFocus.plusMonths(1);
            addToCurrent++;
        }
        // Kui otsitav aastaaeg j2i aknast v2lja, k2sitleme seda kui "selle aasta" otsitud aastaaega
        return setMiddleOfSeason(currentDateTime, soughtValue);
    }
    // ---------------------------------
    //  QUARTER
    // ---------------------------------
    if (field == Granulaarsus.MONTH && soughtValue != null && soughtValue.matches("Q(1|2|3|4)")) {
        LocalDate movingFocus = new LocalDate(currentDateTime);
        int addToCurrent = 0;
        // 1) Vaatame eelnevat 4-a kuud
        while (addToCurrent > -4) {
            String currentSeason = getQuarterOfYear(movingFocus);
            if (currentSeason.equals(soughtValue)) {
                return currentDateTime.plusMonths(addToCurrent);
            }
            movingFocus = movingFocus.plusMonths(-1);
            addToCurrent--;
        }
        // 2) Vaatame jargnevat 4-a kuud
        movingFocus = new LocalDate(currentDateTime);
        addToCurrent = 0;
        while (addToCurrent < 4) {
            String currentSeason = getQuarterOfYear(movingFocus);
            if (currentSeason.equals(soughtValue)) {
                return currentDateTime.plusMonths(addToCurrent);
            }
            movingFocus = movingFocus.plusMonths(1);
            addToCurrent++;
        }
        // Kui otsitav kvartal j2i aknast v2lja, k2sitleme seda kui "selle aasta" otsitud kvartalit
        return setMiddleOfQuarterOfYear(currentDateTime, soughtValue);
    }
    return null;
}

From source file:ee.ut.soras.ajavtV2.mudel.ajavaljend.arvutus.TimeMLDateTimePoint.java

License:Open Source License

public void seekField(Granulaarsus field, int direction, int soughtValue, boolean excludingCurrent) {
    // ---------------------------------
    //  DAY_OF_MONTH
    // ---------------------------------
    if (field == Granulaarsus.DAY_OF_MONTH && direction != 0 && soughtValue == 0) {
        int dir = (direction > 0) ? (1) : (-1);
        LocalDate ajaFookus = new LocalDate(this.underlyingDate);
        LocalDate nihutatudFookus = ajaFookus.plusDays(1 * dir);
        ajaFookus = nihutatudFookus;//  www  .ja  v a  2  s  .  c o m
        this.underlyingDate = ajaFookus;
        updateDateRepresentation(Granulaarsus.DAY_OF_MONTH, null, false, ADD_TYPE_OPERATION);
        functionOtherThanSetUsed = true;
        this.dateModified = true;
    }
    // ---------------------------------
    //  DAY_OF_WEEK
    // ---------------------------------
    if (field == Granulaarsus.DAY_OF_WEEK && soughtValue >= DateTimeConstants.MONDAY
            && soughtValue <= DateTimeConstants.SUNDAY && direction != 0) {
        int dir = (direction > 0) ? (1) : (-1);
        LocalDate ajaFookus = new LocalDate(this.underlyingDate);
        // Algne p2ev ehk p2ev, millest tahame tingimata m66duda
        int algneNadalapaev = (excludingCurrent) ? (ajaFookus.getDayOfWeek()) : (-1);
        if (!excludingCurrent) {
            // V6tame sammu tagasi, et esimene nihe tooks meid t2pselt k2esolevale p2evale            
            ajaFookus = ajaFookus.plusDays(dir * (-1));
        }
        int count = 0;
        while (true) {
            LocalDate nihutatudFookus = ajaFookus.plusDays(1 * dir);
            ajaFookus = nihutatudFookus;
            int uusNadalapaev = ajaFookus.getDayOfWeek();
            if (algneNadalapaev != -1) {
                if (algneNadalapaev == uusNadalapaev) {
                    continue;
                } else {
                    algneNadalapaev = -1;
                }
            }
            if (uusNadalapaev == soughtValue) {
                algneNadalapaev = uusNadalapaev;
                count++;
                if (count == Math.abs(direction)) {
                    break;
                }
            }
        }
        this.underlyingDate = ajaFookus;
        updateDateRepresentation(Granulaarsus.DAY_OF_MONTH, null, false, ADD_TYPE_OPERATION);
        functionOtherThanSetUsed = true;
        this.dateModified = true;
    }
    // ---------------------------------
    //  WEEK OF YEAR
    // ---------------------------------
    if (field == Granulaarsus.WEEK_OF_YEAR && soughtValue == 0 && direction != 0) {
        int dir = (direction > 0) ? (1) : (-1);
        LocalDate ajaFookus = new LocalDate(this.underlyingDate);
        // Algne n2dal ehk n2dal, millest tahame m88duda
        int algneNadal = (excludingCurrent) ? (ajaFookus.getWeekOfWeekyear()) : (-1);
        if (!excludingCurrent) {
            // V6tame sammu tagasi, et esimene nihe tooks meid t2pselt k2esolevale p2evale            
            ajaFookus = ajaFookus.plusDays(dir * (-1));
        }
        int count = 0;
        while (true) {
            LocalDate nihutatudFookus = ajaFookus.plusDays(1 * dir);
            ajaFookus = nihutatudFookus;
            int uusNadal = nihutatudFookus.getWeekOfWeekyear();
            if (algneNadal != -1) {
                if (algneNadal == uusNadal) {
                    continue;
                } else {
                    algneNadal = -1;
                }
            }
            if (soughtValue == 0) {
                algneNadal = uusNadal;
                count++;
                if (count == Math.abs(direction)) {
                    break;
                }
            }
        }
        this.underlyingDate = ajaFookus;
        updateDateRepresentation(Granulaarsus.WEEK_OF_YEAR, null, false, ADD_TYPE_OPERATION);
        functionOtherThanSetUsed = true;
        this.dateModified = true;
    }
    // ---------------------------------
    //  MONTH
    // ---------------------------------
    if (field == Granulaarsus.MONTH
            && (soughtValue == 0
                    || DateTimeConstants.JANUARY <= soughtValue && soughtValue <= DateTimeConstants.DECEMBER)
            && direction != 0) {
        int dir = (direction > 0) ? (1) : (-1);
        LocalDate ajaFookus = new LocalDate(this.underlyingDate);
        // Algne kuu ehk kuu, millest tahame m88duda
        int algneKuu = (excludingCurrent) ? (ajaFookus.getMonthOfYear()) : (-1);
        if (!excludingCurrent) {
            // V6tame sammu tagasi, et esimene nihe tooks meid t2pselt k2esolevale kuule      
            ajaFookus = ajaFookus.plusMonths(dir * (-1));
        }
        int count = 0;
        while (true) {
            LocalDate nihutatudFookus = ajaFookus.plusMonths(1 * dir);
            ajaFookus = nihutatudFookus;
            int uusKuu = nihutatudFookus.getMonthOfYear();
            if (algneKuu != -1) {
                if (algneKuu == uusKuu) {
                    continue;
                } else {
                    algneKuu = -1;
                }
            }
            if (soughtValue == 0 || (soughtValue != 0 && uusKuu == soughtValue)) {
                algneKuu = uusKuu;
                count++;
                if (count == Math.abs(direction)) {
                    break;
                }
            }
        }
        this.underlyingDate = ajaFookus;
        updateDateRepresentation(Granulaarsus.MONTH, null, false, ADD_TYPE_OPERATION);
        functionOtherThanSetUsed = true;
        this.dateModified = true;
    }
    // ---------------------------------
    //   YEAR
    // ---------------------------------
    if (field == Granulaarsus.YEAR && soughtValue == 0 && direction != 0) {
        int dir = (direction > 0) ? (1) : (-1);
        LocalDate ajaFookus = new LocalDate(this.underlyingDate);
        // Algne aasta ehk aasta, millest tahame m88duda
        int algneAasta = (excludingCurrent) ? (ajaFookus.getYear()) : (-1);
        if (!excludingCurrent) {
            // V6tame sammu tagasi, et esimene nihe tooks meid t2pselt k2esolevale kuule      
            ajaFookus = ajaFookus.plusMonths(dir * (-1));
        }
        int count = 0;
        while (true) {
            LocalDate nihutatudFookus = ajaFookus.plusMonths(1 * dir);
            ajaFookus = nihutatudFookus;
            int uusAasta = nihutatudFookus.getYear();
            if (algneAasta != -1) {
                if (algneAasta == uusAasta) {
                    continue;
                } else {
                    algneAasta = -1;
                }
            }
            if (soughtValue == 0) {
                algneAasta = uusAasta;
                count++;
                if (count == Math.abs(direction)) {
                    break;
                }
            }
        }
        this.underlyingDate = ajaFookus;
        updateDateRepresentation(Granulaarsus.YEAR, null, false, ADD_TYPE_OPERATION);
        functionOtherThanSetUsed = true;
        this.dateModified = true;
    }
    // ---------------------------------
    //   YEAR_OF_CENTURY
    // ---------------------------------
    if (field == Granulaarsus.YEAR_OF_CENTURY && direction != 0) {
        int minValue = SemLeidmiseAbimeetodid.getLocalDateTimeFieldExtremum(this.underlyingDate,
                DateTimeFieldType.yearOfCentury(), false);
        int maxValue = SemLeidmiseAbimeetodid.getLocalDateTimeFieldExtremum(this.underlyingDate,
                DateTimeFieldType.yearOfCentury(), true);
        if (minValue <= soughtValue && soughtValue <= maxValue) {
            int dir = (direction > 0) ? (1) : (-1);
            LocalDate ajaFookus = new LocalDate(this.underlyingDate);
            // Algne aasta ehk aasta, millest tahame m88duda
            int algneAasta = (excludingCurrent) ? (ajaFookus.getYearOfCentury()) : (-1);
            if (!excludingCurrent) {
                // V6tame sammu tagasi, et esimene nihe tooks meid t2pselt k2esolevale aastale      
                ajaFookus = ajaFookus.plusYears(dir * (-1));
            }
            int count = 0;
            int cycleCount = 0;
            while (true) {
                LocalDate nihutatudFookus = ajaFookus.plusYears(1 * dir);
                cycleCount++;
                ajaFookus = nihutatudFookus;
                int uusAasta = nihutatudFookus.getYearOfCentury();
                if (algneAasta != -1) {
                    if (algneAasta == uusAasta) {
                        continue;
                    } else {
                        algneAasta = -1;
                    }
                }
                if (uusAasta == soughtValue) {
                    algneAasta = uusAasta;
                    count++;
                    if (count == Math.abs(direction)) {
                        break;
                    }
                }
            }
            this.underlyingDate = ajaFookus;
            updateDateRepresentation(Granulaarsus.YEAR, null, false, ADD_TYPE_OPERATION);
            functionOtherThanSetUsed = true;
            this.dateModified = true;
        }
    }
    // ---------------------------------
    //   CENTURY_OF_ERA
    // ---------------------------------
    if (field == Granulaarsus.CENTURY_OF_ERA && soughtValue == 0 && direction != 0) {
        int dir = (direction > 0) ? (1) : (-1);
        LocalDate ajaFookus = new LocalDate(this.underlyingDate);
        // Algne saj ehk sajand, millest tahame m88duda
        int algneSajand = (excludingCurrent) ? (ajaFookus.getCenturyOfEra()) : (Integer.MIN_VALUE);
        if (!excludingCurrent) {
            // V6tame sammu tagasi, et esimene nihe tooks meid t2pselt k2esolevale aastale      
            ajaFookus = ajaFookus.plusYears(dir * (-10));
        }
        int count = 0;
        while (true) {
            LocalDate nihutatudFookus = ajaFookus.plusYears(10 * dir);
            ajaFookus = nihutatudFookus;
            int uusSajand = nihutatudFookus.getCenturyOfEra();
            if (algneSajand != Integer.MIN_VALUE) {
                if (algneSajand == uusSajand) {
                    continue;
                } else {
                    algneSajand = Integer.MIN_VALUE;
                }
            }
            if (soughtValue == 0) {
                algneSajand = uusSajand;
                count++;
                if (count == Math.abs(direction)) {
                    break;
                }
            }
        }
        this.underlyingDate = ajaFookus;
        updateDateRepresentation(Granulaarsus.CENTURY_OF_ERA, null, false, ADD_TYPE_OPERATION);
        functionOtherThanSetUsed = true;
        this.dateModified = true;
    }

}

From source file:energy.usef.agr.workflow.settlement.receive.AgrReceiveSettlementMessageCoordinator.java

License:Apache License

/**
 * Handle CheckSettlement Event./*from ww  w.j a v  a2s. co  m*/
 *
 * @param event
 */
@Asynchronous
public void handleCheckSettlementEvent(
        @Observes(during = TransactionPhase.AFTER_COMPLETION) CheckSettlementEvent event) {
    LOGGER.debug(USEFConstants.LOG_COORDINATOR_START_HANDLING_EVENT, event);

    LocalDate eventDate = event.getPeriodInMonth();
    if (eventDate == null) {
        eventDate = DateTimeUtil.getCurrentDate().minusMonths(1);
    }
    LocalDate startDate = eventDate.withDayOfMonth(1);
    LocalDate endDate = startDate.plusMonths(1).minusDays(1);

    List<PlanboardMessage> flexOrderSettlementMessages = corePlanboardBusinessService.findPlanboardMessages(
            DocumentType.FLEX_ORDER_SETTLEMENT, startDate, endDate, DocumentStatus.RECEIVED);
    LOGGER.debug(
            "Fetched [{}] FLEX_ORDER_SETTLEMENTS from PlanboardMessage with status RECEIVED between [{}] and [{}]",
            flexOrderSettlementMessages.size(), startDate, endDate);
    Map<String, List<PlanboardMessage>> flexOrderSettlementsPerParticipant = flexOrderSettlementMessages
            .stream()
            .collect(Collectors.groupingBy(PlanboardMessage::getParticipantDomain, Collectors.toList()));
    flexOrderSettlementsPerParticipant
            .forEach((participant, flexOrderSettlements) -> checkSettlementPerParticipant(participant,
                    flexOrderSettlements, startDate, endDate));

    LOGGER.debug(USEFConstants.LOG_COORDINATOR_FINISHED_HANDLING_EVENT, event);
}

From source file:energy.usef.brp.workflow.settlement.send.BrpSendSettlementMessagesCoordinator.java

License:Apache License

@Asynchronous
@Lock(LockType.WRITE)/* www . ja v a 2 s .  c o m*/
public void isReadyToSendSettlementMessage(
        @Observes(during = TransactionPhase.AFTER_COMPLETION) CheckInitiateSettlementDoneEvent event) {
    LOGGER.debug(USEFConstants.LOG_COORDINATOR_START_HANDLING_EVENT, event);
    LocalDate period = new LocalDate(event.getYear(), event.getMonth(), 1);
    boolean isNotProcessed = corePlanboardBusinessService.findPlanboardMessages(
            DocumentType.FLEX_ORDER_SETTLEMENT, period, period.plusMonths(1).minusDays(1), null).size() == 0;
    if (isNotProcessed && coreSettlementBusinessService.isEachFlexOrderReadyForSettlement(event.getYear(),
            event.getMonth())) {
        sendSettlementMessageEventManager
                .fire(new SendSettlementMessageEvent(event.getYear(), event.getMonth()));
    }
    LOGGER.debug(USEFConstants.LOG_COORDINATOR_FINISHED_HANDLING_EVENT, event);
}

From source file:energy.usef.core.repository.PtuFlexOrderRepository.java

License:Apache License

/**
 * Find the Accepted {@link PtuFlexOrder}'s for the requested month and year.
 *
 * @param workingDate - The date with requested month and year
 * @return//from  w  w w . j a  va  2s.c  om
 */
public List<PtuFlexOrder> findAcknowledgedFlexOrdersForMonthInYear(LocalDate workingDate) {
    StringBuilder sql = new StringBuilder();
    sql.append("SELECT fo ");
    sql.append("FROM PtuFlexOrder fo ");
    sql.append("WHERE fo.acknowledgementStatus = :acknowledgementStatus ");
    sql.append("  AND fo.ptuContainer.ptuDate >= :firstDay ");
    sql.append("  AND fo.ptuContainer.ptuDate <= :lastDay ");
    Query query = entityManager.createQuery(sql.toString(), PtuFlexOrder.class);

    query.setParameter("acknowledgementStatus", AcknowledgementStatus.ACCEPTED);
    query.setParameter("firstDay", workingDate.withDayOfMonth(1).toDateMidnight().toDate(), DATE);
    query.setParameter("lastDay",
            workingDate.plusMonths(1).withDayOfMonth(1).minusDays(1).toDateMidnight().toDate(), DATE);

    return query.getResultList();
}

From source file:energy.usef.dso.workflow.settlement.send.DsoSendSettlementMessagesCoordinator.java

License:Apache License

@Asynchronous
@Lock(LockType.WRITE)//from w w  w. jav a2  s. c o m
public void isReadyToSendSettlementMessage(
        @Observes(during = TransactionPhase.AFTER_COMPLETION) CheckInitiateSettlementDoneEvent event) {
    LOGGER.debug(USEFConstants.LOG_COORDINATOR_START_HANDLING_EVENT, event);

    LocalDate period = new LocalDate(event.getYear(), event.getMonth(), 1);
    boolean isNotProcessed = corePlanboardBusinessService.findPlanboardMessages(
            DocumentType.FLEX_ORDER_SETTLEMENT, period, period.plusMonths(1).minusDays(1), null).size() == 0;
    if (isNotProcessed && coreSettlementBusinessService.isEachFlexOrderReadyForSettlement(event.getYear(),
            event.getMonth())) {
        sendSettlementMessageEventManager
                .fire(new SendSettlementMessageEvent(event.getYear(), event.getMonth()));
    }
    LOGGER.debug(USEFConstants.LOG_COORDINATOR_FINISHED_HANDLING_EVENT, event);
}

From source file:es.usc.citius.servando.calendula.activities.SummaryCalendarActivity.java

License:Open Source License

private void setupCalendar() {

    calendar = (CalendarPickerView) findViewById(R.id.calendar_view);
    calendar.setVerticalScrollBarEnabled(false);

    RepetitionRule r;/*  w  w w  .j a  v  a 2  s.c o  m*/
    String rule = getIntent().getStringExtra("rule");
    String date = getIntent().getStringExtra("start");

    int activeDays = getIntent().getIntExtra("active_days", -1);
    int restDays = getIntent().getIntExtra("rest_days", -1);

    LocalDate from = date != null ? LocalDate.parse(date, fmt) : LocalDate.now();
    LocalDate to = from.plusMonths(6);

    if (rule != null) {
        r = new RepetitionRule(rule);
        List<DateTime> dates = r.occurrencesBetween(from.toDateTimeAtStartOfDay(), to.toDateTimeAtStartOfDay(),
                from.toDateTimeAtStartOfDay());
        Set<Date> hdates = new HashSet<>();
        for (DateTime d : dates)
            hdates.add(d.toDate());

        List<CalendarCellDecorator> decorators = new ArrayList<>();

        DateValue v = r.iCalRule().getUntil();
        Date start = date != null ? from.toDate() : null;
        Date end = v != null ? new LocalDate(v.year(), v.month(), v.day()).toDate() : null;

        decorators.add(new HighlightDecorator(new ArrayList<>(hdates), start, end, color));
        calendar.setDecorators(decorators);
    } else if (activeDays > 0 && restDays > 0) {

        List<Date> hdates = new ArrayList<>();

        LocalDate d = from.plusDays(0); // copy

        while (d.isBefore(to)) {
            if (ScheduleHelper.cycleEnabledForDate(d, from, activeDays, restDays)) {
                hdates.add(d.toDate());
            }
            d = d.plusDays(1);
        }

        List<CalendarCellDecorator> decorators = new ArrayList<>();
        //DateValue v = r.iCalRule().getUntil();
        //Date start = date != null ? from.toDate() : null;
        //Date end = v != null ? new LocalDate(v.year(), v.month(), v.day()).toDate() : null;
        decorators.add(new HighlightDecorator(hdates, from.toDate(), to.toDate(), color));
        calendar.setDecorators(decorators);
    }

    calendar.init(from.toDate(), to.toDate())
            .setShortWeekdays(getResources().getStringArray(R.array.calendar_weekday_names));
}

From source file:es.usc.citius.servando.calendula.fragments.ScheduleImportFragment.java

License:Open Source License

private void setupStartEndDatePickers(View rootView) {

    if (schedule.start() == null) {
        schedule.setStart(LocalDate.now());
    }//from  w ww . j  a  v a2  s .c o m

    final LocalDate scheduleStart = schedule.start();

    buttonScheduleStart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            DatePickerDialog dpd = new DatePickerDialog(getActivity(),
                    new DatePickerDialog.OnDateSetListener() {
                        @Override
                        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                            Log.d(TAG, year + " " + monthOfYear);
                            LocalDate d = new LocalDate(year, monthOfYear + 1, dayOfMonth);
                            setScheduleStart(d);
                        }
                    }, scheduleStart.getYear(), scheduleStart.getMonthOfYear() - 1,
                    scheduleStart.getDayOfMonth());
            dpd.show();
        }
    });

    buttonScheduleEnd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            LocalDate scheduleEnd = schedule.end() != null ? schedule.end() : scheduleStart.plusMonths(3);

            DatePickerDialog dpd = new DatePickerDialog(getActivity(),
                    new DatePickerDialog.OnDateSetListener() {
                        @Override
                        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                            LocalDate d = new LocalDate(year, monthOfYear + 1, dayOfMonth);
                            setScheduleEnd(d);
                        }
                    }, scheduleEnd.getYear(), scheduleEnd.getMonthOfYear() - 1, scheduleEnd.getDayOfMonth());
            dpd.show();
        }
    });

    buttonScheduleEnd.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            builder.setMessage("Do you want this schedule to continue indefinitely?").setCancelable(true)
                    .setPositiveButton(getString(R.string.dialog_yes_option),
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                    setScheduleEnd(null);
                                }
                            })
                    .setNegativeButton(getString(R.string.dialog_no_option),
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                    dialog.cancel();
                                }
                            });
            AlertDialog alert = builder.create();
            alert.show();
            return true;
        }
    });

    clearStartButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setScheduleStart(null);
        }
    });
    clearEndButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setScheduleEnd(null);
        }
    });

    setScheduleStart(schedule.start());

    if (schedule.end() == null && isNew && hasEnd && daysToEnd > 0) {
        LocalDate end = schedule.start().plusDays(daysToEnd);
        setScheduleEnd(end);
    } else {
        setScheduleEnd(schedule.end());
    }
}

From source file:es.usc.citius.servando.calendula.fragments.ScheduleTimetableFragment.java

License:Open Source License

void setupStartEndDatePickers(View rootView) {

    if (schedule.start() == null) {
        schedule.setStart(LocalDate.now());
    }//from  w w  w .  j  ava2s. co  m

    final LocalDate scheduleStart = schedule.start();

    buttonScheduleStart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            DatePickerDialog dpd = new DatePickerDialog(getActivity(),
                    new DatePickerDialog.OnDateSetListener() {
                        @Override
                        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                            Log.d(TAG, year + " " + monthOfYear);
                            LocalDate d = new LocalDate(year, monthOfYear + 1, dayOfMonth);
                            setScheduleStart(d);
                        }
                    }, scheduleStart.getYear(), scheduleStart.getMonthOfYear() - 1,
                    scheduleStart.getDayOfMonth());
            dpd.show();
        }
    });

    buttonScheduleEnd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            LocalDate scheduleEnd = schedule.end() != null ? schedule.end() : scheduleStart.plusMonths(3);

            DatePickerDialog dpd = new DatePickerDialog(getActivity(),
                    new DatePickerDialog.OnDateSetListener() {
                        @Override
                        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                            LocalDate d = new LocalDate(year, monthOfYear + 1, dayOfMonth);
                            setScheduleEnd(d);
                        }
                    }, scheduleEnd.getYear(), scheduleEnd.getMonthOfYear() - 1, scheduleEnd.getDayOfMonth());
            dpd.show();
        }
    });

    buttonScheduleEnd.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            builder.setMessage("Do you want this schedule to continue indefinitely?").setCancelable(true)
                    .setPositiveButton(getString(R.string.dialog_yes_option),
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                    setScheduleEnd(null);
                                }
                            })
                    .setNegativeButton(getString(R.string.dialog_no_option),
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                    dialog.cancel();
                                }
                            });
            AlertDialog alert = builder.create();
            alert.show();
            return true;
        }
    });

    clearStartButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setScheduleStart(null);
        }
    });

    clearEndButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setScheduleEnd(null);
        }
    });

    setScheduleStart(schedule.start());
    setScheduleEnd(schedule.end());
}