Example usage for org.joda.time DateTime plus

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

Introduction

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

Prototype

public DateTime plus(ReadablePeriod period) 

Source Link

Document

Returns a copy of this datetime with the specified period added.

Usage

From source file:org.sleuthkit.autopsy.timeline.ui.ViewFrame.java

License:Open Source License

/**
 * Refresh the Histogram to represent the current state of the DB.
 *///from w  w w. jav a2 s.  c  o m
@NbBundle.Messages({ "ViewFrame.histogramTask.title=Rebuilding Histogram",
        "ViewFrame.histogramTask.preparing=Preparing", "ViewFrame.histogramTask.resetUI=Resetting UI",
        "ViewFrame.histogramTask.queryDb=Querying FB", "ViewFrame.histogramTask.updateUI2=Updating UI" })
synchronized private void refreshHistorgram() {
    if (histogramTask != null) {
        histogramTask.cancel(true);
    }

    histogramTask = new LoggedTask<Void>(Bundle.ViewFrame_histogramTask_title(), true) {
        private final Lighting lighting = new Lighting();

        @Override
        protected Void call() throws Exception {

            updateMessage(ViewFrame_histogramTask_preparing());

            long max = 0;
            final RangeDivisionInfo rangeInfo = RangeDivisionInfo
                    .getRangeDivisionInfo(filteredEvents.getSpanningInterval());
            final long lowerBound = rangeInfo.getLowerBound();
            final long upperBound = rangeInfo.getUpperBound();
            Interval timeRange = new Interval(new DateTime(lowerBound, TimeLineController.getJodaTimeZone()),
                    new DateTime(upperBound, TimeLineController.getJodaTimeZone()));

            //extend range to block bounderies (ie day, month, year)
            int p = 0; // progress counter

            //clear old data, and reset ranges and series
            Platform.runLater(() -> {
                updateMessage(ViewFrame_histogramTask_resetUI());

            });

            ArrayList<Long> bins = new ArrayList<>();

            DateTime start = timeRange.getStart();
            while (timeRange.contains(start)) {
                if (isCancelled()) {
                    return null;
                }
                DateTime end = start.plus(rangeInfo.getPeriodSize().getPeriod());
                final Interval interval = new Interval(start, end);
                //increment for next iteration

                start = end;

                updateMessage(ViewFrame_histogramTask_queryDb());
                //query for current range
                long count = filteredEvents.getEventCounts(interval).values().stream().mapToLong(Long::valueOf)
                        .sum();
                bins.add(count);

                max = Math.max(count, max);

                final double fMax = Math.log(max);
                final ArrayList<Long> fbins = new ArrayList<>(bins);
                Platform.runLater(() -> {
                    updateMessage(ViewFrame_histogramTask_updateUI2());

                    histogramBox.getChildren().clear();

                    for (Long bin : fbins) {
                        if (isCancelled()) {
                            break;
                        }
                        Region bar = new Region();
                        //scale them to fit in histogram height
                        bar.prefHeightProperty()
                                .bind(histogramBox.heightProperty().multiply(Math.log(bin)).divide(fMax));
                        bar.setMaxHeight(USE_PREF_SIZE);
                        bar.setMinHeight(USE_PREF_SIZE);
                        bar.setBackground(GRAY_BACKGROUND);
                        bar.setOnMouseEntered((MouseEvent event) -> {
                            Tooltip.install(bar, new Tooltip(bin.toString()));
                        });
                        bar.setEffect(lighting);
                        //they each get equal width to fill the histogram horizontally
                        HBox.setHgrow(bar, Priority.ALWAYS);
                        histogramBox.getChildren().add(bar);
                    }
                });
            }
            return null;
        }

    };
    new Thread(histogramTask).start();
    controller.monitorTask(histogramTask);
}

From source file:org.sleuthkit.autopsy.timeline.ui.VisualizationPanel.java

License:Open Source License

synchronized private void refreshHistorgram() {

    if (histogramTask != null) {
        histogramTask.cancel(true);/*from  w w  w  . j a va2  s.c  om*/
    }

    histogramTask = new LoggedTask<Void>(
            NbBundle.getMessage(this.getClass(), "VisualizationPanel.histogramTask.title"), true) {

        @Override
        protected Void call() throws Exception {

            updateMessage(NbBundle.getMessage(this.getClass(), "VisualizationPanel.histogramTask.preparing"));

            long max = 0;
            final RangeDivisionInfo rangeInfo = RangeDivisionInfo
                    .getRangeDivisionInfo(filteredEvents.getSpanningInterval());
            final long lowerBound = rangeInfo.getLowerBound();
            final long upperBound = rangeInfo.getUpperBound();
            Interval timeRange = new Interval(new DateTime(lowerBound, TimeLineController.getJodaTimeZone()),
                    new DateTime(upperBound, TimeLineController.getJodaTimeZone()));

            //extend range to block bounderies (ie day, month, year)
            int p = 0; // progress counter

            //clear old data, and reset ranges and series
            Platform.runLater(() -> {
                updateMessage(NbBundle.getMessage(this.getClass(), "VisualizationPanel.histogramTask.resetUI"));

            });

            ArrayList<Long> bins = new ArrayList<>();

            DateTime start = timeRange.getStart();
            while (timeRange.contains(start)) {
                if (isCancelled()) {
                    return null;
                }
                DateTime end = start.plus(rangeInfo.getPeriodSize().getPeriod());
                final Interval interval = new Interval(start, end);
                //increment for next iteration

                start = end;

                updateMessage(NbBundle.getMessage(this.getClass(), "VisualizationPanel.histogramTask.queryDb"));
                //query for current range
                long count = filteredEvents.getEventCounts(interval).values().stream().mapToLong(Long::valueOf)
                        .sum();
                bins.add(count);

                max = Math.max(count, max);

                final double fMax = Math.log(max);
                final ArrayList<Long> fbins = new ArrayList<>(bins);
                Platform.runLater(() -> {
                    updateMessage(
                            NbBundle.getMessage(this.getClass(), "VisualizationPanel.histogramTask.updateUI2"));

                    histogramBox.getChildren().clear();

                    for (Long bin : fbins) {
                        if (isCancelled()) {
                            break;
                        }
                        Region bar = new Region();
                        //scale them to fit in histogram height
                        bar.prefHeightProperty()
                                .bind(histogramBox.heightProperty().multiply(Math.log(bin)).divide(fMax));
                        bar.setMaxHeight(USE_PREF_SIZE);
                        bar.setMinHeight(USE_PREF_SIZE);
                        bar.setBackground(background);
                        bar.setOnMouseEntered((MouseEvent event) -> {
                            Tooltip.install(bar, new Tooltip(bin.toString()));
                        });
                        bar.setEffect(lighting);
                        //they each get equal width to fill the histogram horizontally
                        HBox.setHgrow(bar, Priority.ALWAYS);
                        histogramBox.getChildren().add(bar);
                    }
                });
            }
            return null;
        }

    };
    new Thread(histogramTask).start();
    controller.monitorTask(histogramTask);
}

From source file:org.sleuthkit.autopsy.timeline.utils.IntervalUtils.java

License:Open Source License

static public Interval getIntervalAround(DateTime aroundInstant, ReadablePeriod period) {
    DateTime start = aroundInstant.minus(period);
    DateTime end = aroundInstant.plus(period);
    Interval range = new Interval(start, end);
    DateTime middleOf = IntervalUtils.middleOf(range);
    long halfRange = range.toDurationMillis() / 4;
    final Interval newInterval = new Interval(middleOf.minus(halfRange), middleOf.plus(halfRange));
    return newInterval;
}

From source file:org.springframework.analytics.metrics.redis.RedisAggregateCounterRepository.java

License:Apache License

/**
 * For each query, we need to convert the interval into two variations. One is the start and end points rounded to
 * the resolution (used to calculate the number of entries to be returned from the query). The second is the start
 * and end buckets we have to retrieve which may contain entries for the interval. For example, when querying
 * at day resolution, the number of entries is the number of Joda time days between the start (rounded down to a
 * day boundary) and the end plus one day (also rounded down). However, we need load the data from the buckets
 * from the month the start day occurs in to the month end day occurs in. These are then concatenated, using the
 * start day as the start index into the first array, and writing the total number of entries in sequence from that
 * point into the combined result counts array.
 *///from   w  w w . j  a v a  2  s . c o m
@Override
public AggregateCounter getCounts(String name, Interval interval, AggregateCounterResolution resolution) {

    DateTime end = interval.getEnd();
    Chronology c = interval.getChronology();

    long[] counts;

    if (resolution == AggregateCounterResolution.minute) {
        // Iterate through each hour in the interval and load the minutes for it
        MutableDateTime dt = new MutableDateTime(interval.getStart());
        dt.setRounding(c.hourOfDay());
        Duration step = Duration.standardHours(1);
        List<long[]> hours = new ArrayList<long[]>();
        while (dt.isBefore(end) || dt.isEqual(end)) {
            hours.add(getMinCountsForHour(name, dt));
            dt.add(step);
        }
        counts = MetricUtils.concatArrays(hours, interval.getStart().getMinuteOfHour(),
                interval.toPeriod().toStandardMinutes().getMinutes() + 1);

    } else if (resolution == AggregateCounterResolution.hour) {
        DateTime cursor = new DateTime(c.dayOfMonth().roundFloor(interval.getStart().getMillis()));
        List<long[]> days = new ArrayList<long[]>();
        Duration step = Duration.standardHours(24);
        while (cursor.isBefore(end)) {
            days.add(getHourCountsForDay(name, cursor));
            cursor = cursor.plus(step);
        }

        counts = MetricUtils.concatArrays(days, interval.getStart().getHourOfDay(),
                interval.toPeriod().toStandardHours().getHours() + 1);

    } else if (resolution == AggregateCounterResolution.day) {
        DateTime startDay = new DateTime(c.dayOfYear().roundFloor(interval.getStart().getMillis()));
        DateTime endDay = new DateTime(c.dayOfYear().roundFloor(end.plusDays(1).getMillis()));
        int nDays = Days.daysBetween(startDay, endDay).getDays();
        DateTime cursor = new DateTime(c.monthOfYear().roundFloor(interval.getStart().getMillis()));
        List<long[]> months = new ArrayList<long[]>();
        DateTime endMonth = new DateTime(
                c.monthOfYear().roundCeiling(interval.getEnd().plusMonths(1).getMillis()));
        while (cursor.isBefore(endMonth)) {
            months.add(getDayCountsForMonth(name, cursor));
            cursor = cursor.plusMonths(1);
        }

        counts = MetricUtils.concatArrays(months, interval.getStart().getDayOfMonth() - 1, nDays);
    } else if (resolution == AggregateCounterResolution.month) {
        DateTime startMonth = new DateTime(c.monthOfYear().roundFloor(interval.getStartMillis()));
        DateTime endMonth = new DateTime(c.monthOfYear().roundFloor(end.plusMonths(1).getMillis()));
        int nMonths = Months.monthsBetween(startMonth, endMonth).getMonths();
        DateTime cursor = new DateTime(c.year().roundFloor(interval.getStartMillis()));
        List<long[]> years = new ArrayList<long[]>();
        DateTime endYear = new DateTime(c.year().roundCeiling(interval.getEnd().plusYears(1).getMillis()));
        while (cursor.isBefore(endYear)) {
            years.add(getMonthCountsForYear(name, cursor));
            cursor = cursor.plusYears(1);
        }

        counts = MetricUtils.concatArrays(years, interval.getStart().getMonthOfYear() - 1, nMonths);
    } else if (resolution == AggregateCounterResolution.year) {
        DateTime startYear = new DateTime(interval.getStart().getYear(), 1, 1, 0, 0);
        DateTime endYear = new DateTime(end.getYear() + 1, 1, 1, 0, 0);
        int nYears = Years.yearsBetween(startYear, endYear).getYears();
        Map<String, Long> yearCounts = getYearCounts(name);
        counts = new long[nYears];

        for (int i = 0; i < nYears; i++) {
            int year = startYear.plusYears(i).getYear();
            Long count = yearCounts.get(Integer.toString(year));
            if (count == null) {
                count = 0L;
            }
            counts[i] = count;
        }
    } else {
        throw new IllegalStateException("Shouldn't happen. Unhandled resolution: " + resolution);
    }
    return new AggregateCounter(name, interval, counts, resolution);
}

From source file:org.springframework.cloud.consul.discovery.TtlScheduler.java

License:Apache License

@Scheduled(initialDelay = 0, fixedRateString = "${spring.cloud.consul.discovery.heartbeat.fixedRate:15000}")
private void heartbeatServices() {
    for (String serviceId : serviceHeartbeats.keySet()) {
        DateTime latestHeartbeatDoneForService = serviceHeartbeats.get(serviceId);
        if (latestHeartbeatDoneForService.plus(configuration.getHeartbeatInterval()).isBefore(DateTime.now())) {
            String checkId = serviceId;
            if (!checkId.startsWith("service:")) {
                checkId = "service:" + checkId;
            }//  www  .  j av a  2 s .c o m
            client.agentCheckPass(checkId);
            log.debug("Sending consul heartbeat for: " + serviceId);
            serviceHeartbeats.put(serviceId, DateTime.now());
        }
    }
}

From source file:org.springframework.xd.analytics.metrics.redis.RedisAggregateCounterRepository.java

License:Apache License

/**
 * For each query, we need to convert the interval into two variations. One is the start and end points rounded to
 * the resolution (used to calculate the number of entries to be returned from the query). The second is the start
 * and end buckets we have to retrieve which may contain entries for the interval. For example, when querying
 * at day resolution, the number of entries is the number of Joda time days between the start (rounded down to a
 * day boundary) and the end plus one day (also rounded down). However, we need load the data from the buckets
 * from the month the start day occurs in to the month end day occurs in. These are then concatenated, using the
 * start day as the start index into the first array, and writing the total number of entries in sequence from that
 * point into the combined result counts array.
 *///from   w  w  w.j a  v a2s  .  c o m
@Override
public AggregateCount getCounts(String name, Interval interval, AggregateCountResolution resolution) {

    DateTime end = interval.getEnd();
    Chronology c = interval.getChronology();

    long[] counts;

    if (resolution == AggregateCountResolution.minute) {
        // Iterate through each hour in the interval and load the minutes for it
        MutableDateTime dt = new MutableDateTime(interval.getStart());
        dt.setRounding(c.hourOfDay());
        Duration step = Duration.standardHours(1);
        List<long[]> hours = new ArrayList<long[]>();
        while (dt.isBefore(end) || dt.isEqual(end)) {
            hours.add(getMinCountsForHour(name, dt));
            dt.add(step);
        }
        counts = MetricUtils.concatArrays(hours, interval.getStart().getMinuteOfHour(),
                interval.toPeriod().toStandardMinutes().getMinutes() + 1);

    } else if (resolution == AggregateCountResolution.hour) {
        DateTime cursor = new DateTime(c.dayOfMonth().roundFloor(interval.getStart().getMillis()));
        List<long[]> days = new ArrayList<long[]>();
        Duration step = Duration.standardHours(24);
        while (cursor.isBefore(end)) {
            days.add(getHourCountsForDay(name, cursor));
            cursor = cursor.plus(step);
        }

        counts = MetricUtils.concatArrays(days, interval.getStart().getHourOfDay(),
                interval.toPeriod().toStandardHours().getHours() + 1);

    } else if (resolution == AggregateCountResolution.day) {
        DateTime startDay = new DateTime(c.dayOfYear().roundFloor(interval.getStart().getMillis()));
        DateTime endDay = new DateTime(c.dayOfYear().roundFloor(end.plusDays(1).getMillis()));
        int nDays = Days.daysBetween(startDay, endDay).getDays();
        DateTime cursor = new DateTime(c.monthOfYear().roundFloor(interval.getStart().getMillis()));
        List<long[]> months = new ArrayList<long[]>();
        DateTime endMonth = new DateTime(
                c.monthOfYear().roundCeiling(interval.getEnd().plusMonths(1).getMillis()));
        while (cursor.isBefore(endMonth)) {
            months.add(getDayCountsForMonth(name, cursor));
            cursor = cursor.plusMonths(1);
        }

        counts = MetricUtils.concatArrays(months, interval.getStart().getDayOfMonth() - 1, nDays);
    } else if (resolution == AggregateCountResolution.month) {
        DateTime startMonth = new DateTime(c.monthOfYear().roundFloor(interval.getStartMillis()));
        DateTime endMonth = new DateTime(c.monthOfYear().roundFloor(end.plusMonths(1).getMillis()));
        int nMonths = Months.monthsBetween(startMonth, endMonth).getMonths();
        DateTime cursor = new DateTime(c.year().roundFloor(interval.getStartMillis()));
        List<long[]> years = new ArrayList<long[]>();
        DateTime endYear = new DateTime(c.year().roundCeiling(interval.getEnd().plusYears(1).getMillis()));
        while (cursor.isBefore(endYear)) {
            years.add(getMonthCountsForYear(name, cursor));
            cursor = cursor.plusYears(1);
        }

        counts = MetricUtils.concatArrays(years, interval.getStart().getMonthOfYear() - 1, nMonths);
    } else if (resolution == AggregateCountResolution.year) {
        DateTime startYear = new DateTime(interval.getStart().getYear(), 1, 1, 0, 0);
        DateTime endYear = new DateTime(end.getYear() + 1, 1, 1, 0, 0);
        int nYears = Years.yearsBetween(startYear, endYear).getYears();
        Map<String, Long> yearCounts = getYearCounts(name);
        counts = new long[nYears];

        for (int i = 0; i < nYears; i++) {
            int year = startYear.plusYears(i).getYear();
            Long count = yearCounts.get(Integer.toString(year));
            if (count == null) {
                count = 0L;
            }
            counts[i] = count;
        }
    } else {
        throw new IllegalStateException("Shouldn't happen. Unhandled resolution: " + resolution);
    }
    return new AggregateCount(name, interval, counts, resolution);
}

From source file:org.xsystem.utils.DateUtil.java

License:Apache License

public static String plusISODateAsString(String sd, long mc) {
    DateTime dt = DateTime.parse(sd);
    DateTime dt2 = dt.plus(mc);
    long l = dt2.getMillis();
    String result = ISODateTimeFormat.dateTimeNoMillis().print(l);
    return result;
}

From source file:petascope.util.TimeUtil.java

License:Open Source License

/**
 * Add a certain time duration to a timestamp.
 *
 * @param timestamp      The starting time instant.
 * @param coefficient    The coefficient of the second addend.
 * @param timeResolution The time resolution to be added to timestamp ("c" times).
 * @return The ISO representation of timestamp+c*timeResolution.
 * @throws PetascopeException//w ww .j  av  a  2s .  c  o m
 */
public static String plus(String timestamp, Double coefficient, String timeResolution)
        throws PetascopeException {
    DateTime dt = isoFmt.parseDateTime(fix(timestamp));
    DateTime outDt = dt.plus((long) (getMillis(timeResolution) * coefficient));
    return outDt.toString();
}

From source file:rapture.event.generator.EventGenerator.java

License:Open Source License

public static Collection<? extends TimedEventRecord> generateWeeklyEventRecords(DateTime startDt,
        EventHelper eventHelper) {/*from  ww  w .  jav  a  2s . c o  m*/
    // Given a start date, look forward one week (7 days), showing events
    // that are at most one minute granular. Don't show periodic events
    // Do some attempt to order them correctly
    List<TimedEventRecord> records = new ArrayList<TimedEventRecord>();
    int currentDow = startDt.getDayOfWeek();
    DateTime endPoint = startDt.plusDays(7);
    DateTime current = startDt.plus(0);
    int endDow = endPoint.getDayOfWeek();
    boolean first = true;
    while (currentDow != endDow || first) {
        first = false;
        String startPoint = String.format("/timezone/%s", getDOWName(currentDow));
        List<TimedEventRecord> recs = eventHelper.filterEvent(startPoint, current);
        if (recs != null) {
            records.addAll(recs);
        }
        startPoint = "/timezone/daily";
        recs = eventHelper.filterEvent(startPoint, current);
        if (recs != null) {
            records.addAll(recs);
        }
        if (isWeekend(currentDow)) {
            startPoint = "/timezone/weekend";
            recs = eventHelper.filterEvent(startPoint, current);
        } else {
            startPoint = "/timezone/weekday";
            recs = eventHelper.filterEvent(startPoint, current);
        }
        if (recs != null) {
            records.addAll(recs);
        }
        current = current.plusDays(1);
        currentDow = current.getDayOfWeek();
    }
    return records;
}

From source file:sk.linhard.openair.android.OpenAirApplication.java

License:Open Source License

public DateTime getShiftedTime() {
    DateTime r = new DateTime();
    if (timeShift == null) {
        return r;
    } else {/*from   www  .  j a  v a  2  s .  c om*/
        return r.plus(timeShift);
    }
}