Example usage for org.joda.time DateTime plusWeeks

List of usage examples for org.joda.time DateTime plusWeeks

Introduction

In this page you can find the example usage for org.joda.time DateTime plusWeeks.

Prototype

public DateTime plusWeeks(int weeks) 

Source Link

Document

Returns a copy of this datetime plus the specified number of weeks.

Usage

From source file:com.google.android.apps.paco.NonESMSignalGenerator.java

License:Open Source License

DateTime getNthDOWOfMonth(DateTime midnightTomorrow, Integer nthOfMonth, Integer dow) {
    int dtconstDow = dow == 0 ? 7 : dow;
    DateTime first = midnightTomorrow.withDayOfMonth(1);
    if (first.getDayOfWeek() > dtconstDow) {
        return first.plusWeeks(nthOfMonth).withDayOfWeek(dtconstDow);
    } else {//ww w  .  j  a v a2  s.  c  o m
        return first.plusWeeks(nthOfMonth - 1).withDayOfWeek(dtconstDow);
    }
}

From source file:com.google.android.apps.paco.NonESMSignalGenerator.java

License:Open Source License

private DateTime nextRepeatWeekly(DateTime midnightNextDay) {
    if (schedule.getRepeatRate() == 1) {
        return midnightNextDay;
    }/* www.ja va 2s. c o m*/
    int distanceBetweenStartAndTomorrow = Weeks
            .weeksBetween(new DateTime(schedule.getBeginDate()).toDateMidnight(), midnightNextDay).getWeeks();
    if (distanceBetweenStartAndTomorrow == 0 || distanceBetweenStartAndTomorrow == schedule.getRepeatRate()) {
        if ((distanceBetweenStartAndTomorrow == 0 && midnightNextDay
                .getDayOfWeek() <= new DateMidnight(schedule.getBeginDate()).getDayOfWeek())) {
            // we crossed a week boundary, so add one week.
            return midnightNextDay.plusWeeks(schedule.getRepeatRate() - 1);
        }
        return midnightNextDay;
    } else if (distanceBetweenStartAndTomorrow > schedule.getRepeatRate()) {
        int remainder = distanceBetweenStartAndTomorrow % schedule.getRepeatRate();
        return midnightNextDay.plusWeeks(schedule.getRepeatRate() - remainder);
    } else {
        return midnightNextDay.plusWeeks(schedule.getRepeatRate() - distanceBetweenStartAndTomorrow);
    }
}

From source file:com.hack23.cia.service.component.agent.impl.riksdagen.workgenerator.RiksdagenDocumentListWorkGeneratorImpl.java

License:Apache License

@Override
public void generateWorkOrders() {
    try {/* ww w. j a  v  a  2s.c  om*/

        final int startYearForDocumentElement = getImportService().getStartYearForDocumentElement();

        final org.joda.time.format.DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd");
        DateTime fromDateTime = fmt.parseDateTime(startYearForDocumentElement + "-01-01");

        DateTime loadedWeekDate = fmt.parseDateTime(startYearForDocumentElement + "-01-01");

        final DateTime toDate = new DateTime();
        while (loadedWeekDate.isBefore(toDate)) {
            loadedWeekDate = loadedWeekDate.plusWeeks(1);

            sendMessage(loadDocumentWorkdestination,
                    new LoadDocumentWork(fmt.print(fromDateTime), fmt.print(loadedWeekDate)));

            fromDateTime = fromDateTime.plusWeeks(1);
        }

    } catch (final Exception e) {
        LOGGER.warn("error generating work for loading documents", e);
    }
}

From source file:com.linagora.obm.ui.scenario.event.EventStepdefs.java

License:Open Source License

@Then("^event \"([^\"]*)\" appears every week on saturday, first is (\\d+)/(\\d+)/(\\d+) from (\\d+):(\\d+) to (\\d+):(\\d+)$")
public void eventAppearsEveryWeek(String title, int day, int month, int year, int beginHour, int beginMin,
        int endHour, int endMin) {

    DateTime dateTime = dateTime(day, month, year, beginHour, beginMin);
    String expectedEventDatesTitle = expectedEventDatesTitle(beginHour, beginMin, endHour, endMin);

    for (int numberOfChecks = 0; numberOfChecks < 5; numberOfChecks++) {
        WebElement divElement = processedCalendarPage.getDivByTitle(title);
        assertThat(divElement.getAttribute("id")).endsWith(String.valueOf(dateTime.getMillis() / 1000));

        WebElement hrefElement = divElement.findElement(new ByCssSelector("a"));
        assertThat(hrefElement.getText()).isEqualTo(expectedEventDatesTitle);

        dateTime = dateTime.plusWeeks(1);
        processedCalendarPage.calendarNavBarWidget().nextPage();
    }//w  w w  . ja v  a  2s  .c  o m
}

From source file:com.metinkale.prayerapp.vakit.times.Times.java

License:Apache License

@NonNull
private Collection<Alarm> getAlarms() {
    Collection<Alarm> alarms = new ArrayList<>();

    LocalDate cal = LocalDate.now();
    for (int ii = 0; ii <= 1/* next day */; ii++) {
        for (Vakit v : Vakit.values()) {
            if (isNotificationActive(v)) {
                if (v != Vakit.SABAH) {
                    int vakit = v.ordinal();
                    if (vakit != 0) {
                        vakit--;/*from  ww w .  j av  a  2s . com*/
                    }

                    long mills = getTimeCal(cal, vakit).toDateTime().getMillis();
                    if (System.currentTimeMillis() < mills) {
                        Alarm a = new Alarm();
                        a.city = getID();
                        a.early = false;
                        a.cuma = false;
                        a.time = mills;
                        a.vakit = v;
                        a.dayOffset = ii;
                        alarms.add(a);
                    }
                } else {
                    long mills;
                    if (isAfterImsak()) {
                        mills = getTimeCal(cal, 0).toDateTime().getMillis() + getSabahTime() * 60 * 1000;
                    } else {
                        mills = getTimeCal(cal, 1).toDateTime().getMillis() - getSabahTime() * 60 * 1000;
                    }
                    if (System.currentTimeMillis() < mills) {
                        Alarm a = new Alarm();
                        a.city = getID();
                        a.cuma = false;
                        a.early = false;
                        a.time = mills;
                        a.vakit = v;
                        a.dayOffset = ii;
                        alarms.add(a);
                    }
                }
            }

            if (isEarlyNotificationActive(v)) {
                if (v != Vakit.SABAH) {
                    int vakit = v.ordinal();
                    if (vakit != 0) {
                        vakit--;
                    }

                    int early = getEarlyTime(v);
                    long mills = getTimeCal(cal, vakit).toDateTime().getMillis() - early * 60 * 1000;
                    if (System.currentTimeMillis() < mills) {
                        Alarm a = new Alarm();
                        a.city = getID();
                        a.early = true;
                        a.cuma = false;
                        a.time = mills;
                        a.vakit = v;
                        a.dayOffset = ii;
                        alarms.add(a);
                    }
                }
            }
        }
        cal = cal.plusDays(1);
    }
    if (isCumaActive()) {

        int early = getCumaTime();

        DateTime c = DateTime.now().withDayOfWeek(DateTimeConstants.FRIDAY);
        if ((c.getMillis() + 1000) < System.currentTimeMillis()) {
            c = c.plusWeeks(1);
        }
        long mills = getTimeCal(c.toLocalDate(), 2).toDateTime().getMillis();
        mills -= early * 60 * 1000;
        if (System.currentTimeMillis() < mills) {
            Alarm a = new Alarm();
            a.city = getID();
            a.cuma = true;
            a.early = false;
            a.time = mills;
            a.vakit = Vakit.OGLE;
            a.dayOffset = 0;
            alarms.add(a);
        }
    }

    return alarms;
}

From source file:com.microsoft.office365.snippetapp.Snippets.CalendarSnippets.java

License:MIT License

/**
 * Creates a recurring event. This snippet will create an event that recurs
 * every Tuesday and Thursday from 1PM to 2PM. You can modify this snippet
 * to work with other recurrence patterns.
 *
 * @param subject      The subject of the event
 * @param itemBodyHtml The body of the event as HTML
 * @param attendees    A list of attendee email addresses
 * @return String The id of the created event
 */// w  w w  .jav a  2  s .c om
public String createRecurringCalendarEvent(String subject, String itemBodyHtml, List<String> attendees)
        throws ExecutionException, InterruptedException {

    //Create a new Office 365 Event object
    Event newEvent = new Event();
    newEvent.setSubject(subject);
    ItemBody itemBody = new ItemBody();
    itemBody.setContent(itemBodyHtml);
    itemBody.setContentType(BodyType.HTML);
    newEvent.setBody(itemBody);

    //Set the attendee list
    List<Attendee> attendeeList = convertEmailStringsToAttendees(attendees);
    newEvent.setAttendees(attendeeList);

    //Set start date to the next occurring Tuesday
    DateTime startDate = DateTime.now();
    if (startDate.getDayOfWeek() < DateTimeConstants.TUESDAY) {
        startDate = startDate.dayOfWeek().setCopy(DateTimeConstants.TUESDAY);
    } else {
        startDate = startDate.plusWeeks(1);
        startDate = startDate.dayOfWeek().setCopy(DateTimeConstants.TUESDAY);
    }

    //Set start time to 1 PM
    startDate = startDate.hourOfDay().setCopy(13).withMinuteOfHour(0).withSecondOfMinute(0)
            .withMillisOfSecond(0);

    //Set end time to 2 PM
    DateTime endDate = startDate.hourOfDay().setCopy(14);

    //Set start and end time on the new Event (next Tuesday 1-2PM)
    newEvent.setStart(startDate.toCalendar(Locale.getDefault()));
    newEvent.setIsAllDay(false);
    newEvent.setEnd(endDate.toCalendar(Locale.getDefault()));

    //Configure the recurrence pattern for the new event
    //In this case the meeting will occur every Tuesday and Thursday from 1PM to 2PM
    RecurrencePattern recurrencePattern = new RecurrencePattern();
    List<DayOfWeek> daysMeetingRecursOn = new ArrayList();
    daysMeetingRecursOn.add(DayOfWeek.Tuesday);
    daysMeetingRecursOn.add(DayOfWeek.Thursday);
    recurrencePattern.setType(RecurrencePatternType.Weekly);
    recurrencePattern.setDaysOfWeek(daysMeetingRecursOn);
    recurrencePattern.setInterval(1); //recurs every week

    //Create a recurring range. In this case the range does not end
    //and the event occurs every Tuesday and Thursday forever.
    RecurrenceRange recurrenceRange = new RecurrenceRange();
    recurrenceRange.setType(RecurrenceRangeType.NoEnd);
    recurrenceRange.setStartDate(startDate.toCalendar(Locale.getDefault()));

    //Create a pattern of recurrence. It contains the recurrence pattern
    //and recurrence range created previously.
    PatternedRecurrence patternedRecurrence = new PatternedRecurrence();
    patternedRecurrence.setPattern(recurrencePattern);
    patternedRecurrence.setRange(recurrenceRange);

    //Finally pass the patterned recurrence to the new Event object.
    newEvent.setRecurrence(patternedRecurrence);

    //Create the event and return the id
    return mCalendarClient.getMe().getEvents().select("ID").add(newEvent).get().getId();
}

From source file:com.money.manager.ex.servicelayer.RecurringTransactionService.java

License:Open Source License

/**
 * @param date    to start calculate/*from   ww w  .jav  a  2s.  c om*/
 * @param repeatType type of repeating transactions
 * @param numberOfPeriods Number of instances (days, months) parameter. Used for In (x) Days, for
 *                  example to indicate x.
 * @return next Date
 */
public DateTime getNextScheduledDate(DateTime date, Recurrence repeatType, Integer numberOfPeriods) {
    if (numberOfPeriods == null || numberOfPeriods == Constants.NOT_SET) {
        numberOfPeriods = 0;
    }

    if (repeatType.getValue() >= 200) {
        repeatType = Recurrence.valueOf(repeatType.getValue() - 200);
    } // set auto execute without user acknowledgement
    if (repeatType.getValue() >= 100) {
        repeatType = Recurrence.valueOf(repeatType.getValue() - 100);
    } // set auto execute on the next occurrence

    DateTime result = new DateTime(date);

    switch (repeatType) {
    case ONCE: //none
        break;
    case WEEKLY: //weekly
        result = result.plusWeeks(1);
        break;
    case BIWEEKLY: //bi_weekly
        result = result.plusWeeks(2);
        break;
    case MONTHLY: //monthly
        result = result.plusMonths(1);
        break;
    case BIMONTHLY: //bi_monthly
        result = result.plusMonths(2);
        break;
    case QUARTERLY: //quarterly
        result = result.plusMonths(3);
        break;
    case SEMIANNUALLY: //half_year
        result = result.plusMonths(6);
        break;
    case ANNUALLY: //yearly
        result = result.plusYears(1);
        break;
    case FOUR_MONTHS: //four_months
        result = result.plusMonths(4);
        break;
    case FOUR_WEEKS: //four_weeks
        result = result.plusWeeks(4);
        break;
    case DAILY: //daily
        result = result.plusDays(1);
        break;
    case IN_X_DAYS: //in_x_days
    case EVERY_X_DAYS: //every_x_days
        result = result.plusDays(numberOfPeriods);
        break;
    case IN_X_MONTHS: //in_x_months
    case EVERY_X_MONTHS: //every_x_months
        result = result.plusMonths(numberOfPeriods);
        break;
    case MONTHLY_LAST_DAY: //month (last day)
        // if the date is not the last day of this month, set it to the end of the month.
        // else set it to the end of the next month.
        DateTime lastDayOfMonth = MmxDateTimeUtils.getLastDayOfMonth(result);
        if (!result.equals(lastDayOfMonth)) {
            // set to last day of the month
            result = lastDayOfMonth;
        } else {
            result = lastDayOfMonth.plusMonths(1);
        }
        break;

    case MONTHLY_LAST_BUSINESS_DAY: //month (last business day)
        // if the date is not the last day of this month, set it to the end of the month.
        // else set it to the end of the next month.
        DateTime lastDayOfMonth2 = MmxDateTimeUtils.getLastDayOfMonth(result);
        if (!result.equals(lastDayOfMonth2)) {
            // set to last day of the month
            result = lastDayOfMonth2;
        } else {
            result = lastDayOfMonth2.plusMonths(1);
        }
        // get the last day of the next month,
        // then iterate backwards until we are on a weekday.
        while (result.getDayOfWeek() == DateTimeConstants.SATURDAY
                || result.getDayOfWeek() == DateTimeConstants.SUNDAY) {
            result = result.minusDays(1);
        }
        break;
    }
    return result;
}

From source file:com.norconex.collector.http.recrawl.impl.GenericRecrawlableResolver.java

License:Apache License

private boolean isRecrawlableFromFrequency(SitemapChangeFrequency cf, PreviousCrawlData prevData,
        String context) {// w w w.j  a va2 s . co m
    if (cf == null) {
        return true;
    }

    if (LOG.isDebugEnabled()) {
        LOG.debug("The " + context + " change frequency is " + cf + " for: " + prevData.getReference());
    }
    if (cf == SitemapChangeFrequency.ALWAYS) {
        return true;
    }
    if (cf == SitemapChangeFrequency.NEVER) {
        return false;
    }

    DateTime minCrawlDate = new DateTime(prevData.getCrawlDate());
    switch (cf) {
    case HOURLY:
        minCrawlDate = minCrawlDate.plusHours(1);
        break;
    case DAILY:
        minCrawlDate = minCrawlDate.plusDays(1);
        break;
    case WEEKLY:
        minCrawlDate = minCrawlDate.plusWeeks(1);
        break;
    case MONTHLY:
        minCrawlDate = minCrawlDate.plusMonths(1);
        break;
    case YEARLY:
        minCrawlDate = minCrawlDate.plusYears(1);
        break;
    default:
        break;
    }

    if (minCrawlDate.isBeforeNow()) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("Recrawl suggested according to " + context
                    + " directive (change frequency < elapsed time since " + prevData.getCrawlDate() + ") for: "
                    + prevData.getReference());
        }
        return true;
    }
    if (LOG.isDebugEnabled()) {
        LOG.debug("No recrawl suggested according to " + context
                + " directive (change frequency >= elapsed time since " + prevData.getCrawlDate() + ") for: "
                + prevData.getReference());
    }
    return false;
}

From source file:com.prayer.vakit.times.Times.java

License:Apache License

Collection<Alarm> getAlarms() {
    Collection<Alarm> alarms = new ArrayList<>();

    LocalDate cal = LocalDate.now();
    for (int ii = 0; ii <= 1/* next day */; ii++) {
        for (Vakit v : Vakit.values()) {
            if (isNotificationActive(v)) {
                if (v != Vakit.SABAH) {
                    int vakit = v.ordinal();
                    if (vakit != 0) {
                        vakit--;//  w  w  w. jav  a2  s .  c o  m
                    }

                    long mills = getTimeCal(cal, vakit).toDateTime().getMillis();
                    if (System.currentTimeMillis() < mills) {
                        Alarm a = new Alarm();
                        a.city = getID();
                        a.early = false;
                        a.cuma = false;
                        a.time = mills;
                        a.vakit = v;
                        a.dayOffset = ii;
                        alarms.add(a);
                    }
                } else {
                    long mills;
                    if (isAfterImsak()) {
                        mills = getTimeCal(cal, 0).toDateTime().getMillis() + getSabahTime() * 60 * 1000;
                    } else {
                        mills = getTimeCal(cal, 1).toDateTime().getMillis() - getSabahTime() * 60 * 1000;
                    }
                    if (System.currentTimeMillis() < mills) {
                        Alarm a = new Alarm();
                        a.city = getID();
                        a.cuma = false;
                        a.early = false;
                        a.time = mills;
                        a.vakit = v;
                        a.dayOffset = ii;
                        alarms.add(a);
                    }
                }
            }

            if (isEarlyNotificationActive(v)) {
                if (v != Vakit.SABAH) {
                    int vakit = v.ordinal();
                    if (vakit != 0) {
                        vakit--;
                    }

                    int early = getEarlyTime(v);
                    long mills = getTimeCal(cal, vakit).toDateTime().getMillis() - early * 60 * 1000;
                    if (System.currentTimeMillis() < mills) {
                        Alarm a = new Alarm();
                        a.city = getID();
                        a.early = true;
                        a.cuma = false;
                        a.time = mills;
                        a.vakit = v;
                        a.dayOffset = ii;
                        alarms.add(a);
                    }
                }
            }
        }
        cal = cal.plusDays(1);
    }
    if (isCumaActive()) {

        int early = getCumaTime();

        DateTime c = DateTime.now().withDayOfWeek(DateTimeConstants.FRIDAY);
        if ((c.getMillis() + 1000) < System.currentTimeMillis()) {
            c = c.plusWeeks(1);
        }
        long mills = getTimeCal(c.toLocalDate(), 2).toDateTime().getMillis();
        mills -= early * 60 * 1000;
        if (System.currentTimeMillis() < mills) {
            Alarm a = new Alarm();
            a.city = getID();
            a.cuma = true;
            a.early = false;
            a.time = mills;
            a.vakit = Vakit.OGLE;
            a.dayOffset = 0;
            alarms.add(a);
        }
    }

    return alarms;
}

From source file:com.qcadoo.view.internal.components.ganttChart.GanttChartScaleImpl.java

License:Open Source License

private JSONObject getWeeksScale() throws JSONException {

    DateTime dateTimeFrom = new DateTime(dateFrom);
    DateTime dateTimeTo = new DateTime(dateTo);
    int dateTimeFromDayOfWeek = dateTimeFrom.getDayOfWeek();
    int dateTimeToDayOfWeek = dateTimeTo.getDayOfWeek();

    List<Integer> weekNumbers = new ArrayList<Integer>();

    int lastAddedWeekNumber = 0;
    while (dateTimeFrom.compareTo(dateTimeTo) < 0) {
        lastAddedWeekNumber = dateTimeFrom.getWeekOfWeekyear();
        weekNumbers.add(lastAddedWeekNumber);
        dateTimeFrom = dateTimeFrom.plusWeeks(1);
    }//  w  ww.  j  av a 2  s. com
    if (dateTimeTo.getWeekOfWeekyear() > lastAddedWeekNumber) {
        lastAddedWeekNumber = dateTimeTo.getWeekOfWeekyear();
        weekNumbers.add(lastAddedWeekNumber);
    }

    JSONArray weeksArray = new JSONArray();
    for (int i = 0; i < weekNumbers.size(); i++) {
        if (i == 0 && dateTimeFromDayOfWeek > 5) {
            weeksArray.put(weekNumbers.get(i).toString());
        } else if (i == weekNumbers.size() - 1 && dateTimeToDayOfWeek < 3) {
            weeksArray.put(weekNumbers.get(i).toString());
        } else {
            weeksArray.put(ganttChartComponentState.translate("week") + " " + weekNumbers.get(i));
        }

    }

    JSONObject scaleObject = new JSONObject();
    JSONArray weekDays = new JSONArray();
    weekDays.put(ganttChartComponentState.translate("weekDay.short.monday"));
    weekDays.put(ganttChartComponentState.translate("weekDay.short.tuesday"));
    weekDays.put(ganttChartComponentState.translate("weekDay.short.wensday"));
    weekDays.put(ganttChartComponentState.translate("weekDay.short.thursday"));
    weekDays.put(ganttChartComponentState.translate("weekDay.short.friday"));
    weekDays.put(ganttChartComponentState.translate("weekDay.short.saturday"));
    weekDays.put(ganttChartComponentState.translate("weekDay.short.sunday"));
    scaleObject.put(JSON_ELEMENTS_IN_CATEGORY, 7);
    scaleObject.put("elementLabelsValues", weekDays);
    scaleObject.put("firstCategoryFirstElement", dateTimeFromDayOfWeek);
    scaleObject.put("lastCategoryLastElement", dateTimeToDayOfWeek);

    scaleObject.put(JSON_CATEGORIES, weeksArray);

    return scaleObject;
}