From 52b6aaf991fb07716ef61313236be500c4c584be Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 16 Jan 2008 00:06:38 +0000
Subject: [PATCH] Fix for issue 2817 (Command backup should detect dupplicated backupID and exit on error rather than trying to process).

---
 opends/src/server/org/opends/server/tools/BackUpDB.java |   40 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/opends/src/server/org/opends/server/tools/BackUpDB.java b/opends/src/server/org/opends/server/tools/BackUpDB.java
index 34cd4a3..e118d28 100644
--- a/opends/src/server/org/opends/server/tools/BackUpDB.java
+++ b/opends/src/server/org/opends/server/tools/BackUpDB.java
@@ -327,6 +327,7 @@
                 backUpAll.getLongIdentifier(),
                 backendID.getLongIdentifier());
         err.println(wrapText(message, MAX_LINE_WIDTH));
+        err.println(argParser.getUsage());
         return 1;
       }
     }
@@ -336,8 +337,44 @@
               backUpAll.getLongIdentifier(),
               backendID.getLongIdentifier());
       err.println(wrapText(message, MAX_LINE_WIDTH));
+      err.println(argParser.getUsage());
       return 1;
     }
+    else
+    {
+      // Check that the backendID has not been expressed twice.
+      HashSet<String> backendIDLowerCase = new HashSet<String>();
+      HashSet<String> repeatedBackendIds = new HashSet<String>();
+      StringBuilder repeatedBackends = new StringBuilder();
+      for (String id : backendID.getValues())
+      {
+        String lId = id.toLowerCase();
+        if (backendIDLowerCase.contains(lId))
+        {
+          if (!repeatedBackendIds.contains(lId))
+          {
+            repeatedBackendIds.add(lId);
+            if (repeatedBackends.length() > 0)
+            {
+              repeatedBackends.append(", ");
+            }
+            repeatedBackends.append(id);
+          }
+        }
+        else
+        {
+          backendIDLowerCase.add(lId);
+        }
+      }
+      if (repeatedBackends.length() > 0)
+      {
+        Message message = ERR_BACKUPDB_REPEATED_BACKEND_ID.get(
+            repeatedBackends.toString());
+        err.println(wrapText(message, MAX_LINE_WIDTH));
+        err.println(argParser.getUsage());
+        return 1;
+      }
+    }
 
     // If the incremental base ID was specified, then make sure it is an
     // incremental backup.
@@ -350,6 +387,7 @@
                         incrementalBaseID.getLongIdentifier(),
                         incremental.getLongIdentifier());
         err.println(wrapText(message, MAX_LINE_WIDTH));
+        err.println(argParser.getUsage());
         return 1;
       }
     }
@@ -364,6 +402,7 @@
                       encrypt.getLongIdentifier(),
                       signHash.getLongIdentifier());
       err.println(wrapText(message, MAX_LINE_WIDTH));
+      err.println(argParser.getUsage());
       return 1;
     }
 
@@ -375,6 +414,7 @@
               signHash.getLongIdentifier(),
               hash.getLongIdentifier());
       err.println(wrapText(message, MAX_LINE_WIDTH));
+      err.println(argParser.getUsage());
       return 1;
     }
 

--
Gitblit v1.10.0