From 985651023aa03d6cf8cd615f86e8ab7f0f8ca70d Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Thu, 29 Mar 2018 17:05:11 -0400 Subject: [PATCH 1/2] Made newCase() method synchronized and added a check for existing database --- .../centralrepository/datamodel/AbstractSqlEamDb.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/AbstractSqlEamDb.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/AbstractSqlEamDb.java index b929956b1c..36d956b09c 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/AbstractSqlEamDb.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/AbstractSqlEamDb.java @@ -176,8 +176,14 @@ public abstract class AbstractSqlEamDb implements EamDb { * @returns New Case class with populated database ID */ @Override - public CorrelationCase newCase(CorrelationCase eamCase) throws EamDbException { + public synchronized CorrelationCase newCase(CorrelationCase eamCase) throws EamDbException { Connection conn = connect(); + + // check if there is already an existing CorrelationCase for this Case + CorrelationCase cRCase = getCaseByUUID(eamCase.getCaseUUID()); + if (cRCase != null) { + return cRCase; + } PreparedStatement preparedStatement = null; From 8c8f77952e6d74fd44c9a09016f279f984088715 Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Thu, 29 Mar 2018 21:24:28 -0400 Subject: [PATCH 2/2] Always closing local connection --- .../autopsy/centralrepository/datamodel/AbstractSqlEamDb.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/AbstractSqlEamDb.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/AbstractSqlEamDb.java index 36d956b09c..37cb78a51e 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/AbstractSqlEamDb.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/AbstractSqlEamDb.java @@ -177,7 +177,6 @@ public abstract class AbstractSqlEamDb implements EamDb { */ @Override public synchronized CorrelationCase newCase(CorrelationCase eamCase) throws EamDbException { - Connection conn = connect(); // check if there is already an existing CorrelationCase for this Case CorrelationCase cRCase = getCaseByUUID(eamCase.getCaseUUID()); @@ -185,6 +184,7 @@ public abstract class AbstractSqlEamDb implements EamDb { return cRCase; } + Connection conn = connect(); PreparedStatement preparedStatement = null; String sql = "INSERT INTO cases(case_uid, org_id, case_name, creation_date, case_number, "