From c19ff6cf960f2dd02919024f64341b1b8e67caa0 Mon Sep 17 00:00:00 2001 From: Raman Arora Date: Thu, 9 Jul 2020 14:45:58 -0400 Subject: [PATCH] Addressed review comments. --- .../datamodel/CentralRepoAccount.java | 6 ++--- .../datamodel/CentralRepository.java | 4 ++-- .../centralrepository/datamodel/Persona.java | 22 +++++++++---------- .../datamodel/PersonaAccount.java | 18 +++++++-------- .../datamodel/PersonaAlias.java | 10 ++++----- .../datamodel/PersonaMetadata.java | 10 ++++----- .../datamodel/RdbmsCentralRepo.java | 20 +++++++---------- .../datamodel/SqliteCentralRepo.java | 12 +++++----- 8 files changed, 49 insertions(+), 53 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CentralRepoAccount.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CentralRepoAccount.java index 0124ec99ea..28e968d516 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CentralRepoAccount.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CentralRepoAccount.java @@ -230,7 +230,7 @@ public final class CentralRepoAccount { params.add("%" + accountIdentifierSubstring + "%"); AccountsQueryCallback queryCallback = new AccountsQueryCallback(); - CentralRepository.getInstance().executeQueryAsPreparedStatement(queryClause, params, queryCallback); + CentralRepository.getInstance().executeQuery(queryClause, params, queryCallback); return queryCallback.getAccountsList(); } @@ -263,7 +263,7 @@ public final class CentralRepoAccount { params.add(normalizedAccountIdentifier); AccountsQueryCallback queryCallback = new AccountsQueryCallback(); - CentralRepository.getInstance().executeQueryAsPreparedStatement(queryClause, params, queryCallback); + CentralRepository.getInstance().executeQuery(queryClause, params, queryCallback); return queryCallback.getAccountsList(); } @@ -284,7 +284,7 @@ public final class CentralRepoAccount { List params = new ArrayList<>(); // empty param list AccountsQueryCallback queryCallback = new AccountsQueryCallback(); - CentralRepository.getInstance().executeQueryAsPreparedStatement(queryClause, params, queryCallback); + CentralRepository.getInstance().executeQuery(queryClause, params, queryCallback); return queryCallback.getAccountsList(); } diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CentralRepository.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CentralRepository.java index 312ae0e6a3..bdae5a727b 100755 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CentralRepository.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CentralRepository.java @@ -841,7 +841,7 @@ public interface CentralRepository { * * @throws CentralRepoException If there is an error. */ - void executeSqlAsPreparedStatement(String sql, List params) throws CentralRepoException; + void executeCommand(String sql, List params) throws CentralRepoException; /** * Executes a SELECT query sql as a prepared statement, on the central @@ -853,7 +853,7 @@ public interface CentralRepository { * * @throws CentralRepoException If there is an error. */ - void executeQueryAsPreparedStatement(String sql, List params, CentralRepositoryDbQueryCallback queryCallback) throws CentralRepoException; + void executeQuery(String sql, List params, CentralRepositoryDbQueryCallback queryCallback) throws CentralRepoException; /** * Get account type by type name. diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/Persona.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/Persona.java index 6e3cd80a68..e7b45a5c59 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/Persona.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/Persona.java @@ -250,7 +250,7 @@ public class Persona { params.add(status.getStatusId()); params.add(examiner.getId()); - getCRInstance().executeSqlAsPreparedStatement(insertPersonaSQL, params); + getCRInstance().executeCommand(insertPersonaSQL, params); return getPersonaByUUID(uuidStr); } @@ -269,7 +269,7 @@ public class Persona { params.add(StringUtils.isBlank(comment) ? "" : comment); params.add(id); - getCRInstance().executeSqlAsPreparedStatement(updateSQL, params); + getCRInstance().executeCommand(updateSQL, params); } } @@ -288,7 +288,7 @@ public class Persona { params.add(StringUtils.isBlank(name) ? getDefaultName() : name); params.add(id); - getCRInstance().executeSqlAsPreparedStatement(updateSQL, params); + getCRInstance().executeCommand(updateSQL, params); } } @@ -345,7 +345,7 @@ public class Persona { params.add(PersonaStatus.DELETED.getStatusId()); params.add(id); - getCRInstance().executeSqlAsPreparedStatement(deleteSQL, params); + getCRInstance().executeCommand(deleteSQL, params); } } @@ -413,7 +413,7 @@ public class Persona { params.add(uuid); PersonaQueryCallback queryCallback = new PersonaQueryCallback(); - getCRInstance().executeQueryAsPreparedStatement(queryClause, params, queryCallback); + getCRInstance().executeQuery(queryClause, params, queryCallback); Collection personas = queryCallback.getPersonas(); @@ -442,7 +442,7 @@ public class Persona { params.add("%" + partialName + "%"); // partial substring search PersonaQueryCallback queryCallback = new PersonaQueryCallback(); - getCRInstance().executeQueryAsPreparedStatement(queryClause, params, queryCallback); + getCRInstance().executeQuery(queryClause, params, queryCallback); return queryCallback.getPersonas(); } @@ -475,7 +475,7 @@ public class Persona { params.add("%" + partialName + "%"); // partial substring search params.add(PersonaStatus.DELETED.getStatusId()); - getCRInstance().executeQueryAsPreparedStatement(queryClause, params, queryCallback); + getCRInstance().executeQuery(queryClause, params, queryCallback); return queryCallback.getPersonas(); } @@ -642,7 +642,7 @@ public class Persona { params.add(account.getId()); CaseForAccountInstanceQueryCallback queryCallback = new CaseForAccountInstanceQueryCallback(); - getCRInstance().executeQueryAsPreparedStatement(querySql, params, queryCallback); + getCRInstance().executeQuery(querySql, params, queryCallback); // Add any cases that aren't already on the list. for (CorrelationCase corrCase : queryCallback.getCases()) { @@ -708,7 +708,7 @@ public class Persona { params.add(account.getId()); DatasourceForAccountInstanceQueryCallback queryCallback = new DatasourceForAccountInstanceQueryCallback(); - getCRInstance().executeQueryAsPreparedStatement(querySql, params, queryCallback); + getCRInstance().executeQuery(querySql, params, queryCallback); // Add any data sources that aren't already on the list. for (CorrelationDataSource correlationDatasource : queryCallback.getDataSources()) { @@ -807,7 +807,7 @@ public class Persona { params.add(Persona.PersonaStatus.DELETED.getStatusId()); PersonaFromAccountInstanceQueryCallback queryCallback = new PersonaFromAccountInstanceQueryCallback(); - getCRInstance().executeQueryAsPreparedStatement(querySql, params, queryCallback); + getCRInstance().executeQuery(querySql, params, queryCallback); // Add persona that aren't already on the list. for (Persona persona : queryCallback.getPersonasList()) { @@ -843,7 +843,7 @@ public class Persona { params.add(Persona.PersonaStatus.DELETED.getStatusId()); PersonaFromAccountInstanceQueryCallback queryCallback = new PersonaFromAccountInstanceQueryCallback(); - getCRInstance().executeQueryAsPreparedStatement(querySql, params, queryCallback); + getCRInstance().executeQuery(querySql, params, queryCallback); // Add persona that aren't already on the list. for (Persona persona : queryCallback.getPersonasList()) { diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/PersonaAccount.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/PersonaAccount.java index 92e06663a9..917c988e1c 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/PersonaAccount.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/PersonaAccount.java @@ -148,7 +148,7 @@ public class PersonaAccount { params.add(timeStampMillis); params.add(currentExaminer.getId()); - getCRInstance().executeSqlAsPreparedStatement(insertSQL, params); + getCRInstance().executeCommand(insertSQL, params); String querySQL = PERSONA_ACCOUNTS_QUERY_CLAUSE + "WHERE persona_id = ? " @@ -161,7 +161,7 @@ public class PersonaAccount { queryParams.add(account.getIdentifier()); PersonaAccountsQueryCallback queryCallback = new PersonaAccountsQueryCallback(); - getCRInstance().executeQueryAsPreparedStatement(querySQL, queryParams, queryCallback); + getCRInstance().executeQuery(querySQL, queryParams, queryCallback); Collection accounts = queryCallback.getPersonaAccountsList(); if (accounts.size() != 1) { @@ -259,7 +259,7 @@ public class PersonaAccount { queryParams.add(personaId); PersonaAccountsQueryCallback queryCallback = new PersonaAccountsQueryCallback(); - getCRInstance().executeQueryAsPreparedStatement(querySQL, queryParams, queryCallback); + getCRInstance().executeQuery(querySQL, queryParams, queryCallback); return queryCallback.getPersonaAccountsList(); } @@ -284,7 +284,7 @@ public class PersonaAccount { queryParams.add(Persona.PersonaStatus.DELETED.getStatusId()); PersonaAccountsQueryCallback queryCallback = new PersonaAccountsQueryCallback(); - getCRInstance().executeQueryAsPreparedStatement(querySQL, queryParams, queryCallback); + getCRInstance().executeQuery(querySQL, queryParams, queryCallback); return queryCallback.getPersonaAccountsList(); } @@ -310,7 +310,7 @@ public class PersonaAccount { queryParams.add(Persona.PersonaStatus.DELETED.getStatusId()); PersonaAccountsQueryCallback queryCallback = new PersonaAccountsQueryCallback(); - getCRInstance().executeQueryAsPreparedStatement(querySQL, queryParams, queryCallback); + getCRInstance().executeQuery(querySQL, queryParams, queryCallback); return queryCallback.getPersonaAccountsList(); } @@ -336,7 +336,7 @@ public class PersonaAccount { queryParams.add(Persona.PersonaStatus.DELETED.getStatusId()); PersonaAccountsQueryCallback queryCallback = new PersonaAccountsQueryCallback(); - getCRInstance().executeQueryAsPreparedStatement(querySQL, queryParams, queryCallback); + getCRInstance().executeQuery(querySQL, queryParams, queryCallback); return queryCallback.getPersonaAccountsList(); } @@ -353,7 +353,7 @@ public class PersonaAccount { List params = new ArrayList<>(); params.add(id); - getCRInstance().executeSqlAsPreparedStatement(deleteSQL, params); + getCRInstance().executeCommand(deleteSQL, params); } /** @@ -372,7 +372,7 @@ public class PersonaAccount { params.add(StringUtils.isBlank(justification) ? "" : justification); params.add(id); - getCRInstance().executeSqlAsPreparedStatement(updateSQL, params); + getCRInstance().executeCommand(updateSQL, params); } /** @@ -428,7 +428,7 @@ public class PersonaAccount { queryParams.add(personaId); AccountsForPersonaQueryCallback queryCallback = new AccountsForPersonaQueryCallback(); - getCRInstance().executeQueryAsPreparedStatement(queryClause, queryParams, queryCallback); + getCRInstance().executeQuery(queryClause, queryParams, queryCallback); return queryCallback.getAccountsList(); } diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/PersonaAlias.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/PersonaAlias.java index 1492e8ea8b..d2df0c63d5 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/PersonaAlias.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/PersonaAlias.java @@ -114,7 +114,7 @@ public class PersonaAlias { params.add(timeStampMillis); params.add(examiner.getId()); - getCRInstance().executeSqlAsPreparedStatement(insertSQL, params); + getCRInstance().executeCommand(insertSQL, params); String queryClause = SELECT_QUERY_BASE + "WHERE pa.persona_id = ?" @@ -129,7 +129,7 @@ public class PersonaAlias { queryParams.add(examiner.getId()); PersonaAliasesQueryCallback queryCallback = new PersonaAliasesQueryCallback(); - getCRInstance().executeQueryAsPreparedStatement(queryClause, queryParams, queryCallback); + getCRInstance().executeQuery(queryClause, queryParams, queryCallback); Collection aliases = queryCallback.getAliases(); if (aliases.size() != 1) { @@ -152,7 +152,7 @@ public class PersonaAlias { List params = new ArrayList<>(); params.add(alias.getId()); - getCRInstance().executeSqlAsPreparedStatement(deleteSQL, params); + getCRInstance().executeCommand(deleteSQL, params); } /** @@ -176,7 +176,7 @@ public class PersonaAlias { params.add(StringUtils.isBlank(justification) ? "" : justification); params.add(alias.getId()); - cr.executeSqlAsPreparedStatement(updateClause, params); + cr.executeCommand(updateClause, params); } /** @@ -228,7 +228,7 @@ public class PersonaAlias { params.add(personaId); PersonaAliasesQueryCallback queryCallback = new PersonaAliasesQueryCallback(); - getCRInstance().executeQueryAsPreparedStatement(queryClause, params, queryCallback); + getCRInstance().executeQuery(queryClause, params, queryCallback); return queryCallback.getAliases(); } diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/PersonaMetadata.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/PersonaMetadata.java index 028383a50e..55830e9c54 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/PersonaMetadata.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/PersonaMetadata.java @@ -124,7 +124,7 @@ public class PersonaMetadata { params.add(timeStampMillis); params.add(examiner.getId()); - getCRInstance().executeSqlAsPreparedStatement(insertSQL, params); + getCRInstance().executeCommand(insertSQL, params); String queryClause = SELECT_QUERY_BASE + "WHERE pmd.persona_id = ?" @@ -141,7 +141,7 @@ public class PersonaMetadata { queryParams.add(examiner.getId()); PersonaMetadataQueryCallback queryCallback = new PersonaMetadataQueryCallback(); - getCRInstance().executeQueryAsPreparedStatement(queryClause, queryParams, queryCallback); + getCRInstance().executeQuery(queryClause, queryParams, queryCallback); Collection metadata = queryCallback.getMetadataList(); if (metadata.size() != 1) { @@ -165,7 +165,7 @@ public class PersonaMetadata { List params = new ArrayList<>(); params.add(metadata.getId()); - getCRInstance().executeSqlAsPreparedStatement(deleteSql, params); + getCRInstance().executeCommand(deleteSql, params); } /** @@ -190,7 +190,7 @@ public class PersonaMetadata { params.add(StringUtils.isBlank(justification) ? "" : justification); params.add(metadata.id); - getCRInstance().executeSqlAsPreparedStatement(updateSql, params); + getCRInstance().executeCommand(updateSql, params); } /** @@ -243,7 +243,7 @@ public class PersonaMetadata { params.add(personaId); PersonaMetadataQueryCallback queryCallback = new PersonaMetadataQueryCallback(); - getCRInstance().executeQueryAsPreparedStatement(queryClause, params, queryCallback); + getCRInstance().executeQuery(queryClause, params, queryCallback); return queryCallback.getMetadataList(); diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/RdbmsCentralRepo.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/RdbmsCentralRepo.java index 923a5d5fb8..7e07afb4c2 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/RdbmsCentralRepo.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/RdbmsCentralRepo.java @@ -2547,7 +2547,7 @@ abstract class RdbmsCentralRepo implements CentralRepository { } @Override - public void executeSqlAsPreparedStatement(String sql, List params) throws CentralRepoException { + public void executeCommand(String sql, List params) throws CentralRepoException { try (Connection conn = connect();) { @@ -2569,12 +2569,12 @@ abstract class RdbmsCentralRepo implements CentralRepository { } @Override - public void executeQueryAsPreparedStatement(String sql, List params, CentralRepositoryDbQueryCallback queryCallback) throws CentralRepoException { + public void executeQuery(String sql, List params, CentralRepositoryDbQueryCallback queryCallback) throws CentralRepoException { if (queryCallback == null) { throw new CentralRepoException("Query callback is null"); } - ResultSet resultSet = null; + try ( Connection conn = connect();) { PreparedStatement preparedStatement = conn.prepareStatement(sql); @@ -2586,17 +2586,13 @@ abstract class RdbmsCentralRepo implements CentralRepository { paramIndex += 1; } } - // execute query - resultSet = preparedStatement.executeQuery(); - - queryCallback.process(resultSet); + // execute query, and the callback to process result + try (ResultSet resultSet = preparedStatement.executeQuery();) { + queryCallback.process(resultSet); + } } catch (SQLException ex) { throw new CentralRepoException(String.format("Error executing prepared statement for SQL query %s", sql), ex); - } finally { - if (resultSet != null) { - CentralRepoDbUtil.closeResultSet(resultSet); - } - } + } } @Override diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/SqliteCentralRepo.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/SqliteCentralRepo.java index 5a2d8cc4b6..df0327469d 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/SqliteCentralRepo.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/SqliteCentralRepo.java @@ -834,20 +834,20 @@ final class SqliteCentralRepo extends RdbmsCentralRepo { } @Override - public void executeSqlAsPreparedStatement(String sql, List params) throws CentralRepoException { + public void executeCommand(String sql, List params) throws CentralRepoException { try { - acquireSharedLock(); - super.executeSqlAsPreparedStatement(sql, params); + acquireExclusiveLock(); + super.executeCommand(sql, params); } finally { - releaseSharedLock(); + releaseExclusiveLock(); } } @Override - public void executeQueryAsPreparedStatement(String sql, List params, CentralRepositoryDbQueryCallback queryCallback) throws CentralRepoException { + public void executeQuery(String sql, List params, CentralRepositoryDbQueryCallback queryCallback) throws CentralRepoException { try { acquireSharedLock(); - super.executeQueryAsPreparedStatement(sql, params, queryCallback); + super.executeQuery(sql, params, queryCallback); } finally { releaseSharedLock(); }