diff --git a/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java b/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java index 79898e515647bb2f09eb5ba6cd65f0a86821e3fb..ffc06f19e29fdfc1a754860d0781631b9165a23a 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java +++ b/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java @@ -551,14 +551,6 @@ private void createEventTables(Statement stmt) throws SQLException { + " display_name TEXT UNIQUE NOT NULL , " + " super_type_id INTEGER REFERENCES tsk_event_types(event_type_id) )"); - stmt.execute("INSERT INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES(0, 'Event Types', null)"); - stmt.execute("INSERT INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES(1, 'File System', 0)"); - stmt.execute("INSERT INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES(2, 'Web Activity', 0)"); - stmt.execute("INSERT INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES(3, 'Misc Types', 0)"); - stmt.execute("INSERT INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES(4, 'Modified', 1)"); - stmt.execute("INSERT INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES(5, 'Accessed', 1)"); - stmt.execute("INSERT INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES(6, 'Created', 1)"); - stmt.execute("INSERT INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES(7, 'Changed', 1)"); /* * Regarding the timeline event tables schema, note that several columns * in the tsk_event_descriptions table seem, at first glance, to be diff --git a/bindings/java/src/org/sleuthkit/datamodel/TimelineManager.java b/bindings/java/src/org/sleuthkit/datamodel/TimelineManager.java index 0669e5ba890dc85b8d809bfbf4c798d84f90f658..f6567fb4626341eb4365bb621de91c9d01c71daf 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/TimelineManager.java +++ b/bindings/java/src/org/sleuthkit/datamodel/TimelineManager.java @@ -41,7 +41,6 @@ import java.util.logging.Logger; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.apache.commons.lang3.StringEscapeUtils; import org.joda.time.DateTimeZone; import org.joda.time.Interval; import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_TL_EVENT; @@ -116,22 +115,26 @@ public final class TimelineManager { TimelineManager(SleuthkitCase caseDB) throws TskCoreException { this.caseDB = caseDB; - //initialize root and base event types, these are added to the DB in c++ land - ROOT_CATEGORY_AND_FILESYSTEM_TYPES.forEach(eventType -> eventTypeIDMap.put(eventType.getTypeID(), eventType)); + List<TimelineEventType> fullList = new ArrayList<>(); + fullList.addAll(ROOT_CATEGORY_AND_FILESYSTEM_TYPES); + fullList.addAll(PREDEFINED_EVENT_TYPES); - //initialize the other event types that aren't added in c++ caseDB.acquireSingleUserCaseWriteLock(); try (final CaseDbConnection con = caseDB.getConnection(); - final Statement statement = con.createStatement()) { - for (TimelineEventType type : PREDEFINED_EVENT_TYPES) { - String query = " INTO tsk_event_types(event_type_id, display_name, super_type_id) " - + "VALUES( " + type.getTypeID() + ", '" - + escapeSingleQuotes(type.getDisplayName()) + "'," - + type.getParent().getTypeID() - + ")"; - con.executeUpdate(statement, - insertOrIgnore(query)); //NON-NLS - eventTypeIDMap.put(type.getTypeID(), type); + final PreparedStatement pStatement = con.prepareStatement( + insertOrIgnore(" INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES (?, ?, ?)"), + Statement.NO_GENERATED_KEYS)) { + for (TimelineEventType type : fullList) { + pStatement.setLong(1, type.getTypeID()); + pStatement.setString(2, escapeSingleQuotes(type.getDisplayName())); + if (type != type.getParent()) { + pStatement.setLong(3, type.getParent().getTypeID()); + } else { + pStatement.setNull(3, java.sql.Types.INTEGER); + } + + con.executeUpdate(pStatement); + eventTypeIDMap.put(type.getTypeID(), type); } } catch (SQLException ex) { throw new TskCoreException("Failed to initialize timeline event types", ex); // NON-NLS