diff --git a/Core/src/org/sleuthkit/autopsy/logicalimager/configuration/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/logicalimager/configuration/Bundle.properties-MERGED index 7ef61a8452..13c4a53268 100644 --- a/Core/src/org/sleuthkit/autopsy/logicalimager/configuration/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/logicalimager/configuration/Bundle.properties-MERGED @@ -37,6 +37,9 @@ ConfigVisualPanel2.editConfiguration=Configure imager ConfigVisualPanel2.editRuleError=Edit rule error ConfigVisualPanel2.editRuleSet=Edit Rule ConfigVisualPanel2.newRule.name=New Rule +# {0} - ruleName +ConfigVisualPanel2.newRuleError.duplicateName=A rule with named "{0}" already exists please choose a different name +ConfigVisualPanel2.newRuleError.title=New rule error ConfigVisualPanel2.ok=OK ConfigVisualPanel2.rulesTable.columnModel.title0=Rule Name ConfigVisualPanel2.rulesTable.columnModel.title1=Description diff --git a/Core/src/org/sleuthkit/autopsy/logicalimager/configuration/ConfigVisualPanel2.java b/Core/src/org/sleuthkit/autopsy/logicalimager/configuration/ConfigVisualPanel2.java index 5b2468efdc..c16feb8dbf 100644 --- a/Core/src/org/sleuthkit/autopsy/logicalimager/configuration/ConfigVisualPanel2.java +++ b/Core/src/org/sleuthkit/autopsy/logicalimager/configuration/ConfigVisualPanel2.java @@ -442,7 +442,10 @@ final class ConfigVisualPanel2 extends JPanel { } }//GEN-LAST:event_editRuleButtonActionPerformed - @Messages({"ConfigVisualPanel2.newRule.name=New Rule"}) + @Messages({"ConfigVisualPanel2.newRule.name=New Rule", + "ConfigVisualPanel2.newRuleError.title=New rule error", + "# {0} - ruleName", + "ConfigVisualPanel2.newRuleError.duplicateName=A rule with named \"{0}\" already exists please choose a different name"}) private void newRuleButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newRuleButtonActionPerformed NewRulePanel panel; panel = new NewRulePanel(okButton, cancelButton); @@ -455,14 +458,22 @@ final class ConfigVisualPanel2 extends JPanel { null, new Object[]{okButton, cancelButton}, okButton); if (option == JOptionPane.OK_OPTION) { try { - // Save the new rule + ImmutablePair ruleMap = panel.toRule(); + if (ruleExists(ruleMap)) { + JOptionPane.showMessageDialog(this, + Bundle.ConfigVisualPanel2_newRuleError_duplicateName(ruleMap.getKey()), + Bundle.ConfigVisualPanel2_newRuleError_title(), + JOptionPane.ERROR_MESSAGE); + continue; + } + // Save the new rule appendRow(ruleMap); break; } catch (IOException | NumberFormatException ex) { JOptionPane.showMessageDialog(this, ex.getMessage(), - "New rule error", + Bundle.ConfigVisualPanel2_newRuleError_title(), JOptionPane.ERROR_MESSAGE); // let user fix the error } @@ -767,6 +778,22 @@ final class ConfigVisualPanel2 extends JPanel { updatePanel(configFilename, config, ruleMap.getKey()); } + /** + * Check if a rule with the same name as this rule already exists + * + * @param ruleMap the rule to check the name of + * + * @return true if it exists, false otherwise + */ + private boolean ruleExists(ImmutablePair ruleMap) { + for (LogicalImagerRule rule : getRuleSetFromCurrentConfig().getRules()) { + if (rule.getName().equals(ruleMap.getKey())) { + return true; + } + } + return false; + } + private void appendRow(ImmutablePair ruleMap) { getRuleSetFromCurrentConfig().getRules().add(ruleMap.getValue()); updatePanel(configFilename, config, ruleMap.getKey());