4381 fix issue with looping over null list of correlation attr types

This commit is contained in:
William Schaefer 2018-11-19 13:36:10 -05:00
parent 2782c11fef
commit f687446658

View File

@ -1254,64 +1254,65 @@ abstract class AbstractSqlEamDb implements EamDb {
bulkPs = conn.prepareStatement(sql); bulkPs = conn.prepareStatement(sql);
Collection<CorrelationAttributeInstance> eamArtifacts = bulkArtifacts.get(type.getDbTableName()); Collection<CorrelationAttributeInstance> 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) { if (eamArtifact.getCorrelationCase() == null) {
throw new EamDbException("CorrelationAttributeInstance case is null for: " throw new EamDbException("CorrelationAttributeInstance case is null for: "
+ "\n\tCorrelationArtifact ID: " + eamArtifact.getID() + "\n\tCorrelationArtifact ID: " + eamArtifact.getID()
+ "\n\tCorrelationArtifact Type: " + eamArtifact.getCorrelationType().getDisplayName() + "\n\tCorrelationArtifact Type: " + eamArtifact.getCorrelationType().getDisplayName()
+ "\n\tCorrelationArtifact Value: " + eamArtifact.getCorrelationValue()); + "\n\tCorrelationArtifact Value: " + eamArtifact.getCorrelationValue());
} }
if (eamArtifact.getCorrelationDataSource() == null) { if (eamArtifact.getCorrelationDataSource() == null) {
throw new EamDbException("CorrelationAttributeInstance data source is null for: " throw new EamDbException("CorrelationAttributeInstance data source is null for: "
+ "\n\tCorrelationArtifact ID: " + eamArtifact.getID() + "\n\tCorrelationArtifact ID: " + eamArtifact.getID()
+ "\n\tCorrelationArtifact Type: " + eamArtifact.getCorrelationType().getDisplayName() + "\n\tCorrelationArtifact Type: " + eamArtifact.getCorrelationType().getDisplayName()
+ "\n\tCorrelationArtifact Value: " + eamArtifact.getCorrelationValue()); + "\n\tCorrelationArtifact Value: " + eamArtifact.getCorrelationValue());
} }
if (eamArtifact.getKnownStatus() == null) { if (eamArtifact.getKnownStatus() == null) {
throw new EamDbException("CorrelationAttributeInstance known status is null for: " throw new EamDbException("CorrelationAttributeInstance known status is null for: "
+ "\n\tCorrelationArtifact ID: " + eamArtifact.getID() + "\n\tCorrelationArtifact ID: " + eamArtifact.getID()
+ "\n\tCorrelationArtifact Type: " + eamArtifact.getCorrelationType().getDisplayName() + "\n\tCorrelationArtifact Type: " + eamArtifact.getCorrelationType().getDisplayName()
+ "\n\tCorrelationArtifact Value: " + eamArtifact.getCorrelationValue() + "\n\tCorrelationArtifact Value: " + eamArtifact.getCorrelationValue()
+ "\n\tEam Instance: " + "\n\tEam Instance: "
+ "\n\t\tCaseId: " + eamArtifact.getCorrelationDataSource().getCaseID() + "\n\t\tCaseId: " + eamArtifact.getCorrelationDataSource().getCaseID()
+ "\n\t\tDeviceID: " + eamArtifact.getCorrelationDataSource().getDeviceID()); + "\n\t\tDeviceID: " + eamArtifact.getCorrelationDataSource().getDeviceID());
} }
if (eamArtifact.getCorrelationValue().length() < MAX_VALUE_LENGTH) { if (eamArtifact.getCorrelationValue().length() < MAX_VALUE_LENGTH) {
bulkPs.setString(1, eamArtifact.getCorrelationCase().getCaseUUID()); bulkPs.setString(1, eamArtifact.getCorrelationCase().getCaseUUID());
bulkPs.setLong(2, eamArtifact.getCorrelationDataSource().getDataSourceObjectID()); bulkPs.setLong(2, eamArtifact.getCorrelationDataSource().getDataSourceObjectID());
bulkPs.setInt(3, eamArtifact.getCorrelationDataSource().getCaseID()); bulkPs.setInt(3, eamArtifact.getCorrelationDataSource().getCaseID());
bulkPs.setString(4, eamArtifact.getCorrelationValue()); bulkPs.setString(4, eamArtifact.getCorrelationValue());
bulkPs.setString(5, eamArtifact.getFilePath()); bulkPs.setString(5, eamArtifact.getFilePath());
bulkPs.setByte(6, eamArtifact.getKnownStatus().getFileKnownValue()); bulkPs.setByte(6, eamArtifact.getKnownStatus().getFileKnownValue());
if ("".equals(eamArtifact.getComment())) { if ("".equals(eamArtifact.getComment())) {
bulkPs.setNull(7, Types.INTEGER); bulkPs.setNull(7, Types.INTEGER);
} else { } else {
bulkPs.setString(7, eamArtifact.getComment()); 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"); TimingMetric timingMetric = HealthMonitor.getTimingMetric("Correlation Engine: Bulk insert");
HealthMonitor.submitTimingMetric(timingMetric); HealthMonitor.submitTimingMetric(timingMetric);
@ -3296,7 +3297,7 @@ abstract class AbstractSqlEamDb implements EamDb {
statement.execute(String.format(addValueIndexTemplate, wirelessNetworksTableInstanceName, wirelessNetworksTableInstanceName)); statement.execute(String.format(addValueIndexTemplate, wirelessNetworksTableInstanceName, wirelessNetworksTableInstanceName));
statement.execute(String.format(addKnownStatusIndexTemplate, 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(addSsidTableTemplate, macAddressTableInstanceName, macAddressTableInstanceName));
statement.execute(String.format(addCaseIdIndexTemplate, macAddressTableInstanceName, macAddressTableInstanceName)); statement.execute(String.format(addCaseIdIndexTemplate, macAddressTableInstanceName, macAddressTableInstanceName));
statement.execute(String.format(addDataSourceIdIndexTemplate, macAddressTableInstanceName, macAddressTableInstanceName)); statement.execute(String.format(addDataSourceIdIndexTemplate, macAddressTableInstanceName, macAddressTableInstanceName));