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:02 UTC
[1/5] syncope git commit: Fixed SYNCOPE-584
Repository: syncope
Updated Branches:
refs/heads/master 958919948 -> 7642af97c
Fixed SYNCOPE-584
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/87ad9977
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/87ad9977
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/87ad9977
Branch: refs/heads/master
Commit: 87ad997748fa7197584463e2aabcb7745f89f5b0
Parents: 9589199
Author: massi <ma...@tirasa.net>
Authored: Wed Oct 14 15:09:37 2015 +0200
Committer: massi <ma...@tirasa.net>
Committed: Wed Oct 14 15:09:37 2015 +0200
----------------------------------------------------------------------
.../client/cli/commands/LoggerCommand.java | 339 ++++++++++++-------
1 file changed, 225 insertions(+), 114 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/87ad9977/client/cli/src/main/java/org/apache/syncope/client/cli/commands/LoggerCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/LoggerCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/LoggerCommand.java
index 469e68a..00f12b1 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/LoggerCommand.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/LoggerCommand.java
@@ -18,13 +18,12 @@
*/
package org.apache.syncope.client.cli.commands;
-import com.beust.jcommander.DynamicParameter;
-import com.beust.jcommander.Parameter;
-import com.beust.jcommander.Parameters;
-import java.util.HashMap;
-import java.util.Map;
+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.LoggerTO;
import org.apache.syncope.common.lib.types.LoggerLevel;
@@ -33,135 +32,247 @@ import org.apache.syncope.common.rest.api.service.LoggerService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@Parameters(
- commandNames = "logger",
- optionPrefixes = "-",
- separators = "=",
- commandDescription = "Apache Syncope logger service")
+@Command(name = "logger")
public class LoggerCommand extends AbstractCommand {
private static final Logger LOG = LoggerFactory.getLogger(LoggerCommand.class);
- private final String helpMessage = "Usage: logger [options]\n"
+ private static final String HELP_MESSAGE = "Usage: logger [options]\n"
+ " Options:\n"
- + " -h, --help \n"
- + " -l, --list \n"
- + " -r, --read \n"
- + " Syntax: -r={LOG-NAME} \n"
- + " -u, --update \n"
- + " Syntax: {LOG-NAME}={LOG-LEVEL} \n"
- + " -ua, --update-all \n"
- + " Syntax: -ua={LOG-LEVEL} \n"
- + " -c, --create \n"
- + " Syntax: {LOG-NAME}={LOG-LEVEL} \n"
- + " -d, --delete \n"
- + " Syntax: -d={LOG-NAME}";
-
- @Parameter(names = { "-r", "--read" })
- private String logNameToRead;
-
- @DynamicParameter(names = { "-u", "--update" })
- private final Map<String, String> updateLogs = new HashMap<String, String>();
-
- @Parameter(names = { "-ua", "--update-all" })
- private String logLevel;
-
- @DynamicParameter(names = { "-c", "--create" })
- private final Map<String, String> createLogs = new HashMap<String, String>();
-
- @Parameter(names = { "-d", "--delete" })
- private String logNameToDelete;
+ + " --help \n"
+ + " --list \n"
+ + " --read \n"
+ + " Syntax: --read {LOG-NAME} {LOG-NAME} [...]\n"
+ + " --update \n"
+ + " Syntax: --update {LOG-NAME}={LOG-LEVEL} {LOG-NAME}={LOG-LEVEL} [...]\n"
+ + " --update-all \n"
+ + " Syntax: --update-all {LOG-LEVEL} \n"
+ + " --create \n"
+ + " Syntax: --create {LOG-NAME}={LOG-LEVEL} {LOG-NAME}={LOG-LEVEL} [...]\n"
+ + " --delete \n"
+ + " Syntax: --delete {LOG-NAME} {LOG-NAME} [...]";
@Override
- public void execute() {
- final LoggerService loggerService = SyncopeServices.get(LoggerService.class);
+ public void execute(final Input input) {
+ LOG.debug("Option: {}", input.getOption());
+ LOG.debug("Parameters:");
+ for (final String parameter : input.getParameters()) {
+ LOG.debug(" > " + parameter);
+ }
- LOG.debug("Logger service successfully created");
+ final String[] parameters = input.getParameters();
- if (help) {
- LOG.debug("- logger help command");
- System.out.println(helpMessage);
- } else if (list) {
- LOG.debug("- logger list command");
- try {
- for (final LoggerTO loggerTO : loggerService.list(LoggerType.LOG)) {
- System.out.println(" - " + loggerTO.getKey() + " -> " + loggerTO.getLevel());
- }
- } catch (final SyncopeClientException ex) {
- System.out.println(" - Error: " + ex.getMessage());
- }
- } else if (StringUtils.isNotBlank(logNameToRead)) {
- LOG.debug("- logger read {} command", logNameToRead);
- try {
- final LoggerTO loggerTO = loggerService.read(LoggerType.LOG, logNameToRead);
- System.out.println(" - Logger " + loggerTO.getKey() + " with level -> " + loggerTO.getLevel());
- } catch (final SyncopeClientException ex) {
- System.out.println(" - Error: " + ex.getMessage());
- }
- } else if (!updateLogs.isEmpty()) {
- LOG.debug("- logger update command with params {}", updateLogs);
+ if (StringUtils.isBlank(input.getOption())) {
+ input.setOption(Options.HELP.getOptionName());
+ }
- for (final Map.Entry<String, String> log : updateLogs.entrySet()) {
- final LoggerTO loggerTO = loggerService.read(LoggerType.LOG, log.getKey());
+ final LoggerService loggerService = SyncopeServices.get(LoggerService.class);
+ switch (Options.fromName(input.getOption())) {
+ case LIST:
try {
- loggerTO.setLevel(LoggerLevel.valueOf(log.getValue()));
- loggerService.update(LoggerType.LOG, loggerTO);
- System.out.println(" - Logger " + loggerTO.getKey() + " new level -> " + loggerTO.getLevel());
+ System.out.println("\n");
+ for (final LoggerTO loggerTO : loggerService.list(LoggerType.LOG)) {
+ System.out.println(" - " + loggerTO.getKey() + " -> " + loggerTO.getLevel());
+ System.out.println("");
+ }
} catch (final SyncopeClientException ex) {
- System.out.println(" - Error: " + ex.getMessage());
- } catch (final IllegalArgumentException ex) {
- System.out.println(" - Error: " + log.getValue() + " isn't a valid logger level, try with:");
- for (final LoggerLevel level : LoggerLevel.values()) {
- System.out.println(" *** " + level.name());
+ UsageMessages.printErrorMessage("Error: " + ex.getMessage());
+ }
+ break;
+ case READ:
+ final String readErrorMessage = UsageMessages.optionCommandMessage(
+ "logger --read {LOG-NAME} {LOG-NAME} [...]");
+ if (parameters.length >= 1) {
+ for (final String parameter : parameters) {
+ try {
+ final LoggerTO loggerTO = loggerService.read(LoggerType.LOG, parameter);
+ System.out.println("\n - Logger");
+ System.out.println(" - key: " + loggerTO.getKey());
+ System.out.println(" - level: " + loggerTO.getLevel());
+ System.out.println("");
+ } catch (final SyncopeClientException | WebServiceException ex) {
+ if (ex.getMessage().startsWith("NotFound")) {
+ UsageMessages.printErrorMessage(
+ "Logger " + parameter + " doesn't exist!");
+ } else {
+ UsageMessages.printErrorMessage("Error: " + ex.getMessage());
+ }
+ }
}
+ } else {
+ System.out.println(readErrorMessage);
}
- }
- } else if (StringUtils.isNotBlank(logLevel)) {
- LOG.debug("- logger update all command with level {}", logLevel);
- for (final LoggerTO loggerTO : loggerService.list(LoggerType.LOG)) {
- try {
- loggerTO.setLevel(LoggerLevel.valueOf(logLevel));
- loggerService.update(LoggerType.LOG, loggerTO);
- System.out.println(" - Logger " + loggerTO.getKey() + " new level -> " + loggerTO.getLevel());
- } catch (final SyncopeClientException ex) {
- System.out.println(" - Error: " + ex.getMessage());
- } catch (final IllegalArgumentException ex) {
- System.out.println(" - Error: " + loggerTO.getLevel() + " isn't a valid logger level, try with:");
- for (final LoggerLevel level : LoggerLevel.values()) {
- System.out.println(" *** " + level.name());
+ break;
+ case UPDATE:
+ final String updateErrorMessage = UsageMessages.optionCommandMessage(
+ "logger --update {LOG-NAME}={LOG-LEVEL} {LOG-NAME}={LOG-LEVEL} [...]");
+
+ if (parameters.length >= 1) {
+ Input.PairParameter pairParameter = null;
+ for (final String parameter : parameters) {
+ try {
+ pairParameter = input.toPairParameter(parameter);
+ final LoggerTO loggerTO = loggerService.read(LoggerType.LOG, pairParameter.getKey());
+ loggerTO.setLevel(LoggerLevel.valueOf(pairParameter.getValue()));
+ loggerService.update(LoggerType.LOG, loggerTO);
+ System.out.
+ println("\n - Logger " + loggerTO.getKey() + " updated");
+ System.out.println(" - new level: " + loggerTO.getLevel());
+ System.out.println("");
+ } catch (final WebServiceException | SyncopeClientException | IllegalArgumentException ex) {
+ if (ex.getMessage().startsWith("No enum constant org.apache.syncope.common.lib.types.")) {
+ UsageMessages.printErrorMessage(ex.getMessage());
+ System.out.println("Try with:");
+ for (final LoggerLevel level : LoggerLevel.values()) {
+ System.out.println(" *** " + level.name());
+ }
+ System.out.println("");
+ } else if ("Parameter syntax error!".equalsIgnoreCase(ex.getMessage())) {
+ UsageMessages.printErrorMessage(ex.getMessage(), updateErrorMessage);
+ } else if (ex.getMessage().startsWith("NotFound")) {
+ UsageMessages.printErrorMessage(
+ "Logger " + pairParameter.getKey() + " doesn't exists!");
+ } else {
+ UsageMessages.printErrorMessage(ex.getMessage(), updateErrorMessage);
+ }
+ break;
+ }
}
+ } else {
+ System.out.println(updateErrorMessage);
}
- }
- } else if (!createLogs.isEmpty()) {
- LOG.debug("- logger create command with params {}", createLogs);
+ break;
+ case UPDATE_ALL:
+ final String updateAllErrorMessage = UsageMessages.optionCommandMessage(
+ "logger --update-all {LOG-LEVEL}");
- for (final Map.Entry<String, String> entrySet : createLogs.entrySet()) {
- final LoggerTO loggerTO = new LoggerTO();
- try {
- loggerTO.setKey(entrySet.getKey());
- loggerTO.setLevel(LoggerLevel.valueOf(entrySet.getValue()));
- loggerService.update(LoggerType.LOG, loggerTO);
- System.out.println(" - Logger " + loggerTO.getKey() + " created with level -> " + loggerTO.
- getLevel());
- } catch (final SyncopeClientException ex) {
- System.out.println(" - Error: " + ex.getMessage());
- } catch (final IllegalArgumentException ex) {
- System.out.println(" - Error: " + loggerTO.getLevel() + " isn't a valid logger level, try with:");
- for (final LoggerLevel level : LoggerLevel.values()) {
- System.out.println(" *** " + level.name());
+ if (parameters.length == 1) {
+ for (final LoggerTO loggerTO : loggerService.list(LoggerType.LOG)) {
+ try {
+ loggerTO.setLevel(LoggerLevel.valueOf(parameters[0]));
+ loggerService.update(LoggerType.LOG, loggerTO);
+ System.out.
+ println("\n - Logger " + loggerTO.getKey() + " updated");
+ System.out.println(" - new level: " + loggerTO.getLevel());
+ System.out.println("");
+ } catch (final WebServiceException | SyncopeClientException | IllegalArgumentException ex) {
+ if (ex.getMessage().startsWith("No enum constant org.apache.syncope.common.lib.types.")) {
+ UsageMessages.printErrorMessage(ex.getMessage());
+ System.out.println("Try with:");
+ for (final LoggerLevel level : LoggerLevel.values()) {
+ System.out.println(" *** " + level.name());
+ }
+ System.out.println("");
+ } else {
+ UsageMessages.printErrorMessage(ex.getMessage(), updateAllErrorMessage);
+ }
+ break;
+ }
}
+ } else {
+ System.out.println(updateAllErrorMessage);
+ }
+ break;
+ case CREATE:
+ final String createErrorMessage = UsageMessages.optionCommandMessage(
+ "logger --create {LOG-NAME}={LOG-LEVEL} {LOG-NAME}={LOG-LEVEL} [...]");
+
+ if (parameters.length >= 1) {
+ Input.PairParameter pairParameter;
+ LoggerTO loggerTO;
+ for (final String parameter : parameters) {
+ loggerTO = new LoggerTO();
+ try {
+ pairParameter = input.toPairParameter(parameter);
+ loggerTO.setKey(pairParameter.getKey());
+ loggerTO.setLevel(LoggerLevel.valueOf(pairParameter.getValue()));
+ loggerService.update(LoggerType.LOG, loggerTO);
+ System.out.
+ println("\n - Logger " + loggerTO.getKey() + " updated");
+ System.out.println(" - level: " + loggerTO.getLevel());
+ System.out.println("");
+ } catch (final WebServiceException | SyncopeClientException | IllegalArgumentException ex) {
+ if (ex.getMessage().startsWith("No enum constant org.apache.syncope.common.lib.types.")) {
+ UsageMessages.printErrorMessage(ex.getMessage());
+ System.out.println("Try with:");
+ for (final LoggerLevel level : LoggerLevel.values()) {
+ System.out.println(" *** " + level.name());
+ }
+ System.out.println("");
+ } else if ("Parameter syntax error!".equalsIgnoreCase(ex.getMessage())) {
+ UsageMessages.printErrorMessage(ex.getMessage(), createErrorMessage);
+ }
+ break;
+ }
+ }
+ } else {
+ System.out.println(createErrorMessage);
+ }
+ break;
+ case DELETE:
+ final String deleteErrorMessage = UsageMessages.optionCommandMessage(
+ "logger --delete {LOG-NAME} {LOG-NAME} [...]");
+
+ if (parameters.length >= 1) {
+ for (final String parameter : parameters) {
+ try {
+ loggerService.delete(LoggerType.LOG, parameter);
+ System.out.println("\n - Logger " + parameter + " deleted!\n");
+ } catch (final WebServiceException | SyncopeClientException ex) {
+ if (ex.getMessage().startsWith("NotFound")) {
+ UsageMessages.printErrorMessage(
+ "Logger " + parameter + " doesn't exists!");
+ } else {
+ UsageMessages.printErrorMessage(ex.getMessage());
+ }
+ }
+ }
+ } 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);
+ }
+ }
+
+ private enum Options {
+
+ HELP("--help"),
+ LIST("--list"),
+ READ("--read"),
+ UPDATE("--update"),
+ UPDATE_ALL("--update-all"),
+ CREATE("--create"),
+ 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;
}
}
- } else if (StringUtils.isNotBlank(logNameToDelete)) {
- try {
- LOG.debug("- logger delete {} command", logNameToDelete);
- loggerService.delete(LoggerType.LOG, logNameToDelete);
- System.out.println(" - Logger " + logNameToDelete + " deleted!");
- } catch (final SyncopeClientException ex) {
- System.out.println(" - Error: " + ex.getMessage());
- }
- } else {
- System.out.println(helpMessage);
+ return optionToReturn;
}
}
[2/5] syncope git commit: Fixed SYNCOPE-585
Posted by ma...@apache.org.
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;
}
}
[3/5] syncope git commit: Fixed SYNCOPE-586
Posted by ma...@apache.org.
Fixed SYNCOPE-586
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/1483986e
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/1483986e
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/1483986e
Branch: refs/heads/master
Commit: 1483986e37ba33d62be19f8fc3370cd5b79a0d34
Parents: 237f90f
Author: massi <ma...@tirasa.net>
Authored: Wed Oct 14 15:10:16 2015 +0200
Committer: massi <ma...@tirasa.net>
Committed: Wed Oct 14 15:10:16 2015 +0200
----------------------------------------------------------------------
.../client/cli/commands/PolicyCommand.java | 193 +++++++++++++------
1 file changed, 134 insertions(+), 59 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/1483986e/client/cli/src/main/java/org/apache/syncope/client/cli/commands/PolicyCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/PolicyCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/PolicyCommand.java
index ae34f53..d17419f 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/PolicyCommand.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/PolicyCommand.java
@@ -18,10 +18,12 @@
*/
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.policy.AbstractPolicyTO;
import org.apache.syncope.common.lib.types.PolicyType;
@@ -29,76 +31,149 @@ import org.apache.syncope.common.rest.api.service.PolicyService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@Parameters(
- commandNames = "policy",
- optionPrefixes = "-",
- separators = "=",
- commandDescription = "Apache Syncope policy service")
+@Command(name = "policy")
public class PolicyCommand extends AbstractCommand {
private static final Logger LOG = LoggerFactory.getLogger(PolicyCommand.class);
- private final String helpMessage = "Usage: policy [options]\n"
+ private static final String HELP_MESSAGE = "Usage: policy [options]\n"
+ " Options:\n"
- + " -h, --help \n"
- + " -l, --list \n"
- + " -ll, --list-policy \n"
- + " Syntax: -ll={POLICY-TYPE} \n"
- + " -r, --read \n"
- + " Syntax: -r={POLICY-ID} \n"
- + " -d, --delete \n"
- + " Syntax: -d={POLICY-ID}";
+ + " --help \n"
+ + " --list-policy \n"
+ + " Syntax: --list-policy {POLICY-TYPE} \n"
+ + " Policy type: ACCOUNT / PASSWORD / SYNC / PUSH\n"
+ + " --read \n"
+ + " Syntax: --read {POLICY-ID} {POLICY-ID} [...]\n"
+ + " --delete \n"
+ + " Syntax: --delete {POLICY-ID} {POLICY-ID} [...]";
- @Parameter(names = { "-ll", "--list-policy" })
- private String policyType;
+ @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 = { "-r", "--read" })
- private Long policyIdToRead = -1L;
+ final String[] parameters = input.getParameters();
- @Parameter(names = { "-d", "--delete" })
- private Long policyIdToDelete = -1L;
+ if (StringUtils.isBlank(input.getOption())) {
+ input.setOption(Options.HELP.getOptionName());
+ }
- @Override
- public void execute() {
final PolicyService policyService = SyncopeServices.get(PolicyService.class);
- LOG.debug("Policy service successfully created");
-
- if (help) {
- LOG.debug("- policy help command");
- System.out.println(helpMessage);
- } else if (list) {
- // do nothing for the moment...
- } else if (StringUtils.isNotBlank(policyType)) {
- LOG.debug("- policy list command for type {}", policyType);
- try {
- for (final AbstractPolicyTO policyTO : policyService.list(PolicyType.valueOf(policyType))) {
- System.out.println(policyTO);
+ switch (Options.fromName(input.getOption())) {
+ case LIST_POLICY:
+ final String listPolicyErrorMessage = UsageMessages.optionCommandMessage(
+ "Usage: policy --list-policy {POLICY-TYPE}\n"
+ + " Policy type: ACCOUNT / PASSWORD / SYNC / PUSH");
+ if (parameters.length == 1) {
+ try {
+ for (final AbstractPolicyTO policyTO : policyService.list(PolicyType.valueOf(parameters[0]))) {
+ System.out.println(policyTO);
+ }
+ } catch (final SyncopeClientException ex) {
+ UsageMessages.printErrorMessage(ex.getMessage());
+ } catch (final IllegalArgumentException ex) {
+ UsageMessages.printErrorMessage(
+ "Error: " + parameters[0] + " isn't a valid policy type, try with:");
+ for (final PolicyType type : PolicyType.values()) {
+ System.out.println(" *** " + type.name());
+ }
+ System.out.println("");
+ }
+ } else {
+ System.out.println(listPolicyErrorMessage);
}
- } catch (final SyncopeClientException ex) {
- System.out.println(" - Error: " + ex.getMessage());
- } catch (final IllegalArgumentException ex) {
- System.out.println(" - Error: " + policyType + " isn't a valid policy type, try with:");
- for (final PolicyType type : PolicyType.values()) {
- System.out.println(" *** " + type.name());
+ break;
+ case READ:
+ final String readErrorMessage = UsageMessages.optionCommandMessage(
+ "Usage: policy --read {POLICY-ID} {POLICY-ID} [...]");
+ if (parameters.length >= 1) {
+ for (final String parameter : parameters) {
+ try {
+ System.out.println(policyService.read(Long.valueOf(parameter)));
+ } catch (final NumberFormatException ex) {
+ UsageMessages.printErrorMessage(
+ "Error reading " + parameter + ". It isn't a valid policy id");
+ } catch (final WebServiceException | SyncopeClientException ex) {
+ if (ex.getMessage().startsWith("NotFound")) {
+ UsageMessages.printErrorMessage("Policy " + parameter + " doesn't exists!");
+ } else {
+ UsageMessages.printErrorMessage(ex.getMessage());
+ }
+ }
+ }
+ } else {
+ System.out.println(readErrorMessage);
+ }
+ break;
+ case DELETE:
+ final String deleteErrorMessage = UsageMessages.optionCommandMessage(
+ "Usage: policy --delete {POLICY-ID} {POLICY-ID} [...]");
+
+ if (parameters.length >= 1) {
+ for (final String parameter : parameters) {
+ try {
+ policyService.delete(Long.valueOf(parameter));
+ System.out.println(" - Policy " + parameter + " deleted!");
+ } catch (final WebServiceException | SyncopeClientException ex) {
+ System.out.println("Error:");
+ if (ex.getMessage().startsWith("NotFound")) {
+ UsageMessages.printErrorMessage("Policy " + parameter + " doesn't exists!");
+ } else if (ex.getMessage().startsWith("DataIntegrityViolation")) {
+ UsageMessages.printErrorMessage("You cannot delete policy " + parameter);
+ } else {
+ UsageMessages.printErrorMessage(ex.getMessage());
+ }
+ } catch (final NumberFormatException ex) {
+ UsageMessages.printErrorMessage(
+ "Error reading " + parameter + ". It isn't a valid policy 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);
+ }
+ }
+
+ private enum Options {
+
+ HELP("--help"),
+ LIST_POLICY("--list-policy"),
+ 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;
}
}
- } else if (policyIdToRead > -1L) {
- LOG.debug("- policy read {} command", policyIdToRead);
- try {
- System.out.println(policyService.read(policyIdToRead));
- } catch (final SyncopeClientException ex) {
- System.out.println(" - Error: " + ex.getMessage());
- }
- } else if (policyIdToDelete > -1L) {
- try {
- LOG.debug("- policy delete {} command", policyIdToDelete);
- policyService.delete(policyIdToDelete);
- System.out.println(" - Report " + policyIdToDelete + " deleted!");
- } catch (final SyncopeClientException ex) {
- System.out.println(" - Error: " + ex.getMessage());
- }
- } else {
- System.out.println(helpMessage);
+ return optionToReturn;
}
}
[5/5] syncope git commit: Fixed SYNCOPE-590
Posted by ma...@apache.org.
Fixed SYNCOPE-590
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/7642af97
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/7642af97
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/7642af97
Branch: refs/heads/master
Commit: 7642af97ccdfbd1086be7d1bcea5510235237ebf
Parents: a61c801
Author: massi <ma...@tirasa.net>
Authored: Wed Oct 14 15:10:45 2015 +0200
Committer: massi <ma...@tirasa.net>
Committed: Wed Oct 14 15:10:45 2015 +0200
----------------------------------------------------------------------
.../client/cli/commands/SchemaCommand.java | 94 ++++++++++++++++----
1 file changed, 77 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/7642af97/client/cli/src/main/java/org/apache/syncope/client/cli/commands/SchemaCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/SchemaCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/SchemaCommand.java
index 3671cf0..3c182c7 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/SchemaCommand.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/SchemaCommand.java
@@ -24,6 +24,7 @@ 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.AbstractSchemaTO;
import org.apache.syncope.common.lib.to.DerSchemaTO;
@@ -43,6 +44,9 @@ public class SchemaCommand extends AbstractCommand {
+ " Options:\n"
+ " --help \n"
+ " --list-all\n"
+ + " --list-plain\n"
+ + " --list-derived\n"
+ + " --list-virtual\n"
+ " --list {SCHEMA-TYPE}\n"
+ " Schema type: PLAIN / DERIVED / VIRTUAL";
@@ -63,11 +67,13 @@ public class SchemaCommand extends AbstractCommand {
final SchemaService schemaService = SyncopeServices.get(SchemaService.class);
switch (Options.fromName(input.getOption())) {
case LIST:
- final String listErrorMessage = "Usage: schema --list {SCHEMA-TYPE}\n"
- + " Schema type: PLAIN / DERIVED / VIRTUAL";
+ final String listErrorMessage = UsageMessages.optionCommandMessage(
+ "schema --list {SCHEMA-TYPE}\n"
+ + " Schema type: PLAIN / DERIVED / VIRTUAL");
if (parameters.length == 1) {
try {
final SchemaType schemaType = SchemaType.valueOf(input.firstParameter());
+ System.out.println("");
for (final AbstractSchemaTO schemaTO : schemaService.list(schemaType)) {
switch (schemaType) {
case PLAIN:
@@ -87,14 +93,16 @@ public class SchemaCommand extends AbstractCommand {
break;
}
}
+ System.out.println("");
} catch (final SyncopeClientException ex) {
- System.out.println(" - Error: " + ex.getMessage());
+ UsageMessages.printErrorMessage(ex.getMessage());
} catch (final IllegalArgumentException ex) {
- System.out.println(" - Error: " + input.firstParameter()
- + " isn't a valid schema type, try with:");
+ UsageMessages.printErrorMessage(
+ input.firstParameter() + " isn't a valid schema type, try with:");
for (final SchemaType type : SchemaType.values()) {
System.out.println(" *** " + type.name());
}
+ System.out.println("");
}
} else {
System.out.println(listErrorMessage);
@@ -103,23 +111,64 @@ public class SchemaCommand extends AbstractCommand {
case LIST_ALL:
try {
for (final SchemaType value : SchemaType.values()) {
- System.out.println("Schemas for " + value);
+ System.out.println("");
+ System.out.println(value + " schemas");
for (final AbstractSchemaTO schemaTO : schemaService.list(value)) {
System.out.println(" - Name: " + schemaTO.getKey() + " type: "
+ schemaTO.getAnyTypeClass());
}
+ System.out.println("");
}
} catch (final SyncopeClientException | WebServiceException ex) {
- System.out.println(" - Error: " + ex.getMessage());
+ UsageMessages.printErrorMessage(ex.getMessage());
+ }
+ break;
+ case LIST_PLAIN:
+ try {
+ System.out.println("");
+ for (final AbstractSchemaTO schemaTO : schemaService.list(SchemaType.PLAIN)) {
+ System.out.println(" - Schema key: " + ((PlainSchemaTO) schemaTO).getKey());
+ System.out.println(" type: " + ((PlainSchemaTO) schemaTO).getType());
+ System.out.println(" is mandatory: "
+ + ((PlainSchemaTO) schemaTO).getMandatoryCondition());
+ }
+ System.out.println("");
+ } catch (final SyncopeClientException | WebServiceException ex) {
+ UsageMessages.printErrorMessage(ex.getMessage());
+ }
+ break;
+ case LIST_DERIVED:
+ try {
+ System.out.println("");
+ for (final AbstractSchemaTO schemaTO : schemaService.list(SchemaType.DERIVED)) {
+ System.out.println(" - Schema key: " + ((DerSchemaTO) schemaTO).getKey());
+ System.out.println(" expression: " + ((DerSchemaTO) schemaTO).getExpression());
+ }
+ System.out.println("");
+ } catch (final SyncopeClientException | WebServiceException ex) {
+ UsageMessages.printErrorMessage(ex.getMessage());
+ }
+ break;
+ case LIST_VIRTUAL:
+ try {
+ System.out.println("");
+ for (final AbstractSchemaTO schemaTO : schemaService.list(SchemaType.VIRTUAL)) {
+ System.out.println(" - Schema key: " + ((VirSchemaTO) schemaTO).getKey());
+ }
+ System.out.println("");
+ } catch (final SyncopeClientException | WebServiceException ex) {
+ UsageMessages.printErrorMessage(ex.getMessage());
}
break;
case READ:
- final String readErrorMessage = "Usage: schema --read {SCHEMA-TYPE} {SCHEMA-KEY}\n"
- + " Schema type: PLAIN / DERIVED / VIRTUAL";
+ final String readErrorMessage = UsageMessages.optionCommandMessage(
+ "schema --read {SCHEMA-TYPE} {SCHEMA-KEY}\n"
+ + " Schema type: PLAIN / DERIVED / VIRTUAL");
if (parameters.length >= 2) {
parameters = Arrays.copyOfRange(parameters, 1, parameters.length);
try {
final SchemaType schemaType = SchemaType.valueOf(input.firstParameter());
+ System.out.println("");
for (final String parameter : parameters) {
final AbstractSchemaTO schemaTO = schemaService.read(schemaType, parameter);
switch (schemaType) {
@@ -159,20 +208,24 @@ public class SchemaCommand extends AbstractCommand {
default:
break;
}
+ System.out.println("");
}
} catch (final SyncopeClientException | WebServiceException ex) {
if (ex.getMessage().startsWith("NotFound")) {
- System.out.println(" - Schema " + parameters[0] + " doesn't exists!");
+ UsageMessages.printErrorMessage(
+ "Schema " + parameters[0] + " doesn't exists!");
} else if (ex.getMessage().startsWith("DataIntegrityViolation")) {
- System.out.println(" - You cannot delete schema " + parameters[0]);
+ UsageMessages.printErrorMessage("You cannot delete schema " + parameters[0]);
} else {
- System.out.println(ex.getMessage());
+ UsageMessages.printErrorMessage(ex.getMessage());
}
} catch (final IllegalArgumentException ex) {
- System.out.println(" - Error: " + parameters[0] + " isn't a valid schema type, try with:");
+ UsageMessages.printErrorMessage(
+ parameters[0] + " isn't a valid schema type, try with:");
for (final SchemaType type : SchemaType.values()) {
System.out.println(" *** " + type.name());
}
+ System.out.println("");
}
} else {
System.out.println(readErrorMessage);
@@ -190,17 +243,21 @@ public class SchemaCommand extends AbstractCommand {
}
} catch (final SyncopeClientException | WebServiceException ex) {
if (ex.getMessage().startsWith("NotFound")) {
- System.out.println(" - Schema " + parameters[0] + " doesn't exists!");
+ UsageMessages.printErrorMessage(
+ "Schema " + parameters[0] + " doesn't exists!");
} else if (ex.getMessage().startsWith("DataIntegrityViolation")) {
- System.out.println(" - You cannot delete schema " + parameters[0]);
+ UsageMessages.printErrorMessage(
+ "You cannot delete schema " + parameters[0]);
} else {
- System.out.println(ex.getMessage());
+ UsageMessages.printErrorMessage(ex.getMessage());
}
} catch (final IllegalArgumentException ex) {
- System.out.println(" - Error: " + parameters[0] + " isn't a valid schema type, try with:");
+ UsageMessages.printErrorMessage(
+ parameters[0] + " isn't a valid schema type, try with:");
for (final SchemaType type : SchemaType.values()) {
System.out.println(" *** " + type.name());
}
+ System.out.println("");
}
} else {
System.out.println(deleteErrorMessage);
@@ -221,6 +278,9 @@ public class SchemaCommand extends AbstractCommand {
HELP("--help"),
LIST("--list"),
LIST_ALL("--list-all"),
+ LIST_PLAIN("--list-plain"),
+ LIST_DERIVED("--list-derived"),
+ LIST_VIRTUAL("--list-virtual"),
READ("--read"),
DELETE("--delete");
[4/5] syncope git commit: Fixed SYNCOPE-587
Posted by ma...@apache.org.
Fixed SYNCOPE-587
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/a61c801b
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/a61c801b
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/a61c801b
Branch: refs/heads/master
Commit: a61c801b00b854390b170a964b919de7f98ce2b8
Parents: 1483986
Author: massi <ma...@tirasa.net>
Authored: Wed Oct 14 15:10:29 2015 +0200
Committer: massi <ma...@tirasa.net>
Committed: Wed Oct 14 15:10:29 2015 +0200
----------------------------------------------------------------------
.../client/cli/commands/ReportCommand.java | 438 +++++++++++++------
1 file changed, 308 insertions(+), 130 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/a61c801b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/ReportCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/ReportCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/ReportCommand.java
index def8f50..ffa8ecd 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/ReportCommand.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/ReportCommand.java
@@ -18,162 +18,340 @@
*/
package org.apache.syncope.client.cli.commands;
-import com.beust.jcommander.Parameter;
-import com.beust.jcommander.Parameters;
import java.io.IOException;
import java.io.SequenceInputStream;
+import java.util.Arrays;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
+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.client.cli.util.XMLUtils;
import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.to.ReportExecTO;
import org.apache.syncope.common.lib.to.ReportTO;
+import org.apache.syncope.common.lib.types.JobStatusType;
import org.apache.syncope.common.lib.types.ReportExecExportFormat;
import org.apache.syncope.common.rest.api.service.ReportService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xml.sax.SAXException;
-@Parameters(
- commandNames = "report",
- optionPrefixes = "-",
- separators = "=",
- commandDescription = "Apache Syncope report service")
+@Command(name = "report")
public class ReportCommand extends AbstractCommand {
private static final Logger LOG = LoggerFactory.getLogger(ReportCommand.class);
- private final String helpMessage = "Usage: report [options]\n"
+ private static final String HELP_MESSAGE = "Usage: report [options]\n"
+ " Options:\n"
- + " -h, --help \n"
- + " -l, --list \n"
- + " -r, --read \n"
- + " Syntax: -r={POLICY-ID} \n"
- + " -d, --delete \n"
- + " Syntax: -d={POLICY-ID} \n"
- + " -e, --execute \n"
- + " Syntax: -e={POLICY-ID} \n"
- + " -re, --read-executecution \n"
- + " Syntax: -re={EXECUTION-ID} \n"
- + " -de, --delete-executecution \n"
- + " Syntax: -de={EXECUTION-ID} \n"
- + " -eer, --export-executecution-result \n"
- + " Syntax: -eer={EXECUTION-ID} \n"
- + " -rc, --reportlet-class";
-
- @Parameter(names = { "-r", "--read" })
- private Long reportIdToRead = -1L;
-
- @Parameter(names = { "-d", "--delete" })
- private Long reportIdToDelete = -1L;
-
- @Parameter(names = { "-e", "--execute" })
- private Long reportIdToExecute = -1L;
-
- @Parameter(names = { "-re", "--read-execution" })
- private Long executionIdToRead = -1L;
-
- @Parameter(names = { "-de", "--delete-execution" })
- private Long executionIdToDelete = -1L;
-
- @Parameter(names = { "-eer", "--export-execution-result" })
- private Long exportId = -1L;
+ + " --help \n"
+ + " --list \n"
+ + " --read \n"
+ + " Syntax: --read {REPORT-ID} {REPORT-ID} [...] \n"
+ + " --delete \n"
+ + " Syntax: --delete {REPORT-ID} {REPORT-ID} [...]\n"
+ + " --execute \n"
+ + " Syntax: --execute {REPORT-ID} \n"
+ + " --read-execution \n"
+ + " Syntax: --read-execution {EXECUTION-ID} {EXECUTION-ID} [...]\n"
+ + " --delete-execution \n"
+ + " Syntax: --delete-execution {EXECUTION-ID} {EXECUTION-ID} [...]\n"
+ + " --export-execution-result \n"
+ + " Syntax: --export-execution-result {EXECUTION-ID} {EXECUTION-ID} [...] {FORMAT}\n"
+ + " Format: CSV / HTML / PDF / XML / RTF"
+ + " --reportlet-class";
@Override
- public void execute() {
+ public void execute(final Input input) {
+ LOG.debug("Option: {}", input.getOption());
+ LOG.debug("Parameters:");
+ for (final String parameter : input.getParameters()) {
+ LOG.debug(" > " + parameter);
+ }
+
+ String[] parameters = input.getParameters();
+
+ if (StringUtils.isBlank(input.getOption())) {
+ input.setOption(Options.HELP.getOptionName());
+ }
+
final ReportService reportService = SyncopeServices.get(ReportService.class);
- LOG.debug("Report service successfully created");
-
- if (help) {
- LOG.debug("- report help command");
- System.out.println(helpMessage);
- } else if (list) {
- LOG.debug("- report list command");
- try {
- for (ReportTO reportTO : reportService.list()) {
- System.out.println(reportTO);
+ switch (Options.fromName(input.getOption())) {
+ case LIST:
+ try {
+ for (final ReportTO reportTO : reportService.list()) {
+ System.out.println(reportTO);
+ }
+ } catch (final SyncopeClientException ex) {
+ UsageMessages.printErrorMessage(ex.getMessage());
}
- } catch (final SyncopeClientException ex) {
- System.out.println(" - Error: " + ex.getMessage());
- }
- } else if (reportIdToRead > -1L) {
- LOG.debug("- report read {} command", reportIdToRead);
- try {
- System.out.println(reportService.read(reportIdToRead));
- } catch (final SyncopeClientException ex) {
- System.out.println(" - Error: " + ex.getMessage());
- }
- } else if (reportIdToDelete > -1L) {
- try {
- LOG.debug("- report delete {} command", reportIdToDelete);
- reportService.delete(reportIdToDelete);
- System.out.println(" - Report " + reportIdToDelete + " deleted!");
- } catch (final SyncopeClientException ex) {
- System.out.println(" - Error: " + ex.getMessage());
- }
- } else if (reportIdToExecute > -1L) {
- try {
- LOG.debug("- report execute {} command", reportIdToExecute);
- reportService.execute(reportIdToExecute);
- final List<ReportExecTO> executionList = reportService.read(reportIdToExecute).getExecutions();
- final ReportExecTO lastExecution = executionList.get(executionList.size() - 1);
- System.out.println(" - Report execution id: " + lastExecution.getKey());
- System.out.println(" - Report execution status: " + lastExecution.getStatus());
- System.out.println(" - Report execution start date: " + lastExecution.getStartDate());
- } catch (final SyncopeClientException ex) {
- System.out.println(" - Error: " + ex.getMessage());
- }
- } else if (executionIdToRead > -1L) {
- try {
- LOG.debug("- report execution read {} command", executionIdToRead);
- ReportExecTO reportExecTO = reportService.readExecution(executionIdToRead);
- System.out.println(" - Report execution id: " + reportExecTO.getKey());
- System.out.println(" - Report execution status: " + reportExecTO.getStatus());
- System.out.println(" - Report execution start date: " + reportExecTO.getStartDate());
- System.out.println(" - Report execution end date: " + reportExecTO.getEndDate());
- } catch (final SyncopeClientException ex) {
- System.out.println(" - Error: " + ex.getMessage());
- }
- } else if (executionIdToDelete > -1L) {
- try {
- LOG.debug("- report execution delete {} command", executionIdToDelete);
- reportService.deleteExecution(executionIdToDelete);
- System.out.println(" - Report execution " + executionIdToDelete + "successfyllt deleted!");
- } catch (final SyncopeClientException ex) {
- System.out.println(" - Error: " + ex.getMessage());
- }
- } else if (exportId > -1L) {
- LOG.debug("- report export command for report: {}", exportId);
-
- try {
- XMLUtils.createXMLFile((SequenceInputStream) reportService.exportExecutionResult(exportId,
- ReportExecExportFormat.XML).getEntity(), "export_" + exportId + ".xml");
- System.out.println(" - " + "export_" + exportId + " successfully created");
- } catch (final IOException ex) {
- LOG.error("Error creating xml file", ex);
- System.out.println(" - Error creating " + "export_" + exportId + " " + ex.getMessage());
- } catch (final ParserConfigurationException ex) {
- LOG.error("Error creating xml file", ex);
- System.out.println(" - Error creating " + "export_" + exportId + " " + ex.getMessage());
- } catch (final SAXException ex) {
- LOG.error("Error creating xml file", ex);
- System.out.println(" - Error creating " + "export_" + exportId + " " + ex.getMessage());
- } catch (final TransformerConfigurationException ex) {
- LOG.error("Error creating xml file", ex);
- System.out.println(" - Error creating " + "export_" + exportId + " " + ex.getMessage());
- } catch (final TransformerException ex) {
- LOG.error("Error creating xml file", ex);
- System.out.println(" - Error creating export_" + exportId + " " + ex.getMessage());
- } catch (final SyncopeClientException ex) {
- LOG.error("Error calling configuration service", ex);
- System.out.println(" - Error calling configuration service " + ex.getMessage());
- }
- } else {
- System.out.println(helpMessage);
+ break;
+ case LIST_JOBS:
+ try {
+ for (final JobStatusType jobStatusType : JobStatusType.values()) {
+ System.out.println("Report execution for " + jobStatusType);
+ final List<ReportExecTO> reportExecTOs = reportService.listJobs(jobStatusType);
+ for (final ReportExecTO reportExecTO : reportExecTOs) {
+ System.out.println(" - Report execution id: " + reportExecTO.getKey());
+ System.out.println(" - Report execution status: " + reportExecTO.getStatus());
+ System.out.println(" - Report execution start date: " + reportExecTO.getStartDate());
+ System.out.println(" - Report execution end date: " + reportExecTO.getEndDate());
+ System.out.println();
+ }
+ }
+ } catch (final SyncopeClientException ex) {
+ UsageMessages.printErrorMessage(ex.getMessage());
+ }
+ break;
+ case READ:
+ final String readErrorMessage = UsageMessages.optionCommandMessage(
+ "Usage: report --read {REPORT-ID} {REPORT-ID} [...]");
+ if (parameters.length >= 1) {
+ for (final String parameter : parameters) {
+ try {
+ System.out.println(reportService.read(Long.valueOf(parameter)));
+ } catch (final NumberFormatException ex) {
+ UsageMessages.printErrorMessage(
+ "Error reading " + parameter + ". It isn't a valid report id");
+ } catch (final WebServiceException | SyncopeClientException ex) {
+ if (ex.getMessage().startsWith("NotFound")) {
+ UsageMessages.printErrorMessage("Report " + parameter + " doesn't exists!");
+ } else {
+ UsageMessages.printErrorMessage(ex.getMessage());
+ }
+ }
+ }
+ } else {
+ System.out.println(readErrorMessage);
+ }
+ break;
+ case DELETE:
+ final String deleteErrorMessage = UsageMessages.optionCommandMessage(
+ "Usage: report --execute {REPORT-ID}");
+
+ if (parameters.length == 1) {
+ for (final String parameter : parameters) {
+ try {
+ reportService.delete(Long.valueOf(parameter));
+ System.out.println(" - Report " + parameter + " deleted!");
+ } catch (final WebServiceException | SyncopeClientException ex) {
+ if (ex.getMessage().startsWith("NotFound")) {
+ UsageMessages.printErrorMessage("Report " + parameter + " doesn't exists!");
+ } else if (ex.getMessage().startsWith("DataIntegrityViolation")) {
+ UsageMessages.printErrorMessage("You cannot delete report " + parameter);
+ } else {
+ UsageMessages.printErrorMessage(ex.getMessage());
+ }
+ } catch (final NumberFormatException ex) {
+ UsageMessages.printErrorMessage(
+ "Error reading " + parameter + ". It isn't a valid report id");
+ }
+ }
+ } else {
+ System.out.println(deleteErrorMessage);
+ }
+ break;
+ case EXECUTE:
+ final String executeErrorMessage = UsageMessages.optionCommandMessage(
+ "Usage: report --execute {REPORT-ID}");
+
+ if (parameters.length == 1) {
+
+ try {
+ final Long reportIdToExecute = Long.valueOf(parameters[0]);
+ reportService.execute(reportIdToExecute);
+ final List<ReportExecTO> executionList
+ = reportService.read(reportIdToExecute).getExecutions();
+ final ReportExecTO lastExecution = executionList.get(executionList.size() - 1);
+ System.out.println(" - Report execution id: " + lastExecution.getKey());
+ System.out.println(" - Report execution status: " + lastExecution.getStatus());
+ System.out.println(" - Report execution start date: " + lastExecution.getStartDate());
+ } catch (final WebServiceException | SyncopeClientException ex) {
+ System.out.println("Error:");
+ if (ex.getMessage().startsWith("NotFound")) {
+ UsageMessages.printErrorMessage("Report " + parameters[0] + " doesn't exists!");
+ } else if (ex.getMessage().startsWith("DataIntegrityViolation")) {
+ UsageMessages.printErrorMessage("You cannot delete report " + parameters[0]);
+ } else {
+ UsageMessages.printErrorMessage(ex.getMessage());
+ }
+ } catch (final NumberFormatException ex) {
+ UsageMessages.printErrorMessage(
+ "Error reading " + parameters[0] + ". It isn't a valid report id");
+ }
+ } else {
+ System.out.println(executeErrorMessage);
+ }
+ break;
+ case READ_EXECUTION:
+ final String readExecutionErrorMessage = UsageMessages.optionCommandMessage(
+ "Usage: report --read-execution {EXECUTION-ID} {EXECUTION-ID} [...]");
+
+ if (parameters.length >= 1) {
+ for (final String parameter : parameters) {
+
+ try {
+ ReportExecTO reportExecTO = reportService.readExecution(Long.valueOf(parameter));
+ System.out.println(" - Report execution id: " + reportExecTO.getKey());
+ System.out.println(" - Report execution status: " + reportExecTO.getStatus());
+ System.out.println(" - Report execution start date: " + reportExecTO.getStartDate());
+ System.out.println(" - Report execution end date: " + reportExecTO.getEndDate());
+ } catch (final WebServiceException | SyncopeClientException ex) {
+ System.out.println("Error:");
+ if (ex.getMessage().startsWith("NotFound")) {
+ UsageMessages.printErrorMessage(" - Report " + parameter + " doesn't exists!");
+ } else if (ex.getMessage().startsWith("DataIntegrityViolation")) {
+ UsageMessages.printErrorMessage("You cannot delete report " + parameter);
+ } else {
+ UsageMessages.printErrorMessage(ex.getMessage());
+ }
+ } catch (final NumberFormatException ex) {
+ UsageMessages.printErrorMessage(
+ "Error reading " + parameter + ". It isn't a valid report id");
+ }
+ }
+ } else {
+ System.out.println(readExecutionErrorMessage);
+ }
+ break;
+ case DELETE_EXECUTION:
+ final String deleteExecutionErrorMessage = UsageMessages.optionCommandMessage(
+ "Usage: report --delete-execution {EXECUTION-ID} {EXECUTION-ID} [...]");
+
+ if (parameters.length >= 1) {
+ for (final String parameter : parameters) {
+
+ try {
+ reportService.deleteExecution(Long.valueOf(parameter));
+ System.out.println(" - Report execution " + parameter + "successfully deleted!");
+ } catch (final WebServiceException | SyncopeClientException ex) {
+ System.out.println("Error:");
+ if (ex.getMessage().startsWith("NotFound")) {
+ System.out.println(" - Report " + parameter + " doesn't exists!");
+ } else if (ex.getMessage().startsWith("DataIntegrityViolation")) {
+ System.out.println(" - You cannot delete report " + parameter);
+ } else {
+ System.out.println(ex.getMessage());
+ }
+ } catch (final NumberFormatException ex) {
+ System.out.println("Error reading " + parameter + ". It isn't a valid report id");
+ }
+ }
+ } else {
+ System.out.println(deleteExecutionErrorMessage);
+ }
+ break;
+ case EXPORT_EXECUTION_RESULT:
+ final String exportExecutionErrorMessage = UsageMessages.optionCommandMessage(
+ "Usage: report --export-execution-result {EXECUTION-ID} {EXECUTION-ID} [...] {FORMAT}\n"
+ + " Format: CSV / HTML / PDF / XML / RTF");
+
+ if (parameters.length >= 2) {
+ parameters = Arrays.copyOf(parameters, parameters.length - 1);
+ for (final String parameter : parameters) {
+ try {
+ final ReportExecExportFormat format = ReportExecExportFormat.valueOf(input.lastParameter());
+ final Long exportId = Long.valueOf(parameter);
+ final SequenceInputStream report = (SequenceInputStream) reportService.
+ exportExecutionResult(exportId, format).getEntity();
+ switch (format) {
+ case XML:
+ final String xmlFinalName = "export_" + exportId + ".xml";
+ XMLUtils.createXMLFile(report, xmlFinalName);
+ UsageMessages.printErrorMessage(xmlFinalName + " successfully created");
+ break;
+ case CSV:
+ UsageMessages.printErrorMessage(format + " doesn't supported");
+ break;
+ case PDF:
+ UsageMessages.printErrorMessage(format + " doesn't supported");
+ break;
+ case HTML:
+ UsageMessages.printErrorMessage(format + " doesn't supported");
+ break;
+ case RTF:
+ UsageMessages.printErrorMessage(format + " doesn't supported");
+ break;
+ default:
+ UsageMessages.printErrorMessage(format + " doesn't supported");
+ break;
+ }
+ } catch (final WebServiceException | SyncopeClientException ex) {
+ System.out.println("Error:");
+ if (ex.getMessage().startsWith("NotFound")) {
+ UsageMessages.printErrorMessage("Report " + parameter + " doesn't exists!");
+ } else if (ex.getMessage().startsWith("DataIntegrityViolation")) {
+ System.out.println(" - You cannot delete report " + parameter);
+ } else {
+ System.out.println(ex.getMessage());
+ }
+ } catch (final NumberFormatException ex) {
+ System.out.println("Error reading " + parameter + ". It isn't a valid report id");
+ } catch (IOException | ParserConfigurationException | SAXException | TransformerException e) {
+ System.out.println(" - Error creating " + "export_" + parameter + " " + e.getMessage());
+ } catch (final IllegalArgumentException ex) {
+ if (ex.getMessage().startsWith("No enum constant org.apache.syncope.common.lib.types.")) {
+ System.out.println(" - Error: " + input.lastParameter()
+ + " isn't a valid policy type, try with:");
+ for (final ReportExecExportFormat type : ReportExecExportFormat.values()) {
+ System.out.println(" *** " + type.name());
+ }
+ }
+ break;
+ }
+ }
+ } else {
+ System.out.println(exportExecutionErrorMessage);
+ }
+ 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);
}
}
+ private enum Options {
+
+ HELP("--help"),
+ LIST("--list"),
+ LIST_JOBS("--list-jobs"),
+ READ("--read"),
+ DELETE("--delete"),
+ EXECUTE("--execute"),
+ READ_EXECUTION("--read-execution"),
+ DELETE_EXECUTION("--delete-execution"),
+ EXPORT_EXECUTION_RESULT("--export-execution-result");
+
+ 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;
+ }
+ }
+ return optionToReturn;
+ }
+ }
}