added info and help command, some bugfix and code improvements, SYNCOPE-158
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/4133c240 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/4133c240 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/4133c240 Branch: refs/heads/master Commit: 4133c2402e491342d0c32a1a6c5a9bb7d5a8870b Parents: ae88f40 Author: massi <[email protected]> Authored: Wed Oct 14 18:20:09 2015 +0200 Committer: massi <[email protected]> Committed: Wed Oct 14 18:20:09 2015 +0200 ---------------------------------------------------------------------- .../apache/syncope/client/cli/ArgsManager.java | 2 +- .../org/apache/syncope/client/cli/Input.java | 37 +- .../apache/syncope/client/cli/SyncopeAdm.java | 13 +- .../client/cli/commands/AbstractCommand.java | 12 + .../cli/commands/ConfigurationCommand.java | 69 ++-- .../client/cli/commands/HelpCommand.java | 115 +++++++ .../client/cli/commands/InfoCommand.java | 340 +++++++++++++++++++ .../client/cli/commands/LoggerCommand.java | 53 +-- .../cli/commands/NotificationCommand.java | 33 +- .../client/cli/commands/PolicyCommand.java | 41 ++- .../client/cli/commands/ReportCommand.java | 76 +++-- .../client/cli/commands/SchemaCommand.java | 49 ++- .../cli/commands/install/InstallCommand.java | 7 +- .../syncope/client/cli/messages/Messages.java | 40 +++ .../client/cli/messages/UsageMessages.java | 40 --- .../syncope/client/cli/util/CommandUtils.java | 74 ++++ 16 files changed, 803 insertions(+), 198 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/4133c240/client/cli/src/main/java/org/apache/syncope/client/cli/ArgsManager.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/ArgsManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/ArgsManager.java index f323dce..926b4dd 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/ArgsManager.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/ArgsManager.java @@ -25,7 +25,7 @@ public final class ArgsManager { public static void validator(final String[] args) throws IllegalArgumentException { if (args.length == 0) { - throw new IllegalArgumentException(); + throw new IllegalArgumentException("Syntax error: no options"); } else if (!"install".equalsIgnoreCase(args[0])) { final File configFile = new File(InstallConfigFileTemplate.FILE_PATH); if (!configFile.exists()) { http://git-wip-us.apache.org/repos/asf/syncope/blob/4133c240/client/cli/src/main/java/org/apache/syncope/client/cli/Input.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/Input.java b/client/cli/src/main/java/org/apache/syncope/client/cli/Input.java index a7092e7..6e2aeeb 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/Input.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/Input.java @@ -18,21 +18,11 @@ */ package org.apache.syncope.client.cli; -import java.util.List; import org.apache.syncope.client.cli.commands.AbstractCommand; +import org.apache.syncope.client.cli.util.CommandUtils; public class Input { - private boolean ssl = false; - - private String host = "localhost"; - - private String port = "9080"; - - private String username = "admin"; - - private String password = "password"; - private final AbstractCommand command; private String option; @@ -42,7 +32,7 @@ public class Input { public Input(final String[] args) throws InstantiationException, IllegalAccessException, IllegalArgumentException { - command = fromArgs(args[0]); + command = CommandUtils.fromArgs(args[0]); if (args.length > 1) { option = args[1]; @@ -77,7 +67,7 @@ public class Input { public String firstParameter() { return parameters[0]; } - + public String lastParameter() { return parameters[parameters.length - 1]; } @@ -90,27 +80,6 @@ public class Input { return new PairParameter(pairParameterArray[0], pairParameterArray[1]); } - private AbstractCommand fromArgs(final String arg) - throws InstantiationException, IllegalAccessException, IllegalArgumentException { - - final CommandClassScanner ccs = new CommandClassScanner(); - final List<Class<? extends AbstractCommand>> commands = ccs.getComponentClasses(); - - Class<? extends AbstractCommand> commandClass = null; - for (Class<? extends AbstractCommand> cmd : commands) { - if (arg.equals(cmd.getAnnotation(Command.class).name())) { - commandClass = cmd; - } - } - - if (commandClass == null) { - throw new IllegalArgumentException(); - } - - return commandClass.newInstance(); - - } - public class PairParameter { private final String key; http://git-wip-us.apache.org/repos/asf/syncope/blob/4133c240/client/cli/src/main/java/org/apache/syncope/client/cli/SyncopeAdm.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/SyncopeAdm.java b/client/cli/src/main/java/org/apache/syncope/client/cli/SyncopeAdm.java index 2f762e7..0340043 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/SyncopeAdm.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/SyncopeAdm.java @@ -19,6 +19,7 @@ package org.apache.syncope.client.cli; import org.apache.syncope.client.cli.commands.AbstractCommand; +import org.apache.syncope.client.cli.messages.Messages; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,7 +35,10 @@ public final class SyncopeAdm { + " report --help \n" + " policy --help \n" + " entitlement --help \n" - + " schema --help \n"; + + " schema --help \n" + + " install --help \n" + + " info --help\n" + + " help\n"; public static void main(final String[] args) { LOG.debug("Starting with args \n"); @@ -45,14 +49,11 @@ public final class SyncopeAdm { final AbstractCommand command = input.getCommand(); command.execute(input); } catch (final IllegalAccessException | InstantiationException e) { - LOG.error("Error in main", e); - e.printStackTrace(); System.out.println(HELP_MESSAGE); } catch (final IllegalArgumentException ex) { LOG.error("Error in main", ex); - if (ex.getMessage().startsWith("It seems you need to setup")) { - System.out.println(ex.getMessage()); - } else { + Messages.printMessage(ex.getMessage()); + if (!ex.getMessage().startsWith("It seems you")) { System.out.println(HELP_MESSAGE); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/4133c240/client/cli/src/main/java/org/apache/syncope/client/cli/commands/AbstractCommand.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/AbstractCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/AbstractCommand.java index b374e33..7f272fe 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/AbstractCommand.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/AbstractCommand.java @@ -18,9 +18,21 @@ */ package org.apache.syncope.client.cli.commands; +import java.util.List; import org.apache.syncope.client.cli.Input; public abstract class AbstractCommand { public abstract void execute(final Input input); + + protected String helpMessage(final String command, final List<String> options) { + final StringBuilder helpMessageBuilder = new StringBuilder(String.format("Usage: %s [options]\n", command)); + helpMessageBuilder.append(" Options:\n"); + for (final String option : options) { + helpMessageBuilder.append(" ").append(option).append("\n"); + } + return helpMessageBuilder.toString(); + } + + public abstract String getHelpMessage(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/4133c240/client/cli/src/main/java/org/apache/syncope/client/cli/commands/ConfigurationCommand.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/ConfigurationCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/ConfigurationCommand.java index 282e2d1..51e7cb8 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/ConfigurationCommand.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/ConfigurationCommand.java @@ -21,6 +21,8 @@ package org.apache.syncope.client.cli.commands; import java.io.FileNotFoundException; import java.io.IOException; import java.io.SequenceInputStream; +import java.util.ArrayList; +import java.util.List; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; @@ -29,7 +31,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.client.cli.messages.Messages; import org.apache.syncope.client.cli.util.XMLUtils; import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.to.AttrTO; @@ -46,7 +48,7 @@ public class ConfigurationCommand extends AbstractCommand { private static final String EXPORT_FILE_NAME = "/content.xml"; - private static final String HELP_MESSAGE = "Usage: config [options]\n" + private static final String HELP_MESSAGE = "Usage: configuration [options]\n" + " Options:\n" + " --help \n" + " --list \n" @@ -105,12 +107,12 @@ public class ConfigurationCommand extends AbstractCommand { } System.out.println(""); } catch (final Exception ex) { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); break; } break; case READ: - final String readErrorMessage = UsageMessages.optionCommandMessage( + final String readErrorMessage = Messages.optionCommandMessage( "configuration --read {CONF-NAME} {CONF-NAME} [...]"); if (parameters.length >= 1) { AttrTO attrTO; @@ -123,11 +125,11 @@ public class ConfigurationCommand extends AbstractCommand { System.out.println(""); } catch (final SyncopeClientException | WebServiceException ex) { if (ex.getMessage().startsWith("NotFound")) { - UsageMessages.printErrorMessage("Configuration " + parameters[0] + " doesn't exist!"); + Messages.printMessage("Configuration " + parameters[0] + " doesn't exist!"); } else if (ex.getMessage().startsWith("DataIntegrityViolation")) { - UsageMessages.printErrorMessage("You cannot delete configuration " + parameters[0]); + Messages.printMessage("You cannot delete configuration " + parameters[0]); } else { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } break; } @@ -137,7 +139,7 @@ public class ConfigurationCommand extends AbstractCommand { } break; case UPDATE: - final String updateErrorMessage = UsageMessages.optionCommandMessage( + final String updateErrorMessage = Messages.optionCommandMessage( "configuration --update {CONF-NAME}={CONF-VALUE} {CONF-NAME}={CONF-VALUE} [...]"); if (parameters.length >= 1) { Input.PairParameter pairParameter = null; @@ -154,20 +156,20 @@ public class ConfigurationCommand extends AbstractCommand { System.out.println(" - readonly: " + attrTO.isReadonly()); System.out.println(""); } catch (final IllegalArgumentException ex) { - UsageMessages.printErrorMessage(ex.getMessage(), updateErrorMessage); + Messages.printMessage(ex.getMessage(), updateErrorMessage); break; } catch (final SyncopeClientException | WebServiceException ex) { if (ex.getMessage().startsWith("NotFound")) { - UsageMessages.printErrorMessage( + Messages.printMessage( "Configuration " + pairParameter.getKey() + " doesn't exist!"); } else if (ex.getMessage().startsWith("InvalidValues")) { - UsageMessages.printErrorMessage( + Messages.printMessage( pairParameter.getValue() + " is not a valid value for " + pairParameter.getKey()); } else if (ex.getMessage().startsWith("DataIntegrityViolation")) { - UsageMessages.printErrorMessage("You cannot delete configuration " + parameters[0]); + Messages.printMessage("You cannot delete configuration " + parameters[0]); } else { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } break; } @@ -177,7 +179,7 @@ public class ConfigurationCommand extends AbstractCommand { } break; case CREATE: - final String createErrorMessage = UsageMessages.optionCommandMessage( + final String createErrorMessage = Messages.optionCommandMessage( "configuration --create {CONF-NAME}={CONF-VALUE} {CONF-NAME}={CONF-VALUE} [...]"); if (parameters.length >= 1) { Input.PairParameter pairParameter = null; @@ -194,15 +196,15 @@ public class ConfigurationCommand extends AbstractCommand { System.out.println(" - readonly: " + attrTO.isReadonly()); System.out.println(""); } catch (final IllegalArgumentException ex) { - UsageMessages.printErrorMessage(ex.getMessage(), createErrorMessage); + Messages.printMessage(ex.getMessage(), createErrorMessage); break; } catch (final SyncopeClientException | WebServiceException ex) { if (ex.getMessage().startsWith("NotFound")) { - UsageMessages.printErrorMessage( + Messages.printMessage( "Configuration schema " + pairParameter.getKey() + " doesn't exist! Create it before."); } else { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } break; } @@ -212,7 +214,7 @@ public class ConfigurationCommand extends AbstractCommand { } break; case DELETE: - final String deleteErrorMessage = UsageMessages.optionCommandMessage( + final String deleteErrorMessage = Messages.optionCommandMessage( "configuration --delete {CONF-NAME} {CONF-NAME} [...]"); if (parameters.length >= 1) { for (final String parameter : parameters) { @@ -221,11 +223,11 @@ public class ConfigurationCommand extends AbstractCommand { System.out.println("\n - Conf " + parameter + " deleted!\n"); } catch (final SyncopeClientException | WebServiceException ex) { if (ex.getMessage().startsWith("NotFound")) { - UsageMessages.printErrorMessage("Configuration " + parameter + " doesn't exist!"); + Messages.printMessage("Configuration " + parameter + " doesn't exist!"); } else if (ex.getMessage().startsWith("DataIntegrityViolation")) { - UsageMessages.printErrorMessage("You cannot delete configuration", parameter); + Messages.printMessage("You cannot delete configuration", parameter); } else { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } break; } @@ -235,7 +237,7 @@ public class ConfigurationCommand extends AbstractCommand { } break; case EXPORT: - final String exportErrorMessage = UsageMessages.optionCommandMessage( + final String exportErrorMessage = Messages.optionCommandMessage( "configuration --export {WHERE-DIR}"); if (parameters.length == 1) { try { @@ -243,24 +245,24 @@ public class ConfigurationCommand extends AbstractCommand { parameters[0] + EXPORT_FILE_NAME); System.out.println(" - " + parameters[0] + EXPORT_FILE_NAME + " successfully created"); } catch (final IOException ex) { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } catch (ParserConfigurationException | SAXException | TransformerConfigurationException ex) { LOG.error("Error creating content.xml file in {} directory", parameters[0], ex); - UsageMessages.printErrorMessage( + Messages.printMessage( "Error creating " + parameters[0] + EXPORT_FILE_NAME + " " + ex.getMessage()); break; } catch (final TransformerException ex) { LOG.error("Error creating content.xml file in {} directory", parameters[0], ex); if (ex.getCause() instanceof FileNotFoundException) { - UsageMessages.printErrorMessage("Permission denied on " + parameters[0]); + Messages.printMessage("Permission denied on " + parameters[0]); } else { - UsageMessages.printErrorMessage( + Messages.printMessage( "Error creating " + parameters[0] + EXPORT_FILE_NAME + " " + ex.getMessage()); } break; } catch (final SyncopeClientException ex) { LOG.error("Error calling configuration service", ex); - UsageMessages.printErrorMessage("Error calling configuration service " + ex.getMessage()); + Messages.printMessage("Error calling configuration service " + ex.getMessage()); break; } } else { @@ -277,6 +279,11 @@ public class ConfigurationCommand extends AbstractCommand { break; } } + + @Override + public String getHelpMessage() { + return HELP_MESSAGE; + } private enum Options { @@ -311,5 +318,13 @@ public class ConfigurationCommand extends AbstractCommand { } return optionToReturn; } + + public static List<String> toList() { + final List<String> options = new ArrayList<>(); + for (final Options value : values()) { + options.add(value.getOptionName()); + } + return options; + } } } http://git-wip-us.apache.org/repos/asf/syncope/blob/4133c240/client/cli/src/main/java/org/apache/syncope/client/cli/commands/HelpCommand.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/HelpCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/HelpCommand.java new file mode 100644 index 0000000..c4008eb --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/HelpCommand.java @@ -0,0 +1,115 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands; + +import java.util.ArrayList; +import java.util.List; +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.messages.Messages; +import org.apache.syncope.client.cli.util.CommandUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@Command(name = "help") +public class HelpCommand extends AbstractCommand { + + private static final Logger LOG = LoggerFactory.getLogger(HelpCommand.class); + + @Override + public void execute(final Input input) { + LOG.debug("Option: {}", input.getOption()); + LOG.debug("Parameters:"); + for (final String parameter : input.getParameters()) { + LOG.debug(" > " + parameter); + } + + if (StringUtils.isBlank(input.getOption())) { + input.setOption(Options.HELP.getOptionName()); + } + + switch (Options.fromName(input.getOption())) { + case HELP: + final StringBuilder generalHelpBuilder = new StringBuilder("General help\n"); + try { + for (final AbstractCommand command : CommandUtils.commands()) { + generalHelpBuilder.append("Command: ") + .append(command.getClass().getAnnotation(Command.class).name()) + .append("\n") + .append(command.getHelpMessage()) + .append("\n") + .append(" \n"); + } + System.out.println(generalHelpBuilder.toString()); + } catch (final IllegalAccessException | IllegalArgumentException | InstantiationException e) { + Messages.printMessage(e.getMessage()); + } + break; + default: + System.out.println(input.getOption() + " is not a valid option."); + System.out.println(""); + System.out.println(helpMessage("help", Options.toList())); + break; + } + } + + @Override + public String getHelpMessage() { + return helpMessage("help", Options.toList()); + } + + private enum Options { + + HELP("--print"); + + 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; + } + + public static List<String> toList() { + final List<String> options = new ArrayList<>(); + for (final Options value : values()) { + options.add(value.getOptionName()); + } + return options; + } + } + +} http://git-wip-us.apache.org/repos/asf/syncope/blob/4133c240/client/cli/src/main/java/org/apache/syncope/client/cli/commands/InfoCommand.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/InfoCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/InfoCommand.java new file mode 100644 index 0000000..e6e1378 --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/InfoCommand.java @@ -0,0 +1,340 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands; + +import java.util.ArrayList; +import java.util.List; +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.Messages; +import org.apache.syncope.common.lib.to.SyncopeTO; +import org.apache.syncope.common.rest.api.service.SyncopeService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@Command(name = "info") +public class InfoCommand extends AbstractCommand { + + private static final Logger LOG = LoggerFactory.getLogger(InfoCommand.class); + + @Override + public void execute(final Input input) { + LOG.debug("Option: {}", input.getOption()); + LOG.debug("Parameters:"); + for (final String parameter : input.getParameters()) { + LOG.debug(" > " + parameter); + } + + if (StringUtils.isBlank(input.getOption())) { + input.setOption(Options.HELP.getOptionName()); + } + + final SyncopeService syncopeService = SyncopeServices.get(SyncopeService.class); + final SyncopeTO syncopeTO = syncopeService.info(); + switch (Options.fromName(input.getOption())) { + case VERSION: + try { + Messages.printMessage("Syncope version: " + syncopeTO.getVersion()); + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case PWD_RESET_ALLOWED: + try { + Messages.printMessage("Password reset allowed: " + syncopeTO.isPwdResetAllowed()); + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case PWD_RESET_WITH_SECURITY_QUESTION: + try { + Messages.printMessage("Password reset requiring security question: " + + syncopeTO.isPwdResetRequiringSecurityQuestions()); + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case SELF_REG_ALLOWED: + try { + Messages.printMessage("Self registration allowed: " + syncopeTO.isSelfRegAllowed()); + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case PROVISIONING_MANAGER: + try { + Messages.printMessage( + "Any object provisioning manager class: " + syncopeTO.getAnyObjectProvisioningManager(), + "User provisioning manager class: " + syncopeTO.getUserProvisioningManager(), + "Group provisioning manager class: " + syncopeTO.getGroupProvisioningManager()); + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case WORKFLOW_ADAPTER: + try { + Messages.printMessage( + "Any object workflow adapter class: " + syncopeTO.getAnyObjectWorkflowAdapter(), + "User workflow adapter class: " + syncopeTO.getUserWorkflowAdapter(), + "Group workflow adapter class: " + syncopeTO.getGroupWorkflowAdapter()); + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case ACCOUNT_RULES: + try { + for (final String accountRule : syncopeTO.getAccountRules()) { + Messages.printMessage("Account rule: " + accountRule); + } + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case CONNID_LOCATION: + try { + for (final String location : syncopeTO.getConnIdLocations()) { + Messages.printMessage("ConnId location: " + location); + } + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case LOGIC_ACTIONS: + try { + for (final String logic : syncopeTO.getLogicActions()) { + Messages.printMessage("Logic action: " + logic); + } + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case MAIL_TEMPLATES: + try { + for (final String template : syncopeTO.getMailTemplates()) { + Messages.printMessage("Mail template: " + template); + } + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case MAPPING_ITEM_TRANSFORMERS: + try { + for (final String tranformer : syncopeTO.getMappingItemTransformers()) { + Messages.printMessage("Mapping item tranformer: " + tranformer); + } + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case PASSWORD_RULES: + try { + for (final String rules : syncopeTO.getPasswordRules()) { + Messages.printMessage("Password rule: " + rules); + } + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case PROPAGATION_ACTIONS: + try { + for (final String action : syncopeTO.getPropagationActions()) { + Messages.printMessage("Propagation action: " + action); + } + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case PUSH_ACTIONS: + try { + for (final String action : syncopeTO.getPushActions()) { + Messages.printMessage("Push action: " + action); + } + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case PUSH_CORRELATION_ACTIONS: + try { + for (final String rule : syncopeTO.getPushCorrelationRules()) { + Messages.printMessage("Push correlation rule: " + rule); + } + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case REPORTLETS: + try { + for (final String reportlet : syncopeTO.getReportlets()) { + Messages.printMessage("Reportlet: " + reportlet); + } + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case SYNC_ACTIONS: + try { + for (final String action : syncopeTO.getSyncActions()) { + Messages.printMessage("Sync action: " + action); + } + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case SYNC_CORRELATION_RULES: + try { + for (final String rule : syncopeTO.getSyncCorrelationRules()) { + Messages.printMessage("Sync correlation rule: " + rule); + } + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case TASK_JOBS: + try { + for (final String job : syncopeTO.getTaskJobs()) { + Messages.printMessage("Task job: " + job); + } + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case VALIDATORS: + try { + for (final String validator : syncopeTO.getValidators()) { + Messages.printMessage("Validator: " + validator); + } + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case PASSWORD_GENERATOR: + try { + Messages.printMessage( + "Password generator class: " + syncopeTO.getPasswordGenerator()); + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case VIR_ATTR_CACHE: + try { + Messages.printMessage( + "Virtual attribute cache class: " + syncopeTO.getVirAttrCache()); + } catch (final Exception ex) { + Messages.printMessage(ex.getMessage()); + break; + } + break; + case HELP: + System.out.println(helpMessage("info", Options.toList())); + break; + default: + System.out.println(input.getOption() + " is not a valid option."); + System.out.println(""); + System.out.println(helpMessage("info", Options.toList())); + break; + } + } + + @Override + public String getHelpMessage() { + return helpMessage("info", Options.toList()); + } + + private enum Options { + + VERSION("--version"), + PWD_RESET_ALLOWED("--pwd-reset-allowed"), + PWD_RESET_WITH_SECURITY_QUESTION("--pwd-reset-with-question"), + SELF_REG_ALLOWED("--self-reg-allowed"), + PROVISIONING_MANAGER("--provisioning-manager-classes"), + WORKFLOW_ADAPTER("--workflow-adapter-classes"), + ACCOUNT_RULES("--account-rules-classes"), + CONNID_LOCATION("--connid-locations"), + LOGIC_ACTIONS("--logic-actions"), + MAIL_TEMPLATES("--mail-templates"), + MAPPING_ITEM_TRANSFORMERS("--mapping-item-transformers"), + PASSWORD_RULES("--password-rules"), + PROPAGATION_ACTIONS("--propagation-actions"), + PUSH_ACTIONS("--push-actions"), + PUSH_CORRELATION_ACTIONS("--push-correlation-actions"), + REPORTLETS("--reportlets"), + SYNC_ACTIONS("--sync-actions"), + SYNC_CORRELATION_RULES("--sync-correlation-rules"), + TASK_JOBS("--task-jobs"), + VALIDATORS("--validators"), + PASSWORD_GENERATOR("--password-generator"), + VIR_ATTR_CACHE("--vir-attr-cache"), + HELP("--help"); + + 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; + } + + public static List<String> toList() { + final List<String> options = new ArrayList<>(); + for (final Options value : values()) { + options.add(value.getOptionName()); + } + return options; + } + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/4133c240/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 00f12b1..e1ab746 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,12 +18,14 @@ */ package org.apache.syncope.client.cli.commands; +import java.util.ArrayList; +import java.util.List; 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.messages.Messages; import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.to.LoggerTO; import org.apache.syncope.common.lib.types.LoggerLevel; @@ -76,11 +78,11 @@ public class LoggerCommand extends AbstractCommand { System.out.println(""); } } catch (final SyncopeClientException ex) { - UsageMessages.printErrorMessage("Error: " + ex.getMessage()); + Messages.printMessage("Error: " + ex.getMessage()); } break; case READ: - final String readErrorMessage = UsageMessages.optionCommandMessage( + final String readErrorMessage = Messages.optionCommandMessage( "logger --read {LOG-NAME} {LOG-NAME} [...]"); if (parameters.length >= 1) { for (final String parameter : parameters) { @@ -92,10 +94,10 @@ public class LoggerCommand extends AbstractCommand { System.out.println(""); } catch (final SyncopeClientException | WebServiceException ex) { if (ex.getMessage().startsWith("NotFound")) { - UsageMessages.printErrorMessage( + Messages.printMessage( "Logger " + parameter + " doesn't exist!"); } else { - UsageMessages.printErrorMessage("Error: " + ex.getMessage()); + Messages.printMessage("Error: " + ex.getMessage()); } } } @@ -104,7 +106,7 @@ public class LoggerCommand extends AbstractCommand { } break; case UPDATE: - final String updateErrorMessage = UsageMessages.optionCommandMessage( + final String updateErrorMessage = Messages.optionCommandMessage( "logger --update {LOG-NAME}={LOG-LEVEL} {LOG-NAME}={LOG-LEVEL} [...]"); if (parameters.length >= 1) { @@ -121,19 +123,19 @@ public class LoggerCommand extends AbstractCommand { 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()); + Messages.printMessage(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); + Messages.printMessage(ex.getMessage(), updateErrorMessage); } else if (ex.getMessage().startsWith("NotFound")) { - UsageMessages.printErrorMessage( + Messages.printMessage( "Logger " + pairParameter.getKey() + " doesn't exists!"); } else { - UsageMessages.printErrorMessage(ex.getMessage(), updateErrorMessage); + Messages.printMessage(ex.getMessage(), updateErrorMessage); } break; } @@ -143,7 +145,7 @@ public class LoggerCommand extends AbstractCommand { } break; case UPDATE_ALL: - final String updateAllErrorMessage = UsageMessages.optionCommandMessage( + final String updateAllErrorMessage = Messages.optionCommandMessage( "logger --update-all {LOG-LEVEL}"); if (parameters.length == 1) { @@ -157,14 +159,14 @@ public class LoggerCommand extends AbstractCommand { 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()); + Messages.printMessage(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); + Messages.printMessage(ex.getMessage(), updateAllErrorMessage); } break; } @@ -174,7 +176,7 @@ public class LoggerCommand extends AbstractCommand { } break; case CREATE: - final String createErrorMessage = UsageMessages.optionCommandMessage( + final String createErrorMessage = Messages.optionCommandMessage( "logger --create {LOG-NAME}={LOG-LEVEL} {LOG-NAME}={LOG-LEVEL} [...]"); if (parameters.length >= 1) { @@ -193,14 +195,14 @@ public class LoggerCommand extends AbstractCommand { 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()); + Messages.printMessage(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); + Messages.printMessage(ex.getMessage(), createErrorMessage); } break; } @@ -210,7 +212,7 @@ public class LoggerCommand extends AbstractCommand { } break; case DELETE: - final String deleteErrorMessage = UsageMessages.optionCommandMessage( + final String deleteErrorMessage = Messages.optionCommandMessage( "logger --delete {LOG-NAME} {LOG-NAME} [...]"); if (parameters.length >= 1) { @@ -220,10 +222,10 @@ public class LoggerCommand extends AbstractCommand { System.out.println("\n - Logger " + parameter + " deleted!\n"); } catch (final WebServiceException | SyncopeClientException ex) { if (ex.getMessage().startsWith("NotFound")) { - UsageMessages.printErrorMessage( + Messages.printMessage( "Logger " + parameter + " doesn't exists!"); } else { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } } } @@ -240,6 +242,11 @@ public class LoggerCommand extends AbstractCommand { System.out.println(HELP_MESSAGE); } } + + @Override + public String getHelpMessage() { + return HELP_MESSAGE; + } private enum Options { @@ -274,6 +281,14 @@ public class LoggerCommand extends AbstractCommand { } return optionToReturn; } + + public static List<String> toList() { + final List<String> options = new ArrayList<>(); + for (final Options value : values()) { + options.add(value.getOptionName()); + } + return options; + } } } http://git-wip-us.apache.org/repos/asf/syncope/blob/4133c240/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 9028617..a903268 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,12 +18,14 @@ */ package org.apache.syncope.client.cli.commands; +import java.util.ArrayList; +import java.util.List; 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.messages.Messages; import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.to.NotificationTO; import org.apache.syncope.common.rest.api.service.NotificationService; @@ -66,11 +68,11 @@ public class NotificationCommand extends AbstractCommand { System.out.println(notificationTO); } } catch (final SyncopeClientException ex) { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } break; case READ: - final String readErrorMessage = UsageMessages.optionCommandMessage( + final String readErrorMessage = Messages.optionCommandMessage( "notification --read {NOTIFICATION-ID} {NOTIFICATION-ID} [...]"); if (parameters.length >= 1) { for (final String parameter : parameters) { @@ -80,9 +82,9 @@ public class NotificationCommand extends AbstractCommand { 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!"); + Messages.printMessage("Notification " + parameter + " doesn't exists!"); } else { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } } } @@ -91,7 +93,7 @@ public class NotificationCommand extends AbstractCommand { } break; case DELETE: - final String deleteErrorMessage = UsageMessages.optionCommandMessage( + final String deleteErrorMessage = Messages.optionCommandMessage( "notification --delete {NOTIFICATION-ID} {NOTIFICATION-ID} [...]"); if (parameters.length >= 1) { @@ -101,12 +103,12 @@ public class NotificationCommand extends AbstractCommand { 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!"); + Messages.printMessage("Notification " + parameter + " doesn't exists!"); } else { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } } catch (final NumberFormatException ex) { - UsageMessages.printErrorMessage( + Messages.printMessage( "Error reading " + parameter + ". It isn't a valid notification id"); } } @@ -123,6 +125,11 @@ public class NotificationCommand extends AbstractCommand { System.out.println(HELP_MESSAGE); } } + + @Override + public String getHelpMessage() { + return HELP_MESSAGE; + } private enum Options { @@ -154,6 +161,14 @@ public class NotificationCommand extends AbstractCommand { } return optionToReturn; } + + public static List<String> toList() { + final List<String> options = new ArrayList<>(); + for (final Options value : values()) { + options.add(value.getOptionName()); + } + return options; + } } } http://git-wip-us.apache.org/repos/asf/syncope/blob/4133c240/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 d17419f..11d59b8 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,12 +18,14 @@ */ package org.apache.syncope.client.cli.commands; +import java.util.ArrayList; +import java.util.List; 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.messages.Messages; import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.policy.AbstractPolicyTO; import org.apache.syncope.common.lib.types.PolicyType; @@ -64,7 +66,7 @@ public class PolicyCommand extends AbstractCommand { final PolicyService policyService = SyncopeServices.get(PolicyService.class); switch (Options.fromName(input.getOption())) { case LIST_POLICY: - final String listPolicyErrorMessage = UsageMessages.optionCommandMessage( + final String listPolicyErrorMessage = Messages.optionCommandMessage( "Usage: policy --list-policy {POLICY-TYPE}\n" + " Policy type: ACCOUNT / PASSWORD / SYNC / PUSH"); if (parameters.length == 1) { @@ -73,9 +75,9 @@ public class PolicyCommand extends AbstractCommand { System.out.println(policyTO); } } catch (final SyncopeClientException ex) { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } catch (final IllegalArgumentException ex) { - UsageMessages.printErrorMessage( + Messages.printMessage( "Error: " + parameters[0] + " isn't a valid policy type, try with:"); for (final PolicyType type : PolicyType.values()) { System.out.println(" *** " + type.name()); @@ -87,20 +89,20 @@ public class PolicyCommand extends AbstractCommand { } break; case READ: - final String readErrorMessage = UsageMessages.optionCommandMessage( + final String readErrorMessage = Messages.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( + Messages.printMessage( "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!"); + Messages.printMessage("Policy " + parameter + " doesn't exists!"); } else { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } } } @@ -109,7 +111,7 @@ public class PolicyCommand extends AbstractCommand { } break; case DELETE: - final String deleteErrorMessage = UsageMessages.optionCommandMessage( + final String deleteErrorMessage = Messages.optionCommandMessage( "Usage: policy --delete {POLICY-ID} {POLICY-ID} [...]"); if (parameters.length >= 1) { @@ -120,14 +122,14 @@ public class PolicyCommand extends AbstractCommand { } catch (final WebServiceException | SyncopeClientException ex) { System.out.println("Error:"); if (ex.getMessage().startsWith("NotFound")) { - UsageMessages.printErrorMessage("Policy " + parameter + " doesn't exists!"); + Messages.printMessage("Policy " + parameter + " doesn't exists!"); } else if (ex.getMessage().startsWith("DataIntegrityViolation")) { - UsageMessages.printErrorMessage("You cannot delete policy " + parameter); + Messages.printMessage("You cannot delete policy " + parameter); } else { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } } catch (final NumberFormatException ex) { - UsageMessages.printErrorMessage( + Messages.printMessage( "Error reading " + parameter + ". It isn't a valid policy id"); } } @@ -144,6 +146,11 @@ public class PolicyCommand extends AbstractCommand { System.out.println(HELP_MESSAGE); } } + + @Override + public String getHelpMessage() { + return HELP_MESSAGE; + } private enum Options { @@ -175,6 +182,14 @@ public class PolicyCommand extends AbstractCommand { } return optionToReturn; } + + public static List<String> toList() { + final List<String> options = new ArrayList<>(); + for (final Options value : values()) { + options.add(value.getOptionName()); + } + return options; + } } } http://git-wip-us.apache.org/repos/asf/syncope/blob/4133c240/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 ffa8ecd..dfd8d46 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 @@ -20,6 +20,7 @@ package org.apache.syncope.client.cli.commands; import java.io.IOException; import java.io.SequenceInputStream; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.xml.parsers.ParserConfigurationException; @@ -29,7 +30,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.client.cli.messages.Messages; import org.apache.syncope.client.cli.util.XMLUtils; import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.to.ReportExecTO; @@ -87,7 +88,7 @@ public class ReportCommand extends AbstractCommand { System.out.println(reportTO); } } catch (final SyncopeClientException ex) { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } break; case LIST_JOBS: @@ -104,24 +105,24 @@ public class ReportCommand extends AbstractCommand { } } } catch (final SyncopeClientException ex) { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } break; case READ: - final String readErrorMessage = UsageMessages.optionCommandMessage( + final String readErrorMessage = Messages.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( + Messages.printMessage( "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!"); + Messages.printMessage("Report " + parameter + " doesn't exists!"); } else { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } } } @@ -130,7 +131,7 @@ public class ReportCommand extends AbstractCommand { } break; case DELETE: - final String deleteErrorMessage = UsageMessages.optionCommandMessage( + final String deleteErrorMessage = Messages.optionCommandMessage( "Usage: report --execute {REPORT-ID}"); if (parameters.length == 1) { @@ -140,14 +141,14 @@ public class ReportCommand extends AbstractCommand { System.out.println(" - Report " + parameter + " deleted!"); } catch (final WebServiceException | SyncopeClientException ex) { if (ex.getMessage().startsWith("NotFound")) { - UsageMessages.printErrorMessage("Report " + parameter + " doesn't exists!"); + Messages.printMessage("Report " + parameter + " doesn't exists!"); } else if (ex.getMessage().startsWith("DataIntegrityViolation")) { - UsageMessages.printErrorMessage("You cannot delete report " + parameter); + Messages.printMessage("You cannot delete report " + parameter); } else { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } } catch (final NumberFormatException ex) { - UsageMessages.printErrorMessage( + Messages.printMessage( "Error reading " + parameter + ". It isn't a valid report id"); } } @@ -156,7 +157,7 @@ public class ReportCommand extends AbstractCommand { } break; case EXECUTE: - final String executeErrorMessage = UsageMessages.optionCommandMessage( + final String executeErrorMessage = Messages.optionCommandMessage( "Usage: report --execute {REPORT-ID}"); if (parameters.length == 1) { @@ -173,14 +174,14 @@ public class ReportCommand extends AbstractCommand { } catch (final WebServiceException | SyncopeClientException ex) { System.out.println("Error:"); if (ex.getMessage().startsWith("NotFound")) { - UsageMessages.printErrorMessage("Report " + parameters[0] + " doesn't exists!"); + Messages.printMessage("Report " + parameters[0] + " doesn't exists!"); } else if (ex.getMessage().startsWith("DataIntegrityViolation")) { - UsageMessages.printErrorMessage("You cannot delete report " + parameters[0]); + Messages.printMessage("You cannot delete report " + parameters[0]); } else { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } } catch (final NumberFormatException ex) { - UsageMessages.printErrorMessage( + Messages.printMessage( "Error reading " + parameters[0] + ". It isn't a valid report id"); } } else { @@ -188,7 +189,7 @@ public class ReportCommand extends AbstractCommand { } break; case READ_EXECUTION: - final String readExecutionErrorMessage = UsageMessages.optionCommandMessage( + final String readExecutionErrorMessage = Messages.optionCommandMessage( "Usage: report --read-execution {EXECUTION-ID} {EXECUTION-ID} [...]"); if (parameters.length >= 1) { @@ -203,14 +204,14 @@ public class ReportCommand extends AbstractCommand { } catch (final WebServiceException | SyncopeClientException ex) { System.out.println("Error:"); if (ex.getMessage().startsWith("NotFound")) { - UsageMessages.printErrorMessage(" - Report " + parameter + " doesn't exists!"); + Messages.printMessage(" - Report " + parameter + " doesn't exists!"); } else if (ex.getMessage().startsWith("DataIntegrityViolation")) { - UsageMessages.printErrorMessage("You cannot delete report " + parameter); + Messages.printMessage("You cannot delete report " + parameter); } else { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } } catch (final NumberFormatException ex) { - UsageMessages.printErrorMessage( + Messages.printMessage( "Error reading " + parameter + ". It isn't a valid report id"); } } @@ -219,7 +220,7 @@ public class ReportCommand extends AbstractCommand { } break; case DELETE_EXECUTION: - final String deleteExecutionErrorMessage = UsageMessages.optionCommandMessage( + final String deleteExecutionErrorMessage = Messages.optionCommandMessage( "Usage: report --delete-execution {EXECUTION-ID} {EXECUTION-ID} [...]"); if (parameters.length >= 1) { @@ -246,7 +247,7 @@ public class ReportCommand extends AbstractCommand { } break; case EXPORT_EXECUTION_RESULT: - final String exportExecutionErrorMessage = UsageMessages.optionCommandMessage( + final String exportExecutionErrorMessage = Messages.optionCommandMessage( "Usage: report --export-execution-result {EXECUTION-ID} {EXECUTION-ID} [...] {FORMAT}\n" + " Format: CSV / HTML / PDF / XML / RTF"); @@ -262,28 +263,28 @@ public class ReportCommand extends AbstractCommand { case XML: final String xmlFinalName = "export_" + exportId + ".xml"; XMLUtils.createXMLFile(report, xmlFinalName); - UsageMessages.printErrorMessage(xmlFinalName + " successfully created"); + Messages.printMessage(xmlFinalName + " successfully created"); break; case CSV: - UsageMessages.printErrorMessage(format + " doesn't supported"); + Messages.printMessage(format + " doesn't supported"); break; case PDF: - UsageMessages.printErrorMessage(format + " doesn't supported"); + Messages.printMessage(format + " doesn't supported"); break; case HTML: - UsageMessages.printErrorMessage(format + " doesn't supported"); + Messages.printMessage(format + " doesn't supported"); break; case RTF: - UsageMessages.printErrorMessage(format + " doesn't supported"); + Messages.printMessage(format + " doesn't supported"); break; default: - UsageMessages.printErrorMessage(format + " doesn't supported"); + Messages.printMessage(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!"); + Messages.printMessage("Report " + parameter + " doesn't exists!"); } else if (ex.getMessage().startsWith("DataIntegrityViolation")) { System.out.println(" - You cannot delete report " + parameter); } else { @@ -317,6 +318,11 @@ public class ReportCommand extends AbstractCommand { System.out.println(HELP_MESSAGE); } } + + @Override + public String getHelpMessage() { + return HELP_MESSAGE; + } private enum Options { @@ -353,5 +359,13 @@ public class ReportCommand extends AbstractCommand { } return optionToReturn; } + + public static List<String> toList() { + final List<String> options = new ArrayList<>(); + for (final Options value : values()) { + options.add(value.getOptionName()); + } + return options; + } } } http://git-wip-us.apache.org/repos/asf/syncope/blob/4133c240/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 3c182c7..3b9cf18 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 @@ -18,13 +18,15 @@ */ package org.apache.syncope.client.cli.commands; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; 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.messages.Messages; import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.to.AbstractSchemaTO; import org.apache.syncope.common.lib.to.DerSchemaTO; @@ -67,7 +69,7 @@ public class SchemaCommand extends AbstractCommand { final SchemaService schemaService = SyncopeServices.get(SchemaService.class); switch (Options.fromName(input.getOption())) { case LIST: - final String listErrorMessage = UsageMessages.optionCommandMessage( + final String listErrorMessage = Messages.optionCommandMessage( "schema --list {SCHEMA-TYPE}\n" + " Schema type: PLAIN / DERIVED / VIRTUAL"); if (parameters.length == 1) { @@ -95,9 +97,9 @@ public class SchemaCommand extends AbstractCommand { } System.out.println(""); } catch (final SyncopeClientException ex) { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } catch (final IllegalArgumentException ex) { - UsageMessages.printErrorMessage( + Messages.printMessage( input.firstParameter() + " isn't a valid schema type, try with:"); for (final SchemaType type : SchemaType.values()) { System.out.println(" *** " + type.name()); @@ -120,7 +122,7 @@ public class SchemaCommand extends AbstractCommand { System.out.println(""); } } catch (final SyncopeClientException | WebServiceException ex) { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } break; case LIST_PLAIN: @@ -134,7 +136,7 @@ public class SchemaCommand extends AbstractCommand { } System.out.println(""); } catch (final SyncopeClientException | WebServiceException ex) { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } break; case LIST_DERIVED: @@ -146,7 +148,7 @@ public class SchemaCommand extends AbstractCommand { } System.out.println(""); } catch (final SyncopeClientException | WebServiceException ex) { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } break; case LIST_VIRTUAL: @@ -157,11 +159,11 @@ public class SchemaCommand extends AbstractCommand { } System.out.println(""); } catch (final SyncopeClientException | WebServiceException ex) { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } break; case READ: - final String readErrorMessage = UsageMessages.optionCommandMessage( + final String readErrorMessage = Messages.optionCommandMessage( "schema --read {SCHEMA-TYPE} {SCHEMA-KEY}\n" + " Schema type: PLAIN / DERIVED / VIRTUAL"); if (parameters.length >= 2) { @@ -212,15 +214,15 @@ public class SchemaCommand extends AbstractCommand { } } catch (final SyncopeClientException | WebServiceException ex) { if (ex.getMessage().startsWith("NotFound")) { - UsageMessages.printErrorMessage( + Messages.printMessage( "Schema " + parameters[0] + " doesn't exists!"); } else if (ex.getMessage().startsWith("DataIntegrityViolation")) { - UsageMessages.printErrorMessage("You cannot delete schema " + parameters[0]); + Messages.printMessage("You cannot delete schema " + parameters[0]); } else { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } } catch (final IllegalArgumentException ex) { - UsageMessages.printErrorMessage( + Messages.printMessage( parameters[0] + " isn't a valid schema type, try with:"); for (final SchemaType type : SchemaType.values()) { System.out.println(" *** " + type.name()); @@ -243,16 +245,16 @@ public class SchemaCommand extends AbstractCommand { } } catch (final SyncopeClientException | WebServiceException ex) { if (ex.getMessage().startsWith("NotFound")) { - UsageMessages.printErrorMessage( + Messages.printMessage( "Schema " + parameters[0] + " doesn't exists!"); } else if (ex.getMessage().startsWith("DataIntegrityViolation")) { - UsageMessages.printErrorMessage( + Messages.printMessage( "You cannot delete schema " + parameters[0]); } else { - UsageMessages.printErrorMessage(ex.getMessage()); + Messages.printMessage(ex.getMessage()); } } catch (final IllegalArgumentException ex) { - UsageMessages.printErrorMessage( + Messages.printMessage( parameters[0] + " isn't a valid schema type, try with:"); for (final SchemaType type : SchemaType.values()) { System.out.println(" *** " + type.name()); @@ -273,6 +275,11 @@ public class SchemaCommand extends AbstractCommand { } } + @Override + public String getHelpMessage() { + return HELP_MESSAGE; + } + private enum Options { HELP("--help"), @@ -307,5 +314,13 @@ public class SchemaCommand extends AbstractCommand { } return optionToReturn; } + + public static List<String> toList() { + final List<String> options = new ArrayList<>(); + for (final Options value : values()) { + options.add(value.getOptionName()); + } + return options; + } } } http://git-wip-us.apache.org/repos/asf/syncope/blob/4133c240/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallCommand.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallCommand.java index 35441d1..e049a28 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallCommand.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallCommand.java @@ -41,7 +41,7 @@ public class InstallCommand extends AbstractCommand { private static final Logger LOG = LoggerFactory.getLogger(LoggerCommand.class); - private static final String HELP_MESSAGE = "Usage: logger [options]\n" + private static final String HELP_MESSAGE = "Usage: install [options]\n" + " Options:\n" + " --help \n" + " --setup"; @@ -265,6 +265,11 @@ public class InstallCommand extends AbstractCommand { } } + @Override + public String getHelpMessage() { + return HELP_MESSAGE; + } + private enum Options { HELP("--help"), http://git-wip-us.apache.org/repos/asf/syncope/blob/4133c240/client/cli/src/main/java/org/apache/syncope/client/cli/messages/Messages.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/messages/Messages.java b/client/cli/src/main/java/org/apache/syncope/client/cli/messages/Messages.java new file mode 100644 index 0000000..9be3813 --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/messages/Messages.java @@ -0,0 +1,40 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.messages; + +public final class Messages { + + private static final String OPTION_COMMAND_MESSAGE_TEMPLATE = "\n - Usage: %s\n"; + + public static String optionCommandMessage(final String message) { + return String.format(OPTION_COMMAND_MESSAGE_TEMPLATE, message); + } + + public static void printMessage(final String... messages) { + final StringBuilder messageBuilder = new StringBuilder("\n"); + for (final String message : messages) { + messageBuilder.append(" - ").append(message).append("\n"); + } + System.out.println(messageBuilder.toString()); + } + + private Messages() { + + } +}
