From 81fd4e02858a57eef964ee823e490df7569cf768 Mon Sep 17 00:00:00 2001 From: Kelly Kelly Date: Wed, 17 Jul 2019 12:10:55 -0400 Subject: [PATCH 1/3] Moved TimelineEvent creation to TimelineManager --- .../datamodel/DetailsViewModel.java | 71 ++++++------------- 1 file changed, 23 insertions(+), 48 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/datamodel/DetailsViewModel.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/datamodel/DetailsViewModel.java index 675999b40d..8af0a149f6 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/datamodel/DetailsViewModel.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/datamodel/DetailsViewModel.java @@ -163,33 +163,8 @@ final public class DetailsViewModel { //ensure length of querried interval is not 0 end = Math.max(end, start + 1); - - //build dynamic parts of query - String querySql = "SELECT time, file_obj_id, data_source_obj_id, artifact_id, " // NON-NLS - + " event_id, " //NON-NLS - + " hash_hit, " //NON-NLS - + " tagged, " //NON-NLS - + " event_type_id, super_type_id, " - + " full_description, med_description, short_description " // NON-NLS - + " FROM " + TimelineManager.getAugmentedEventsTablesSQL(activeFilter) // NON-NLS - + " WHERE time >= " + start + " AND time < " + end + " AND " + eventManager.getSQLWhere(activeFilter) // NON-NLS - + " ORDER BY time"; // NON-NLS - - List events = new ArrayList<>(); - - try (SleuthkitCase.CaseDbQuery dbQuery = sleuthkitCase.executeQuery(querySql); - ResultSet resultSet = dbQuery.getResultSet();) { - while (resultSet.next()) { - events.add(eventHelper(resultSet)); - } - } catch (TskCoreException ex) { - logger.log(Level.SEVERE, "Failed to get events with query: " + querySql, ex); // NON-NLS - throw ex; - } catch (SQLException ex) { - logger.log(Level.SEVERE, "Failed to get events with query: " + querySql, ex); // NON-NLS - throw new TskCoreException("Failed to get events with query: " + querySql, ex); - } - return events; + + return eventManager.getEventsForFilter(start, end, activeFilter); } /** @@ -206,27 +181,27 @@ final public class DetailsViewModel { * * @throws SQLException */ - private TimelineEvent eventHelper(ResultSet resultSet) throws SQLException, TskCoreException { - - //the event tyepe to use to get the description. - int eventTypeID = resultSet.getInt("event_type_id"); - EventType eventType = eventManager.getEventType(eventTypeID).orElseThrow(() - -> new TskCoreException("Error mapping event type id " + eventTypeID + "to EventType."));//NON-NLS - - return new TimelineEvent( - resultSet.getLong("event_id"), // NON-NLS - resultSet.getLong("data_source_obj_id"), // NON-NLS - resultSet.getLong("file_obj_id"), // NON-NLS - resultSet.getLong("artifact_id"), // NON-NLS - resultSet.getLong("time"), // NON-NLS - eventType, - resultSet.getString("full_description"), // NON-NLS - resultSet.getString("med_description"), // NON-NLS - resultSet.getString("short_description"), // NON-NLS - resultSet.getInt("hash_hit") != 0, //NON-NLS - resultSet.getInt("tagged") != 0); - - } +// private TimelineEvent eventHelper(ResultSet resultSet) throws SQLException, TskCoreException { +// +// //the event tyepe to use to get the description. +// int eventTypeID = resultSet.getInt("event_type_id"); +// EventType eventType = eventManager.getEventType(eventTypeID).orElseThrow(() +// -> new TskCoreException("Error mapping event type id " + eventTypeID + "to EventType."));//NON-NLS +// +// return new TimelineEvent( +// resultSet.getLong("event_id"), // NON-NLS +// resultSet.getLong("data_source_obj_id"), // NON-NLS +// resultSet.getLong("file_obj_id"), // NON-NLS +// resultSet.getLong("artifact_id"), // NON-NLS +// resultSet.getLong("time"), // NON-NLS +// eventType, +// resultSet.getString("full_description"), // NON-NLS +// resultSet.getString("med_description"), // NON-NLS +// resultSet.getString("short_description"), // NON-NLS +// resultSet.getInt("hash_hit") != 0, //NON-NLS +// resultSet.getInt("tagged") != 0); +// +// } /** * Merge the events in the given list if they are within the same period From 561693309a81fa54fd01b1bd303bcb1c3ed58699 Mon Sep 17 00:00:00 2001 From: Kelly Kelly Date: Thu, 18 Jul 2019 11:23:27 -0400 Subject: [PATCH 2/3] Modified based on review comments --- .../ui/detailview/datamodel/DetailsViewModel.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/datamodel/DetailsViewModel.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/datamodel/DetailsViewModel.java index 8af0a149f6..dbe3232a92 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/datamodel/DetailsViewModel.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/datamodel/DetailsViewModel.java @@ -157,14 +157,8 @@ final public class DetailsViewModel { //unpack params Interval timeRange = zoom.getTimeRange(); TimelineFilter.RootFilter activeFilter = zoom.getFilterState().getActiveFilter(); - - long start = timeRange.getStartMillis() / 1000; - long end = timeRange.getEndMillis() / 1000; - - //ensure length of querried interval is not 0 - end = Math.max(end, start + 1); - return eventManager.getEventsForFilter(start, end, activeFilter); + return eventManager.getEvents(timeRange, activeFilter); } /** From 51d85ffbcd92e5ca2236e166e9310a47241778da Mon Sep 17 00:00:00 2001 From: Kelly Kelly Date: Thu, 18 Jul 2019 12:16:52 -0400 Subject: [PATCH 3/3] removed dead code --- .../datamodel/DetailsViewModel.java | 36 ------------------- 1 file changed, 36 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/datamodel/DetailsViewModel.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/datamodel/DetailsViewModel.java index dbe3232a92..fa9c84ddc5 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/datamodel/DetailsViewModel.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/datamodel/DetailsViewModel.java @@ -161,42 +161,6 @@ final public class DetailsViewModel { return eventManager.getEvents(timeRange, activeFilter); } - /** - * Map a single row in a ResultSet to an EventCluster - * - * @param resultSet the result set whose current row should be mapped - * @param typeColumn The type column (sub_type or base_type) to use as - * the type of the event cluster - * @param descriptionLOD the description level of detail for this event - * cluster - * - * @return an EventCluster corresponding to the current row in the given - * result set - * - * @throws SQLException - */ -// private TimelineEvent eventHelper(ResultSet resultSet) throws SQLException, TskCoreException { -// -// //the event tyepe to use to get the description. -// int eventTypeID = resultSet.getInt("event_type_id"); -// EventType eventType = eventManager.getEventType(eventTypeID).orElseThrow(() -// -> new TskCoreException("Error mapping event type id " + eventTypeID + "to EventType."));//NON-NLS -// -// return new TimelineEvent( -// resultSet.getLong("event_id"), // NON-NLS -// resultSet.getLong("data_source_obj_id"), // NON-NLS -// resultSet.getLong("file_obj_id"), // NON-NLS -// resultSet.getLong("artifact_id"), // NON-NLS -// resultSet.getLong("time"), // NON-NLS -// eventType, -// resultSet.getString("full_description"), // NON-NLS -// resultSet.getString("med_description"), // NON-NLS -// resultSet.getString("short_description"), // NON-NLS -// resultSet.getInt("hash_hit") != 0, //NON-NLS -// resultSet.getInt("tagged") != 0); -// -// } - /** * Merge the events in the given list if they are within the same period * General algorithm is as follows: