Sleuth Kit Java Bindings (JNI) 4.14.0
Java bindings for using The Sleuth Kit
Loading...
Searching...
No Matches
GeoTrackPoints.java
Go to the documentation of this file.
1/*
2 * Sleuth Kit Data Model
3 *
4 * Copyright 2020 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 */
19package org.sleuthkit.datamodel.blackboardutils.attributes;
20
21import com.google.gson.annotations.SerializedName;
22import java.util.ArrayList;
23import java.util.Iterator;
24import java.util.List;
25import java.util.stream.Collectors;
26
38public class GeoTrackPoints implements Iterable<GeoTrackPoints.TrackPoint> {
39
40 private final List<TrackPoint> pointList;
41
45 public GeoTrackPoints() {
46 pointList = new ArrayList<>();
47 }
48
54 public void addPoint(TrackPoint trackPoint) {
55 if (trackPoint == null) {
56 throw new IllegalArgumentException("addPoint was passed a null track point");
57 }
58
59 pointList.add(trackPoint);
60 }
61
62 @Override
63 public Iterator<TrackPoint> iterator() {
64 return pointList.iterator();
65 }
66
72 public boolean isEmpty() {
73 return pointList.isEmpty();
74 }
75
83 public Long getStartTime() {
84 List<TrackPoint> orderedPoints = getTimeOrderedPoints();
85 if (orderedPoints != null) {
86 for (TrackPoint point : orderedPoints) {
87 if (point.getTimeStamp() != null) {
88 return point.getTimeStamp();
89 }
90 }
91 }
92 return null;
93 }
94
102 public Long getEndTime() {
103 List<TrackPoint> orderedPoints = getTimeOrderedPoints();
104 if (orderedPoints != null) {
105 for (int index = orderedPoints.size() - 1; index >= 0; index--) {
106 TrackPoint point = orderedPoints.get(index);
107 if (point.getTimeStamp() != null) {
108 return point.getTimeStamp();
109 }
110 }
111 }
112 return null;
113 }
114
121 private List<TrackPoint> getTimeOrderedPoints() {
122 return pointList.stream().sorted().collect(Collectors.toCollection(ArrayList::new));
123 }
124
129 public final static class TrackPoint extends GeoWaypoints.Waypoint implements Comparable<TrackPoint> {
130
131 @SerializedName("TSK_GEO_VELOCITY")
132 private final Double velocity;
133 @SerializedName("TSK_DISTANCE_FROM_HOMEPOINT")
134 private final Double distanceFromHomePoint;
135 @SerializedName("TSK_DISTANCE_TRAVELED")
136 private final Double distanceTraveled;
137 @SerializedName("TSK_DATETIME")
138 private final Long timestamp;
139
163 public TrackPoint(Double latitude,
164 Double longitude,
165 Double altitude,
166 String name,
167 Double velocity,
168 Double distanceFromHomePoint,
169 Double distanceTraveled,
170 Long timestamp) {
171 super(latitude, longitude, altitude, name);
172 this.velocity = velocity;
173 this.distanceFromHomePoint = distanceFromHomePoint;
174 this.distanceTraveled = distanceTraveled;
175 this.timestamp = timestamp;
176 }
177
184 public Double getVelocity() {
185 return velocity;
186 }
187
194 public Double getDistanceFromHomePoint() {
195 return distanceFromHomePoint;
196 }
197
204 public Double getDistanceTraveled() {
205 return distanceTraveled;
206 }
207
214 public Long getTimeStamp() {
215 return timestamp;
216 }
217
218 @Override
219 public int compareTo(TrackPoint otherTP) {
220 Long otherTimeStamp = otherTP.getTimeStamp();
221
222 if (timestamp == null) {
223 if (otherTimeStamp != null) {
224 return -1;
225 } else {
226 return 0;
227 }
228 } else if (timestamp != null && otherTimeStamp == null) {
229 return 1;
230 } else {
231 return timestamp.compareTo(otherTP.getTimeStamp());
232 }
233 }
234 }
235
236}
TrackPoint(Double latitude, Double longitude, Double altitude, String name, Double velocity, Double distanceFromHomePoint, Double distanceTraveled, Long timestamp)
Waypoint(Double latitude, Double longitude, Double altitude, String name)

Copyright © 2011-2024 Brian Carrier. (carrier -at- sleuthkit -dot- org)
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.