diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/AbstractSqlEamDb.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/AbstractSqlEamDb.java index cb8f9cf152..9dec25d4a1 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/AbstractSqlEamDb.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/AbstractSqlEamDb.java @@ -1254,64 +1254,65 @@ abstract class AbstractSqlEamDb implements EamDb { bulkPs = conn.prepareStatement(sql); Collection eamArtifacts = bulkArtifacts.get(type.getDbTableName()); - for (CorrelationAttributeInstance eamArtifact : eamArtifacts) { + if (eamArtifacts != null) { + for (CorrelationAttributeInstance eamArtifact : eamArtifacts) { - if (!eamArtifact.getCorrelationValue().isEmpty()) { + if (!eamArtifact.getCorrelationValue().isEmpty()) { - if (eamArtifact.getCorrelationCase() == null) { - throw new EamDbException("CorrelationAttributeInstance case is null for: " - + "\n\tCorrelationArtifact ID: " + eamArtifact.getID() - + "\n\tCorrelationArtifact Type: " + eamArtifact.getCorrelationType().getDisplayName() - + "\n\tCorrelationArtifact Value: " + eamArtifact.getCorrelationValue()); - } - if (eamArtifact.getCorrelationDataSource() == null) { - throw new EamDbException("CorrelationAttributeInstance data source is null for: " - + "\n\tCorrelationArtifact ID: " + eamArtifact.getID() - + "\n\tCorrelationArtifact Type: " + eamArtifact.getCorrelationType().getDisplayName() - + "\n\tCorrelationArtifact Value: " + eamArtifact.getCorrelationValue()); - } - if (eamArtifact.getKnownStatus() == null) { - throw new EamDbException("CorrelationAttributeInstance known status is null for: " - + "\n\tCorrelationArtifact ID: " + eamArtifact.getID() - + "\n\tCorrelationArtifact Type: " + eamArtifact.getCorrelationType().getDisplayName() - + "\n\tCorrelationArtifact Value: " + eamArtifact.getCorrelationValue() - + "\n\tEam Instance: " - + "\n\t\tCaseId: " + eamArtifact.getCorrelationDataSource().getCaseID() - + "\n\t\tDeviceID: " + eamArtifact.getCorrelationDataSource().getDeviceID()); - } - - if (eamArtifact.getCorrelationValue().length() < MAX_VALUE_LENGTH) { - bulkPs.setString(1, eamArtifact.getCorrelationCase().getCaseUUID()); - bulkPs.setLong(2, eamArtifact.getCorrelationDataSource().getDataSourceObjectID()); - bulkPs.setInt(3, eamArtifact.getCorrelationDataSource().getCaseID()); - bulkPs.setString(4, eamArtifact.getCorrelationValue()); - bulkPs.setString(5, eamArtifact.getFilePath()); - bulkPs.setByte(6, eamArtifact.getKnownStatus().getFileKnownValue()); - if ("".equals(eamArtifact.getComment())) { - bulkPs.setNull(7, Types.INTEGER); - } else { - bulkPs.setString(7, eamArtifact.getComment()); + if (eamArtifact.getCorrelationCase() == null) { + throw new EamDbException("CorrelationAttributeInstance case is null for: " + + "\n\tCorrelationArtifact ID: " + eamArtifact.getID() + + "\n\tCorrelationArtifact Type: " + eamArtifact.getCorrelationType().getDisplayName() + + "\n\tCorrelationArtifact Value: " + eamArtifact.getCorrelationValue()); + } + if (eamArtifact.getCorrelationDataSource() == null) { + throw new EamDbException("CorrelationAttributeInstance data source is null for: " + + "\n\tCorrelationArtifact ID: " + eamArtifact.getID() + + "\n\tCorrelationArtifact Type: " + eamArtifact.getCorrelationType().getDisplayName() + + "\n\tCorrelationArtifact Value: " + eamArtifact.getCorrelationValue()); + } + if (eamArtifact.getKnownStatus() == null) { + throw new EamDbException("CorrelationAttributeInstance known status is null for: " + + "\n\tCorrelationArtifact ID: " + eamArtifact.getID() + + "\n\tCorrelationArtifact Type: " + eamArtifact.getCorrelationType().getDisplayName() + + "\n\tCorrelationArtifact Value: " + eamArtifact.getCorrelationValue() + + "\n\tEam Instance: " + + "\n\t\tCaseId: " + eamArtifact.getCorrelationDataSource().getCaseID() + + "\n\t\tDeviceID: " + eamArtifact.getCorrelationDataSource().getDeviceID()); + } + + if (eamArtifact.getCorrelationValue().length() < MAX_VALUE_LENGTH) { + bulkPs.setString(1, eamArtifact.getCorrelationCase().getCaseUUID()); + bulkPs.setLong(2, eamArtifact.getCorrelationDataSource().getDataSourceObjectID()); + bulkPs.setInt(3, eamArtifact.getCorrelationDataSource().getCaseID()); + bulkPs.setString(4, eamArtifact.getCorrelationValue()); + bulkPs.setString(5, eamArtifact.getFilePath()); + bulkPs.setByte(6, eamArtifact.getKnownStatus().getFileKnownValue()); + if ("".equals(eamArtifact.getComment())) { + bulkPs.setNull(7, Types.INTEGER); + } else { + bulkPs.setString(7, eamArtifact.getComment()); + } + bulkPs.setLong(8, eamArtifact.getFileObjectId()); + bulkPs.addBatch(); + } else { + logger.log(Level.WARNING, ("Artifact value too long for central repository." + + "\n\tCorrelationArtifact ID: " + eamArtifact.getID() + + "\n\tCorrelationArtifact Type: " + eamArtifact.getCorrelationType().getDisplayName() + + "\n\tCorrelationArtifact Value: " + eamArtifact.getCorrelationValue()) + + "\n\tEam Instance: " + + "\n\t\tCaseId: " + eamArtifact.getCorrelationDataSource().getCaseID() + + "\n\t\tDeviceID: " + eamArtifact.getCorrelationDataSource().getDeviceID() + + "\n\t\tFilePath: " + eamArtifact.getFilePath()); } - bulkPs.setLong(8, eamArtifact.getFileObjectId()); - bulkPs.addBatch(); - } else { - logger.log(Level.WARNING, ("Artifact value too long for central repository." - + "\n\tCorrelationArtifact ID: " + eamArtifact.getID() - + "\n\tCorrelationArtifact Type: " + eamArtifact.getCorrelationType().getDisplayName() - + "\n\tCorrelationArtifact Value: " + eamArtifact.getCorrelationValue()) - + "\n\tEam Instance: " - + "\n\t\tCaseId: " + eamArtifact.getCorrelationDataSource().getCaseID() - + "\n\t\tDeviceID: " + eamArtifact.getCorrelationDataSource().getDeviceID() - + "\n\t\tFilePath: " + eamArtifact.getFilePath()); } + } + bulkPs.executeBatch(); + bulkArtifacts.get(type.getDbTableName()).clear(); } - - bulkPs.executeBatch(); - bulkArtifacts.get(type.getDbTableName()).clear(); } - TimingMetric timingMetric = HealthMonitor.getTimingMetric("Correlation Engine: Bulk insert"); HealthMonitor.submitTimingMetric(timingMetric); @@ -3295,14 +3296,14 @@ abstract class AbstractSqlEamDb implements EamDb { statement.execute(String.format(addDataSourceIdIndexTemplate, wirelessNetworksTableInstanceName, wirelessNetworksTableInstanceName)); statement.execute(String.format(addValueIndexTemplate, wirelessNetworksTableInstanceName, wirelessNetworksTableInstanceName)); statement.execute(String.format(addKnownStatusIndexTemplate, wirelessNetworksTableInstanceName, wirelessNetworksTableInstanceName)); - - //create a new mac_address_instances table and add indexes for its columns + + //create a new mac_address_instances table and add indexes for its columns statement.execute(String.format(addSsidTableTemplate, macAddressTableInstanceName, macAddressTableInstanceName)); statement.execute(String.format(addCaseIdIndexTemplate, macAddressTableInstanceName, macAddressTableInstanceName)); statement.execute(String.format(addDataSourceIdIndexTemplate, macAddressTableInstanceName, macAddressTableInstanceName)); statement.execute(String.format(addValueIndexTemplate, macAddressTableInstanceName, macAddressTableInstanceName)); statement.execute(String.format(addKnownStatusIndexTemplate, macAddressTableInstanceName, macAddressTableInstanceName)); - + //add file_obj_id column to _instances table which do not already have it String instance_type_dbname; final String objectIdColumnName = "file_obj_id";