diff --git a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java index 3a74e2d1674e36c9390bf640c9f46bccd495c7cb..1d033b7b32860cfe9eec7e4944b977ce61663a65 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java +++ b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java @@ -5695,6 +5695,43 @@ public Volume addVolume(long parentObjId, long addr, long start, long length, St releaseSingleUserCaseWriteLock(); } } + + /** + * Add a pool to the database + * + * @param parentObjId Object ID of the pool's parent + * @param type Type of pool + * @param transaction Case DB transaction + * + * @return the newly created Pool + * + * @throws TskCoreException + */ + public Pool addPool(long parentObjId, TskData.TSK_POOL_TYPE_ENUM type, CaseDbTransaction transaction) throws TskCoreException { + acquireSingleUserCaseWriteLock(); + Statement statement = null; + try { + // Insert a row for the Pool into the tsk_objects table. + CaseDbConnection connection = transaction.getConnection(); + long newObjId = addObject(parentObjId, TskData.ObjectType.POOL.getObjectType(), connection); + + // Add a row to tsk_pool_info + // INSERT INTO tsk_pool_info (obj_id, pool_type) VALUES (?, ?) + PreparedStatement preparedStatement = connection.getPreparedStatement(PREPARED_STATEMENT.INSERT_POOL_INFO); + preparedStatement.clearParameters(); + preparedStatement.setLong(1, newObjId); + preparedStatement.setShort(2, type.getValue()); + connection.executeUpdate(preparedStatement); + + // Create the new Pool object + return new Pool(this, newObjId, type.getName(), type.getValue()); + } catch (SQLException ex) { + throw new TskCoreException(String.format("Error creating pool with type %d and parent ID %d", type.getValue(), parentObjId), ex); + } finally { + closeStatement(statement); + releaseSingleUserCaseWriteLock(); + } + } /** * Add a FileSystem to the database. @@ -10903,6 +10940,7 @@ private enum PREPARED_STATEMENT { INSERT_VS_INFO("INSERT INTO tsk_vs_info (obj_id, vs_type, img_offset, block_size) VALUES (?, ?, ?, ?)"), INSERT_VS_PART_SQLITE("INSERT INTO tsk_vs_parts (obj_id, addr, start, length, desc, flags) VALUES (?, ?, ?, ?, ?, ?)"), INSERT_VS_PART_POSTGRESQL("INSERT INTO tsk_vs_parts (obj_id, addr, start, length, descr, flags) VALUES (?, ?, ?, ?, ?, ?)"), + INSERT_POOL_INFO("INSERT INTO tsk_pool_info (obj_id, pool_type) VALUES (?, ?)"), INSERT_FS_INFO("INSERT INTO tsk_fs_info (obj_id, img_offset, fs_type, block_size, block_count, root_inum, first_inum, last_inum, display_name)" + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"); diff --git a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java index 9172dce77dbf264ab0c3554cf388d7bd5d1246ed..3246cf5003c6aa4d347017d11db894859d89c3e7 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java +++ b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java @@ -105,7 +105,7 @@ private static class CaseHandles { * open file system handles are contained in a pool so we can set the locks * appropriately. */ - private final List<Long> poolFsList = new ArrayList(); + private final List<Long> poolFsList = new ArrayList<>(); private CaseHandles() { // Nothing to do here diff --git a/bindings/java/src/org/sleuthkit/datamodel/TskData.java b/bindings/java/src/org/sleuthkit/datamodel/TskData.java index 622861e56392241614d7d5b840cb4b7b1108a08e..6ff21a0a03cb007cc49d3d6fe5fa3579307ce8c2 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/TskData.java +++ b/bindings/java/src/org/sleuthkit/datamodel/TskData.java @@ -734,7 +734,7 @@ public enum TSK_POOL_TYPE_ENUM { TSK_POOL_TYPE_UNSUPP(0xffff, "Unsupported") ///< Unsupported pool container type ; - private final long poolType; + private final short poolType; private final String name; TSK_POOL_TYPE_ENUM(int poolType, String name) { @@ -764,7 +764,7 @@ public static TSK_POOL_TYPE_ENUM valueOf(long poolType) { * * @return the long value of the file type */ - public long getPoolType() { + public short getValue() { return poolType; }