List of usage examples for org.joda.time DateTime plus
public DateTime plus(ReadablePeriod period)
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); } }