You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by ma...@apache.org on 2015/10/14 15:11:03 UTC

[2/5] syncope git commit: Fixed SYNCOPE-585

Fixed SYNCOPE-585


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/237f90f1
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/237f90f1
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/237f90f1

Branch: refs/heads/master
Commit: 237f90f12a852497afef707d74aea864e0cc5e91
Parents: 87ad997
Author: massi <ma...@tirasa.net>
Authored: Wed Oct 14 15:10:01 2015 +0200
Committer: massi <ma...@tirasa.net>
Committed: Wed Oct 14 15:10:01 2015 +0200

----------------------------------------------------------------------
 .../cli/commands/NotificationCommand.java       | 163 +++++++++++++------
 1 file changed, 115 insertions(+), 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/237f90f1/client/cli/src/main/java/org/apache/syncope/client/cli/commands/NotificationCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/NotificationCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/NotificationCommand.java
index 473ebdc..9028617 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/NotificationCommand.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/NotificationCommand.java
@@ -18,74 +18,141 @@
  */
 package org.apache.syncope.client.cli.commands;
 
-import com.beust.jcommander.Parameter;
-import com.beust.jcommander.Parameters;
+import javax.xml.ws.WebServiceException;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.cli.Command;
+import org.apache.syncope.client.cli.Input;
 import org.apache.syncope.client.cli.SyncopeServices;
+import org.apache.syncope.client.cli.messages.UsageMessages;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.NotificationTO;
 import org.apache.syncope.common.rest.api.service.NotificationService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Parameters(
-        commandNames = "notification",
-        optionPrefixes = "-",
-        separators = "=",
-        commandDescription = "Apache Syncope notification service")
+@Command(name = "notification")
 public class NotificationCommand extends AbstractCommand {
 
     private static final Logger LOG = LoggerFactory.getLogger(NotificationCommand.class);
 
-    private final String helpMessage = "Usage: notification [options]\n"
+    private static final String HELP_MESSAGE = "Usage: notification [options]\n"
             + "  Options:\n"
-            + "    -h, --help \n"
-            + "    -l, --list \n"
-            + "    -r, --read \n"
-            + "       Syntax: -r={NOTIFICATION-ID} \n"
-            + "    -d, --delete \n"
-            + "       Syntax: -d={NOTIFICATION-ID}";
+            + "    --help \n"
+            + "    --list \n"
+            + "    --read \n"
+            + "       Syntax: --read {NOTIFICATION-ID} \n"
+            + "    --delete \n"
+            + "       Syntax: --delete {NOTIFICATION-ID}";
 
-    @Parameter(names = { "-r", "--read" })
-    private Long notificationIdToRead = -1L;
+    @Override
+    public void execute(final Input input) {
+        LOG.debug("Option: {}", input.getOption());
+        LOG.debug("Parameters:");
+        for (final String parameter : input.getParameters()) {
+            LOG.debug("   > " + parameter);
+        }
 
-    @Parameter(names = { "-d", "--delete" })
-    private Long notificationIdToDelete = -1L;
+        final String[] parameters = input.getParameters();
+
+        if (StringUtils.isBlank(input.getOption())) {
+            input.setOption(Options.HELP.getOptionName());
+        }
 
-    @Override
-    public void execute() {
         final NotificationService notificationService = SyncopeServices.get(NotificationService.class);
+        switch (Options.fromName(input.getOption())) {
+            case LIST:
+                try {
+                    for (final NotificationTO notificationTO : notificationService.list()) {
+                        System.out.println(notificationTO);
+                    }
+                } catch (final SyncopeClientException ex) {
+                    UsageMessages.printErrorMessage(ex.getMessage());
+                }
+                break;
+            case READ:
+                final String readErrorMessage = UsageMessages.optionCommandMessage(
+                        "notification --read {NOTIFICATION-ID} {NOTIFICATION-ID} [...]");
+                if (parameters.length >= 1) {
+                    for (final String parameter : parameters) {
+                        try {
+                            System.out.println(notificationService.read(Long.valueOf(parameter)));
+                        } catch (final NumberFormatException ex) {
+                            System.out.println("Error reading " + parameter + ". It isn't a valid notification id");
+                        } catch (final WebServiceException | SyncopeClientException ex) {
+                            if (ex.getMessage().startsWith("NotFound")) {
+                                UsageMessages.printErrorMessage("Notification " + parameter + " doesn't exists!");
+                            } else {
+                                UsageMessages.printErrorMessage(ex.getMessage());
+                            }
+                        }
+                    }
+                } else {
+                    System.out.println(readErrorMessage);
+                }
+                break;
+            case DELETE:
+                final String deleteErrorMessage = UsageMessages.optionCommandMessage(
+                        "notification --delete {NOTIFICATION-ID} {NOTIFICATION-ID} [...]");
+
+                if (parameters.length >= 1) {
+                    for (final String parameter : parameters) {
+                        try {
+                            notificationService.delete(Long.valueOf(parameter));
+                            System.out.println("\n - Notification " + parameter + " deleted!\n");
+                        } catch (final WebServiceException | SyncopeClientException ex) {
+                            if (ex.getMessage().startsWith("NotFound")) {
+                                UsageMessages.printErrorMessage("Notification " + parameter + " doesn't exists!");
+                            } else {
+                                UsageMessages.printErrorMessage(ex.getMessage());
+                            }
+                        } catch (final NumberFormatException ex) {
+                            UsageMessages.printErrorMessage(
+                                    "Error reading " + parameter + ". It isn't a valid notification id");
+                        }
+                    }
+                } else {
+                    System.out.println(deleteErrorMessage);
+                }
+                break;
+            case HELP:
+                System.out.println(HELP_MESSAGE);
+                break;
+            default:
+                System.out.println(input.getOption() + " is not a valid option.");
+                System.out.println("");
+                System.out.println(HELP_MESSAGE);
+        }
+    }
 
-        LOG.debug("Notification service successfully created");
+    private enum Options {
 
-        if (help) {
-            LOG.debug("- notification help command");
-            System.out.println(helpMessage);
-        } else if (list) {
-            LOG.debug("- notification list command");
-            try {
-                for (final NotificationTO notificationTO : notificationService.list()) {
-                    System.out.println(notificationTO);
+        HELP("--help"),
+        LIST("--list"),
+        READ("--read"),
+        DELETE("--delete");
+
+        private final String optionName;
+
+        private Options(final String optionName) {
+            this.optionName = optionName;
+        }
+
+        public String getOptionName() {
+            return optionName;
+        }
+
+        public boolean equalsOptionName(final String otherName) {
+            return (otherName == null) ? false : optionName.equals(otherName);
+        }
+
+        public static Options fromName(final String name) {
+            Options optionToReturn = HELP;
+            for (final Options option : Options.values()) {
+                if (option.equalsOptionName(name)) {
+                    optionToReturn = option;
                 }
-            } catch (final SyncopeClientException ex) {
-                System.out.println(" - Error: " + ex.getMessage());
-            }
-        } else if (notificationIdToRead > -1L) {
-            LOG.debug("- notification read {} command", notificationIdToRead);
-            try {
-                System.out.println(notificationService.read(notificationIdToRead));
-            } catch (final SyncopeClientException ex) {
-                System.out.println(" - Error: " + ex.getMessage());
-            }
-        } else if (notificationIdToDelete > -1L) {
-            try {
-                LOG.debug("- notification delete {} command", notificationIdToDelete);
-                notificationService.delete(notificationIdToDelete);
-                System.out.println(" - Notification " + notificationIdToDelete + " deleted!");
-            } catch (final SyncopeClientException ex) {
-                System.out.println(" - Error: " + ex.getMessage());
             }
-        } else {
-            System.out.println(helpMessage);
+            return optionToReturn;
         }
     }