From 536d7725026f1477f24f705d2fb0b8411eb819d7 Mon Sep 17 00:00:00 2001 From: jmillman Date: Wed, 25 May 2016 11:27:29 -0400 Subject: [PATCH] fix off by factor of 1000 bug in times, use the event id not the fileID --- .../timeline/datamodel/MergedEvent.java | 4 ++++ .../autopsy/timeline/db/EventDB.java | 2 +- .../timeline/ui/listvew/ListTimeline.java | 22 ++++++++++++------- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/timeline/datamodel/MergedEvent.java b/Core/src/org/sleuthkit/autopsy/timeline/datamodel/MergedEvent.java index 1b45669b32..64fa53bce0 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/datamodel/MergedEvent.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/datamodel/MergedEvent.java @@ -48,4 +48,8 @@ public class MergedEvent { public Collection getEventIDs() { return eventTypeMap.values(); } + + public Long getRepresentitiveEventID() { + return eventTypeMap.values().stream().findFirst().get(); + } } diff --git a/Core/src/org/sleuthkit/autopsy/timeline/db/EventDB.java b/Core/src/org/sleuthkit/autopsy/timeline/db/EventDB.java index 84ec514982..9ce0d5d025 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/db/EventDB.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/db/EventDB.java @@ -398,7 +398,7 @@ public class EventDB { for (int i = 0; i < eventIDs.size(); i++) { eventMap.put(eventTypes.get(i), eventIDs.get(i)); } - results.add(new MergedEvent(rs.getLong("time"), rs.getString("full_description"), rs.getLong("file_id"),eventMap)); + results.add(new MergedEvent(rs.getLong("time")*1000, rs.getString("full_description"), rs.getLong("file_id"),eventMap)); } } catch (SQLException sqlEx) { diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/ListTimeline.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/ListTimeline.java index b1d541f44b..4dec210e70 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/ListTimeline.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/ListTimeline.java @@ -64,7 +64,7 @@ import org.sleuthkit.autopsy.timeline.explorernodes.EventNode; import org.sleuthkit.datamodel.TskCoreException; /** - * The inner component that makes up the Lsit view. Manages the table. + * The inner component that makes up the List view. Manages the table. */ class ListTimeline extends BorderPane { @@ -91,7 +91,8 @@ class ListTimeline extends BorderPane { private TableColumn knownColumn; private final TimeLineController controller; - private ObservableList selectedEventIDs = FXCollections.observableArrayList(); + + private final ObservableList selectedEventIDs = FXCollections.observableArrayList(); /** * Constructor @@ -143,6 +144,7 @@ class ListTimeline extends BorderPane { selectedEventIDs.setAll(Iterables.getFirst(table.getSelectionModel().getSelectedItem().getEventIDs(), 0L)); } else { selectedEventIDs.setAll(table.getSelectionModel().getSelectedItems().stream() + .filter(Objects::nonNull) .flatMap(mEvent -> mEvent.getEventIDs().stream()) .collect(Collectors.toSet())); } @@ -195,7 +197,7 @@ class ListTimeline extends BorderPane { } /** - * TableCell to show the sub type of an event. + * TableCell to show the (sub) type of an event. */ private class EventTypeCell extends EventTableCell { @@ -224,8 +226,7 @@ class ListTimeline extends BorderPane { s += "C"; break; default: - throw new AssertionError(type.name()); - + throw new UnsupportedOperationException("Unknown FileSystemType: " + type.name()); } } else { s += "_"; @@ -299,7 +300,7 @@ class ListTimeline extends BorderPane { event = null; } else { //stash the event in the cell for derived classed to use. - event = controller.getEventsModel().getEventById(item.getFileID()); + event = controller.getEventsModel().getEventById(item.getRepresentitiveEventID()); } } } @@ -311,6 +312,11 @@ class ListTimeline extends BorderPane { private SingleEvent event; + /** + * Get the SingleEvent this row represents. + * + * @return The SingleEvent this row represents. + */ SingleEvent getEvent() { return event; } @@ -324,10 +330,10 @@ class ListTimeline extends BorderPane { if (empty || item == null) { event = null; } else { - event = controller.getEventsModel().getEventById(item.getFileID()); + event = controller.getEventsModel().getEventById(item.getRepresentitiveEventID()); //make context menu try { - EventNode node = EventNode.createEventNode(item.getFileID(), controller.getEventsModel()); + EventNode node = EventNode.createEventNode(event.getEventID(), controller.getEventsModel()); List menuItems = new ArrayList<>(); //for each actions avaialable on node, make a menu item.