From 2273c26793fe6e3abfd90a400823e8e46b3303bb Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Mon, 15 Dec 2008 16:07:29 +0000
Subject: [PATCH] - [Issue 274]  Recurring Tasks

---
 opends/src/server/org/opends/server/tools/tasks/TaskTool.java |  135 +++++++++++++++++++++++++++-----------------
 1 files changed, 83 insertions(+), 52 deletions(-)

diff --git a/opends/src/server/org/opends/server/tools/tasks/TaskTool.java b/opends/src/server/org/opends/server/tools/tasks/TaskTool.java
index 0b77a00..344f22e 100644
--- a/opends/src/server/org/opends/server/tools/tasks/TaskTool.java
+++ b/opends/src/server/org/opends/server/tools/tasks/TaskTool.java
@@ -88,6 +88,9 @@
   // Argument for describing the task's start time
   StringArgument startArg;
 
+  // Argument to indicate a recurring task
+  StringArgument recurringArg;
+
   // Argument for specifying completion notifications
   StringArgument completionNotificationArg;
 
@@ -133,79 +136,88 @@
    * @return LDAPConnectionArgumentParser for processing CLI input
    */
   protected LDAPConnectionArgumentParser createArgParser(String className,
-      Message toolDescription)
-    {
+    Message toolDescription)
+  {
     ArgumentGroup ldapGroup = new ArgumentGroup(
-            INFO_DESCRIPTION_TASK_LDAP_ARGS.get(), 1001);
+      INFO_DESCRIPTION_TASK_LDAP_ARGS.get(), 1001);
 
     argParser = new LDAPConnectionArgumentParser(className,
-            toolDescription, false, ldapGroup, alwaysSSL);
+      toolDescription, false, ldapGroup, alwaysSSL);
 
     ArgumentGroup taskGroup = new ArgumentGroup(
-            INFO_DESCRIPTION_TASK_TASK_ARGS.get(), 1000);
+      INFO_DESCRIPTION_TASK_TASK_ARGS.get(), 1000);
 
     try {
       StringArgument propertiesFileArgument = new StringArgument(
-          "propertiesFilePath",
-          null, OPTION_LONG_PROP_FILE_PATH,
-          false, false, true, INFO_PROP_FILE_PATH_PLACEHOLDER.get(), null, null,
-          INFO_DESCRIPTION_PROP_FILE_PATH.get());
+        "propertiesFilePath",
+        null, OPTION_LONG_PROP_FILE_PATH,
+        false, false, true, INFO_PROP_FILE_PATH_PLACEHOLDER.get(), null, null,
+        INFO_DESCRIPTION_PROP_FILE_PATH.get());
       argParser.addArgument(propertiesFileArgument);
       argParser.setFilePropertiesArgument(propertiesFileArgument);
 
-     BooleanArgument noPropertiesFileArgument = new BooleanArgument(
-          "noPropertiesFileArgument", null, OPTION_LONG_NO_PROP_FILE,
-          INFO_DESCRIPTION_NO_PROP_FILE.get());
-     argParser.addArgument(noPropertiesFileArgument);
-     argParser.setNoPropertiesFileArgument(noPropertiesFileArgument);
+      BooleanArgument noPropertiesFileArgument = new BooleanArgument(
+        "noPropertiesFileArgument", null, OPTION_LONG_NO_PROP_FILE,
+        INFO_DESCRIPTION_NO_PROP_FILE.get());
+      argParser.addArgument(noPropertiesFileArgument);
+      argParser.setNoPropertiesFileArgument(noPropertiesFileArgument);
 
       startArg = new StringArgument(
-              OPTION_LONG_START_DATETIME,
-              OPTION_SHORT_START_DATETIME,
-              OPTION_LONG_START_DATETIME, false, false,
-              true, INFO_START_DATETIME_PLACEHOLDER.get(),
-              null, null,
-              INFO_DESCRIPTION_START_DATETIME.get());
+        OPTION_LONG_START_DATETIME,
+        OPTION_SHORT_START_DATETIME,
+        OPTION_LONG_START_DATETIME, false, false,
+        true, INFO_START_DATETIME_PLACEHOLDER.get(),
+        null, null,
+        INFO_DESCRIPTION_START_DATETIME.get());
       argParser.addArgument(startArg, taskGroup);
 
+      recurringArg = new StringArgument(
+        OPTION_LONG_RECURRING_TASK,
+        OPTION_SHORT_RECURRING_TASK,
+        OPTION_LONG_RECURRING_TASK, false, false,
+        true, INFO_RECURRING_TASK_PLACEHOLDER.get(),
+        null, null,
+        INFO_DESCRIPTION_RECURRING_TASK.get());
+      argParser.addArgument(recurringArg, taskGroup);
+
       completionNotificationArg = new StringArgument(
-              OPTION_LONG_COMPLETION_NOTIFICATION_EMAIL,
-              OPTION_SHORT_COMPLETION_NOTIFICATION_EMAIL,
-              OPTION_LONG_COMPLETION_NOTIFICATION_EMAIL,
-              false, true, true, INFO_EMAIL_ADDRESS_PLACEHOLDER.get(),
-              null, null, INFO_DESCRIPTION_TASK_COMPLETION_NOTIFICATION.get());
+        OPTION_LONG_COMPLETION_NOTIFICATION_EMAIL,
+        OPTION_SHORT_COMPLETION_NOTIFICATION_EMAIL,
+        OPTION_LONG_COMPLETION_NOTIFICATION_EMAIL,
+        false, true, true, INFO_EMAIL_ADDRESS_PLACEHOLDER.get(),
+        null, null, INFO_DESCRIPTION_TASK_COMPLETION_NOTIFICATION.get());
       argParser.addArgument(completionNotificationArg, taskGroup);
 
       errorNotificationArg = new StringArgument(
-              OPTION_LONG_ERROR_NOTIFICATION_EMAIL,
-              OPTION_SHORT_ERROR_NOTIFICATION_EMAIL,
-              OPTION_LONG_ERROR_NOTIFICATION_EMAIL,
-              false, true, true, INFO_EMAIL_ADDRESS_PLACEHOLDER.get(),
-              null, null, INFO_DESCRIPTION_TASK_ERROR_NOTIFICATION.get());
+        OPTION_LONG_ERROR_NOTIFICATION_EMAIL,
+        OPTION_SHORT_ERROR_NOTIFICATION_EMAIL,
+        OPTION_LONG_ERROR_NOTIFICATION_EMAIL,
+        false, true, true, INFO_EMAIL_ADDRESS_PLACEHOLDER.get(),
+        null, null, INFO_DESCRIPTION_TASK_ERROR_NOTIFICATION.get());
       argParser.addArgument(errorNotificationArg, taskGroup);
 
       dependencyArg = new StringArgument(
-              OPTION_LONG_DEPENDENCY,
-              OPTION_SHORT_DEPENDENCY,
-              OPTION_LONG_DEPENDENCY,
-              false, true, true, INFO_TASK_ID_PLACEHOLDER.get(),
-              null, null, INFO_DESCRIPTION_TASK_DEPENDENCY_ID.get());
+        OPTION_LONG_DEPENDENCY,
+        OPTION_SHORT_DEPENDENCY,
+        OPTION_LONG_DEPENDENCY,
+        false, true, true, INFO_TASK_ID_PLACEHOLDER.get(),
+        null, null, INFO_DESCRIPTION_TASK_DEPENDENCY_ID.get());
       argParser.addArgument(dependencyArg, taskGroup);
 
       Set fdaValSet = EnumSet.allOf(FailedDependencyAction.class);
       failedDependencyActionArg = new StringArgument(
-              OPTION_LONG_FAILED_DEPENDENCY_ACTION,
-              OPTION_SHORT_FAILED_DEPENDENCY_ACTION,
-              OPTION_LONG_FAILED_DEPENDENCY_ACTION,
-              false, true, true, INFO_ACTION_PLACEHOLDER.get(),
-              null, null, INFO_DESCRIPTION_TASK_FAILED_DEPENDENCY_ACTION.get(
-                StaticUtils.collectionToString(fdaValSet, ","),
-                FailedDependencyAction.defaultValue().name()));
+        OPTION_LONG_FAILED_DEPENDENCY_ACTION,
+        OPTION_SHORT_FAILED_DEPENDENCY_ACTION,
+        OPTION_LONG_FAILED_DEPENDENCY_ACTION,
+        false, true, true, INFO_ACTION_PLACEHOLDER.get(),
+        null, null, INFO_DESCRIPTION_TASK_FAILED_DEPENDENCY_ACTION.get(
+        StaticUtils.collectionToString(fdaValSet, ","),
+        FailedDependencyAction.defaultValue().name()));
       argParser.addArgument(failedDependencyActionArg, taskGroup);
 
       testIfOfflineArg = new BooleanArgument(
-          "testIfOffline", null, "testIfOffline",
-          INFO_DESCRIPTION_TEST_IF_OFFLINE.get());
+        "testIfOffline", null, "testIfOffline",
+        INFO_DESCRIPTION_TEST_IF_OFFLINE.get());
       testIfOfflineArg.setHidden(true);
       argParser.addArgument(testIfOfflineArg);
 
@@ -311,6 +323,19 @@
   /**
    * {@inheritDoc}
    */
+  public String getRecurringDateTime() {
+    String pattern = null;
+
+    // If the recurring task arg is present parse its value
+    if (recurringArg != null && recurringArg.isPresent()) {
+      pattern = recurringArg.getValue();
+    }
+    return pattern;
+  }
+
+  /**
+   * {@inheritDoc}
+   */
   public List<String> getDependencyIds() {
     if (dependencyArg.isPresent()) {
       return dependencyArg.getValues();
@@ -405,13 +430,18 @@
         TaskClient tc = new TaskClient(conn);
         TaskEntry taskEntry = tc.schedule(this);
         Message startTime = taskEntry.getScheduledStartTime();
-        if (startTime == null || startTime.length() == 0) {
+        if (taskEntry.getTaskState() == TaskState.RECURRING) {
+          out.println(
+                  wrapText(INFO_TASK_TOOL_RECURRING_TASK_SCHEDULED.get(
+                          taskEntry.getType(),
+                          taskEntry.getId()),
+                  MAX_LINE_WIDTH));
+        } else if (startTime == null || startTime.length() == 0) {
           out.println(
                   wrapText(INFO_TASK_TOOL_TASK_SCHEDULED_NOW.get(
                           taskEntry.getType(),
                           taskEntry.getId()),
                   MAX_LINE_WIDTH));
-
         } else {
           out.println(
                   wrapText(INFO_TASK_TOOL_TASK_SCHEDULED_FUTURE.get(
@@ -443,12 +473,13 @@
 
           } while (!taskEntry.isDone());
           if (TaskState.isSuccessful(taskEntry.getTaskState())) {
-            out.println(
-                wrapText(INFO_TASK_TOOL_TASK_SUCESSFULL.get(
-                        taskEntry.getType(),
-                        taskEntry.getId()),
-                MAX_LINE_WIDTH));
-
+            if (taskEntry.getTaskState() != TaskState.RECURRING) {
+              out.println(
+                  wrapText(INFO_TASK_TOOL_TASK_SUCESSFULL.get(
+                          taskEntry.getType(),
+                          taskEntry.getId()),
+                  MAX_LINE_WIDTH));
+            }
             return 0;
           } else {
             out.println(

--
Gitblit v1.10.0