Autopsy  4.19.3
Graphical digital forensics platform for The Sleuth Kit and other tools.
IntervalUtils.java
Go to the documentation of this file.
1 /*
2  * Sleuth Kit Data Model
3  *
4  * Copyright 2018 Basis Technology Corp.
5  * Contact: carrier <at> sleuthkit <dot> org
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 package org.sleuthkit.autopsy.timeline.utils;
20 
21 import java.time.Instant;
22 import java.time.temporal.TemporalAmount;
23 import java.util.Collection;
24 import org.joda.time.DateTime;
25 import org.joda.time.DateTimeZone;
26 import org.joda.time.Interval;
27 import org.joda.time.ReadablePeriod;
29 
33 public final class IntervalUtils {
34 
35  private IntervalUtils() {
36  }
37 
38  static public Interval getSpanningInterval(Collection<DateTime> times) {
39  Interval trange = null;
40  for (DateTime t : times) {
41  if (trange == null) {
42  trange = new Interval(t.getMillis(), t.getMillis() + 1000, DateTimeZone.UTC);
43  } else {
44  trange = extendInterval(trange, t.getMillis());
45  }
46  }
47  return trange;
48  }
49 
50  static public Interval span(Interval range, final Interval range2) {
51  return new Interval(Math.min(range.getStartMillis(), range2.getStartMillis()), Math.max(range.getEndMillis(), range2.getEndMillis()), DateTimeZone.UTC);
52  }
53 
54  static public Interval extendInterval(Interval range, final Long eventTime) {
55  return new Interval(Math.min(range.getStartMillis(), eventTime), Math.max(range.getEndMillis(), eventTime + 1), DateTimeZone.UTC);
56  }
57 
58  public static DateTime middleOf(Interval interval) {
59  return new DateTime((interval.getStartMillis() + interval.getEndMillis()) / 2);
60  }
61 
62  public static Interval getAdjustedInterval(Interval oldInterval, TimeUnits requestedUnit) {
63  return getIntervalAround(middleOf(oldInterval), requestedUnit.toUnitPeriod());
64  }
65 
66  static public Interval getIntervalAround(DateTime aroundInstant, ReadablePeriod period) {
67  DateTime start = aroundInstant.minus(period);
68  DateTime end = aroundInstant.plus(period);
69  Interval range = new Interval(start, end);
70  DateTime middleOf = IntervalUtils.middleOf(range);
71  long halfRange = range.toDurationMillis() / 4;
72  return new Interval(middleOf.minus(halfRange), middleOf.plus(halfRange));
73  }
74 
75  static public Interval getIntervalAround(Instant aroundInstant, TemporalAmount temporalAmount) {
76  long start = aroundInstant.minus(temporalAmount).toEpochMilli();
77  long end = aroundInstant.plusMillis(1).plus(temporalAmount).toEpochMilli();
78  return new Interval(start, Math.max(start + 1, end));
79  }
80 
92  static public Interval getIntervalAroundMiddle(Interval interval, ReadablePeriod period) {
93  return getIntervalAround(middleOf(interval), period);
94  }
95 }
static Interval getIntervalAround(Instant aroundInstant, TemporalAmount temporalAmount)
static Interval span(Interval range, final Interval range2)
static Interval getAdjustedInterval(Interval oldInterval, TimeUnits requestedUnit)
static Interval getIntervalAroundMiddle(Interval interval, ReadablePeriod period)
static Interval getIntervalAround(DateTime aroundInstant, ReadablePeriod period)
static Interval getSpanningInterval(Collection< DateTime > times)
static Interval extendInterval(Interval range, final Long eventTime)
static DateTime middleOf(Interval interval)

Copyright © 2012-2022 Basis Technology. Generated on: Thu Oct 6 2022
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.