You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by fm...@apache.org on 2015/10/23 12:29:39 UTC
[38/54] [abbrv] syncope git commit: refactoring of the schema and
notification stack + bugfixing, SYNCOPE-158
refactoring of the schema and notification stack + bugfixing, SYNCOPE-158
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/80f2548a
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/80f2548a
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/80f2548a
Branch: refs/heads/SYNCOPE-156
Commit: 80f2548a004db0970fbfbd0773a068a8f9c9a836
Parents: 171c0ae
Author: massi <ma...@tirasa.net>
Authored: Thu Oct 22 11:12:50 2015 +0200
Committer: massi <ma...@tirasa.net>
Committed: Thu Oct 22 11:12:50 2015 +0200
----------------------------------------------------------------------
.../cli/commands/CommonsResultManager.java | 10 +-
.../client/cli/commands/HelpCommand.java | 113 -------
.../client/cli/commands/InfoCommand.java | 339 -------------------
.../cli/commands/NotificationCommand.java | 169 ---------
.../client/cli/commands/SchemaCommand.java | 309 -----------------
.../AbstractConfigurationCommand.java | 2 +-
.../commands/domain/AbstractDomainCommand.java | 2 +-
.../syncope/client/cli/commands/help/Help.java | 43 +++
.../client/cli/commands/help/HelpCommand.java | 90 +++++
.../cli/commands/help/HelpResultManager.java | 25 ++
.../syncope/client/cli/commands/info/Info.java | 243 +++++++++++++
.../client/cli/commands/info/InfoCommand.java | 180 ++++++++++
.../cli/commands/info/InfoResultManager.java | 25 ++
.../commands/logger/AbstractLoggerCommand.java | 2 +-
.../cli/commands/logger/LoggerCreate.java | 4 +-
.../cli/commands/logger/LoggerUpdate.java | 6 +-
.../cli/commands/logger/LoggerUpdateAll.java | 6 +-
.../AbstractNotificationCommand.java | 30 ++
.../notification/NotificationCommand.java | 109 ++++++
.../notification/NotificationDelete.java | 56 +++
.../commands/notification/NotificationList.java | 35 ++
.../commands/notification/NotificationRead.java | 54 +++
.../notification/NotificationResultManager.java | 25 ++
.../commands/schema/AbstractSchemaCommand.java | 30 ++
.../cli/commands/schema/SchemaCommand.java | 127 +++++++
.../cli/commands/schema/SchemaDelete.java | 64 ++++
.../client/cli/commands/schema/SchemaList.java | 70 ++++
.../cli/commands/schema/SchemaListAll.java | 55 +++
.../cli/commands/schema/SchemaListDerived.java | 40 +++
.../cli/commands/schema/SchemaListPlain.java | 40 +++
.../cli/commands/schema/SchemaListVirtual.java | 40 +++
.../client/cli/commands/schema/SchemaRead.java | 78 +++++
.../commands/schema/SchemaResultManager.java | 96 ++++++
.../syncope/client/cli/messages/Table.java | 12 +-
34 files changed, 1585 insertions(+), 944 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/80f2548a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/CommonsResultManager.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/CommonsResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/CommonsResultManager.java
index 255b99b..c316e13 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/CommonsResultManager.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/CommonsResultManager.java
@@ -19,8 +19,6 @@
package org.apache.syncope.client.cli.commands;
import org.apache.syncope.client.cli.messages.Messages;
-import org.apache.syncope.client.cli.util.CommandUtils;
-import org.apache.syncope.common.lib.types.LoggerLevel;
public abstract class CommonsResultManager {
@@ -32,8 +30,12 @@ public abstract class CommonsResultManager {
Messages.printNofFoundMessage(what, parameter);
}
- public void typeNotValidError(final String parameter) {
- Messages.printTypeNotValidMessage("logger level", parameter, CommandUtils.fromEnumToArray(LoggerLevel.class));
+ public void notBooleanDeletedError(final String what, final String key) {
+ Messages.printNotBooleanDeletedMessage(what, key);
+ }
+
+ public void typeNotValidError(final String what, final String parameter, final String[] options) {
+ Messages.printTypeNotValidMessage(what, parameter, options);
}
public void commandOptionError(final String message) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/80f2548a/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
deleted file mode 100644
index d167de4..0000000
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/HelpCommand.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * 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:
- Messages.printDefaultMessage(input.getOption(), CommandUtils.helpMessage("info", Options.toList()));
- break;
- }
- }
-
- @Override
- public String getHelpMessage() {
- return CommandUtils.helpMessage("help", Options.toList());
- }
-
- private enum Options {
-
- HELP("--print");
-
- private final String optionName;
-
- 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/80f2548a/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
deleted file mode 100644
index 8868f9b..0000000
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/InfoCommand.java
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- * 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.client.cli.util.CommandUtils;
-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(CommandUtils.helpMessage("info", Options.toList()));
- break;
- default:
- Messages.printDefaultMessage(input.getOption(), CommandUtils.helpMessage("info", Options.toList()));
- break;
- }
- }
-
- @Override
- public String getHelpMessage() {
- return CommandUtils.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;
-
- 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/80f2548a/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
deleted file mode 100644
index 3d1866b..0000000
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/NotificationCommand.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * 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 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.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;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Command(name = "notification")
-public class NotificationCommand extends AbstractCommand {
-
- private static final Logger LOG = LoggerFactory.getLogger(NotificationCommand.class);
-
- private static final String HELP_MESSAGE = "Usage: notification [options]\n"
- + " Options:\n"
- + " --help \n"
- + " --list \n"
- + " --read \n"
- + " Syntax: --read {NOTIFICATION-ID} \n"
- + " --delete \n"
- + " Syntax: --delete {NOTIFICATION-ID}";
-
- @Override
- public void execute(final Input input) {
- LOG.debug("Option: {}", input.getOption());
- LOG.debug("Parameters:");
- for (final String parameter : input.getParameters()) {
- LOG.debug(" > " + parameter);
- }
-
- final String[] parameters = input.getParameters();
-
- if (StringUtils.isBlank(input.getOption())) {
- input.setOption(Options.HELP.getOptionName());
- }
-
- 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) {
- Messages.printMessage(ex.getMessage());
- }
- break;
- case READ:
- final String readErrorMessage = "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) {
- Messages.printIdNotNumberDeletedMessage("notification", parameter);
- } catch (final WebServiceException | SyncopeClientException ex) {
- if (ex.getMessage().startsWith("NotFound")) {
- Messages.printNofFoundMessage("Notification", parameter);
- } else {
- Messages.printMessage(ex.getMessage());
- }
- }
- }
- } else {
- Messages.printCommandOptionMessage(readErrorMessage);
- }
- break;
- case DELETE:
- final String deleteErrorMessage = "notification --delete {NOTIFICATION-ID} {NOTIFICATION-ID} [...]";
-
- if (parameters.length >= 1) {
- for (final String parameter : parameters) {
- try {
- notificationService.delete(Long.valueOf(parameter));
- Messages.printDeletedMessage("Notification", parameter);
- } catch (final WebServiceException | SyncopeClientException ex) {
- if (ex.getMessage().startsWith("NotFound")) {
- Messages.printNofFoundMessage("Notification", parameter);
- } else {
- Messages.printMessage(ex.getMessage());
- }
- } catch (final NumberFormatException ex) {
- Messages.printIdNotNumberDeletedMessage("notification", parameter);
- }
- }
- } else {
- Messages.printCommandOptionMessage(deleteErrorMessage);
- }
- break;
- case HELP:
- System.out.println(HELP_MESSAGE);
- break;
- default:
- Messages.printDefaultMessage(input.getOption(), HELP_MESSAGE);
- }
- }
-
- @Override
- public String getHelpMessage() {
- return HELP_MESSAGE;
- }
-
- private enum Options {
-
- HELP("--help"),
- LIST("--list"),
- READ("--read"),
- DELETE("--delete");
-
- private final String optionName;
-
- 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/80f2548a/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
deleted file mode 100644
index e00ae3f..0000000
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/SchemaCommand.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * 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.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.Messages;
-import org.apache.syncope.client.cli.util.CommandUtils;
-import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.AbstractSchemaTO;
-import org.apache.syncope.common.lib.to.DerSchemaTO;
-import org.apache.syncope.common.lib.to.PlainSchemaTO;
-import org.apache.syncope.common.lib.to.VirSchemaTO;
-import org.apache.syncope.common.lib.types.SchemaType;
-import org.apache.syncope.common.rest.api.service.SchemaService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Command(name = "schema")
-public class SchemaCommand extends AbstractCommand {
-
- private static final Logger LOG = LoggerFactory.getLogger(SchemaCommand.class);
-
- private static final String HELP_MESSAGE = "Usage: schema [options]\n"
- + " Options:\n"
- + " --help \n"
- + " --list-all\n"
- + " --list-plain\n"
- + " --list-derived\n"
- + " --list-virtual\n"
- + " --read {SCHEMA-TYPE} {SCHEMA-KEY}\n"
- + " Schema type: PLAIN / DERIVED / VIRTUAL\n"
- + " --delete {SCHEMA-TYPE} {SCHEMA-KEY}\n"
- + " Schema type: PLAIN / DERIVED / VIRTUAL";
-
- @Override
- 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 SchemaService schemaService = SyncopeServices.get(SchemaService.class);
- switch (Options.fromName(input.getOption())) {
- case LIST:
- final String listErrorMessage = "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:
- System.out.println(" - Schema key: " + ((PlainSchemaTO) schemaTO).getKey());
- System.out.println(" type: " + ((PlainSchemaTO) schemaTO).getType());
- System.out.println(" is mandatory: "
- + ((PlainSchemaTO) schemaTO).getMandatoryCondition());
- break;
- case DERIVED:
- System.out.println(" - Schema key: " + ((DerSchemaTO) schemaTO).getKey());
- System.out.println(" expression: " + ((DerSchemaTO) schemaTO).getExpression());
- break;
- case VIRTUAL:
- System.out.println(" - Schema key: " + ((VirSchemaTO) schemaTO).getKey());
- break;
- default:
- break;
- }
- }
- System.out.println("");
- } catch (final SyncopeClientException ex) {
- Messages.printMessage(ex.getMessage());
- } catch (final IllegalArgumentException ex) {
- Messages.printTypeNotValidMessage(
- "schema", input.firstParameter(), CommandUtils.fromEnumToArray(SchemaType.class));
- }
- } else {
- Messages.printCommandOptionMessage(listErrorMessage);
- }
- break;
- case LIST_ALL:
- try {
- for (final SchemaType value : SchemaType.values()) {
- 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) {
- Messages.printMessage(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) {
- Messages.printMessage(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) {
- Messages.printMessage(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) {
- Messages.printMessage(ex.getMessage());
- }
- break;
- case READ:
- final String readErrorMessage = "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) {
- case PLAIN:
- System.out.println(" - Schema key: " + ((PlainSchemaTO) schemaTO).getKey());
- System.out.println(" any type class: "
- + ((PlainSchemaTO) schemaTO).getAnyTypeClass());
- System.out.println(" conversion pattern: "
- + ((PlainSchemaTO) schemaTO).getConversionPattern());
- System.out.println(" enumeration keys: "
- + ((PlainSchemaTO) schemaTO).getEnumerationKeys());
- System.out.println(" enumeration values: "
- + ((PlainSchemaTO) schemaTO).getEnumerationValues());
- System.out.println(" mandatory condition: "
- + ((PlainSchemaTO) schemaTO).getMandatoryCondition());
- System.out.println(" mime type: " + ((PlainSchemaTO) schemaTO).getMimeType());
- System.out.println(" secret key: "
- + ((PlainSchemaTO) schemaTO).getSecretKey());
- System.out.println(" validator class: "
- + ((PlainSchemaTO) schemaTO).getValidatorClass());
- System.out.println(" cipher algorithm: "
- + ((PlainSchemaTO) schemaTO).getCipherAlgorithm());
- System.out.println(" TYPE: "
- + ((PlainSchemaTO) schemaTO).getType());
- break;
- case DERIVED:
- System.out.println(" - Schema key: " + ((DerSchemaTO) schemaTO).getKey());
- System.out.println(" any type class: "
- + ((DerSchemaTO) schemaTO).getAnyTypeClass());
- System.out.println(" expression: " + ((DerSchemaTO) schemaTO).getExpression());
- break;
- case VIRTUAL:
- System.out.println(" - Schema key: " + ((VirSchemaTO) schemaTO).getKey());
- System.out.println(" any type class: "
- + ((VirSchemaTO) schemaTO).getAnyTypeClass());
- break;
- default:
- break;
- }
- System.out.println("");
- }
- } catch (final SyncopeClientException | WebServiceException ex) {
- if (ex.getMessage().startsWith("NotFound")) {
- Messages.printNofFoundMessage("Schema", parameters[0]);
- } else {
- Messages.printMessage(ex.getMessage());
- }
- } catch (final IllegalArgumentException ex) {
- Messages.printTypeNotValidMessage(
- "schema", input.firstParameter(), CommandUtils.fromEnumToArray(SchemaType.class));
- }
- } else {
- Messages.printCommandOptionMessage(readErrorMessage);
- }
- break;
- case DELETE:
- final String deleteErrorMessage = "schema --delete {SCHEMA-TYPE} {SCHEMA-KEY}\n"
- + " Schema type: PLAIN / DERIVED / VIRTUAL";
- if (parameters.length >= 2) {
- parameters = Arrays.copyOfRange(parameters, 1, parameters.length);
- try {
- for (final String parameter : parameters) {
- schemaService.delete(SchemaType.valueOf(input.firstParameter()), parameter);
- Messages.printDeletedMessage("Schema", parameter);
- }
- } catch (final SyncopeClientException | WebServiceException ex) {
- if (ex.getMessage().startsWith("NotFound")) {
- Messages.printNofFoundMessage("Schema", parameters[0]);
- } else if (ex.getMessage().startsWith("DataIntegrityViolation")) {
- Messages.printMessage(
- "You cannot delete schema " + parameters[0]);
- } else {
- Messages.printMessage(ex.getMessage());
- }
- } catch (final IllegalArgumentException ex) {
- Messages.printTypeNotValidMessage(
- "schema", input.firstParameter(), CommandUtils.fromEnumToArray(SchemaType.class));
- }
- } else {
- Messages.printCommandOptionMessage(deleteErrorMessage);
- }
- break;
- case HELP:
- System.out.println(HELP_MESSAGE);
- break;
- default:
- Messages.printDefaultMessage(input.getOption(), HELP_MESSAGE);
- }
- }
-
- @Override
- public String getHelpMessage() {
- return HELP_MESSAGE;
- }
-
- private enum Options {
-
- HELP("--help"),
- LIST("--list"),
- LIST_ALL("--list-all"),
- LIST_PLAIN("--list-plain"),
- LIST_DERIVED("--list-derived"),
- LIST_VIRTUAL("--list-virtual"),
- READ("--read"),
- DELETE("--delete");
-
- private final String optionName;
-
- 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/80f2548a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/configuration/AbstractConfigurationCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/configuration/AbstractConfigurationCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/configuration/AbstractConfigurationCommand.java
index 59fc423..2942c07 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/configuration/AbstractConfigurationCommand.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/configuration/AbstractConfigurationCommand.java
@@ -21,7 +21,7 @@ package org.apache.syncope.client.cli.commands.configuration;
import org.apache.syncope.client.cli.SyncopeServices;
import org.apache.syncope.common.rest.api.service.ConfigurationService;
-public class AbstractConfigurationCommand {
+public abstract class AbstractConfigurationCommand {
protected final ConfigurationService configurationService = SyncopeServices.get(ConfigurationService.class);
http://git-wip-us.apache.org/repos/asf/syncope/blob/80f2548a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/domain/AbstractDomainCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/domain/AbstractDomainCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/domain/AbstractDomainCommand.java
index 8650ef7..b5bfca5 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/domain/AbstractDomainCommand.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/domain/AbstractDomainCommand.java
@@ -21,7 +21,7 @@ package org.apache.syncope.client.cli.commands.domain;
import org.apache.syncope.client.cli.SyncopeServices;
import org.apache.syncope.common.rest.api.service.DomainService;
-public class AbstractDomainCommand {
+public abstract class AbstractDomainCommand {
protected final DomainService domainService = SyncopeServices.get(DomainService.class);
http://git-wip-us.apache.org/repos/asf/syncope/blob/80f2548a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/help/Help.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/help/Help.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/help/Help.java
new file mode 100644
index 0000000..c658beb
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/help/Help.java
@@ -0,0 +1,43 @@
+/*
+ * 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.help;
+
+import org.apache.syncope.client.cli.Command;
+import org.apache.syncope.client.cli.commands.AbstractCommand;
+import org.apache.syncope.client.cli.util.CommandUtils;
+
+public class Help {
+
+ public void 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) {
+ new HelpResultManager().generic(e.getMessage());
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/80f2548a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/help/HelpCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/help/HelpCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/help/HelpCommand.java
new file mode 100644
index 0000000..eed0924
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/help/HelpCommand.java
@@ -0,0 +1,90 @@
+/*
+ * 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.help;
+
+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.commands.AbstractCommand;
+import org.apache.syncope.client.cli.util.CommandUtils;
+
+@Command(name = "help")
+public class HelpCommand extends AbstractCommand {
+
+ @Override
+ public void execute(final Input input) {
+ if (StringUtils.isBlank(input.getOption())) {
+ input.setOption(Options.HELP.getOptionName());
+ }
+
+ switch (Options.fromName(input.getOption())) {
+ case HELP:
+ new Help().help();
+ break;
+ default:
+ new HelpResultManager().defaultError(
+ input.getOption(), CommandUtils.helpMessage("info", Options.toList()));
+ break;
+ }
+ }
+
+ @Override
+ public String getHelpMessage() {
+ return CommandUtils.helpMessage("help", Options.toList());
+ }
+
+ private enum Options {
+
+ HELP("--print");
+
+ private final String optionName;
+
+ 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/80f2548a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/help/HelpResultManager.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/help/HelpResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/help/HelpResultManager.java
new file mode 100644
index 0000000..7a67943
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/help/HelpResultManager.java
@@ -0,0 +1,25 @@
+/*
+ * 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.help;
+
+import org.apache.syncope.client.cli.commands.CommonsResultManager;
+
+public class HelpResultManager extends CommonsResultManager {
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/80f2548a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/Info.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/Info.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/Info.java
new file mode 100644
index 0000000..ccf9170
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/Info.java
@@ -0,0 +1,243 @@
+/*
+ * 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.info;
+
+import org.apache.syncope.client.cli.SyncopeServices;
+import org.apache.syncope.common.lib.to.SyncopeTO;
+import org.apache.syncope.common.rest.api.service.SyncopeService;
+
+public class Info {
+
+ private final SyncopeTO syncopeTO = SyncopeServices.get(SyncopeService.class).info();
+
+ private final InfoResultManager infoResultManager = new InfoResultManager();
+
+ public void version() {
+ try {
+ infoResultManager.generic("Syncope version: " + syncopeTO.getVersion());
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void pwdResetAllowed() {
+ try {
+ infoResultManager.generic("Password reset allowed: " + syncopeTO.isPwdResetAllowed());
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void resetWithSecurityQuestion() {
+ try {
+ infoResultManager.generic("Password reset requiring security question: "
+ + syncopeTO.isPwdResetRequiringSecurityQuestions());
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void selfRegistrationAllowed() {
+ try {
+ infoResultManager.generic("Self registration allowed: " + syncopeTO.isSelfRegAllowed());
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void provisioningManager() {
+ try {
+ infoResultManager.generic(
+ "Any object provisioning manager class: " + syncopeTO.getAnyObjectProvisioningManager(),
+ "User provisioning manager class: " + syncopeTO.getUserProvisioningManager(),
+ "Group provisioning manager class: " + syncopeTO.getGroupProvisioningManager());
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void workflowAdapter() {
+ try {
+ infoResultManager.generic(
+ "Any object workflow adapter class: " + syncopeTO.getAnyObjectWorkflowAdapter(),
+ "User workflow adapter class: " + syncopeTO.getUserWorkflowAdapter(),
+ "Group workflow adapter class: " + syncopeTO.getGroupWorkflowAdapter());
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void accountRules() {
+ try {
+ for (final String accountRule : syncopeTO.getAccountRules()) {
+ infoResultManager.generic("Account rule: " + accountRule);
+ }
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void connidLocation() {
+ try {
+ for (final String location : syncopeTO.getConnIdLocations()) {
+ infoResultManager.generic("ConnId location: " + location);
+ }
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void logicActions() {
+ try {
+ for (final String logic : syncopeTO.getLogicActions()) {
+ infoResultManager.generic("Logic action: " + logic);
+ }
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void mailTemplates() {
+ try {
+ for (final String template : syncopeTO.getMailTemplates()) {
+ infoResultManager.generic("Mail template: " + template);
+ }
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void mappingItemTransformers() {
+ try {
+ for (final String tranformer : syncopeTO.getMappingItemTransformers()) {
+ infoResultManager.generic("Mapping item tranformer: " + tranformer);
+ }
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void passwordRules() {
+ try {
+ for (final String rules : syncopeTO.getPasswordRules()) {
+ infoResultManager.generic("Password rule: " + rules);
+ }
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void propagationActions() {
+ try {
+ for (final String action : syncopeTO.getPropagationActions()) {
+ infoResultManager.generic("Propagation action: " + action);
+ }
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void pushActions() {
+ try {
+ for (final String action : syncopeTO.getPushActions()) {
+ infoResultManager.generic("Push action: " + action);
+ }
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void pushCorrelationActions() {
+ try {
+ for (final String rule : syncopeTO.getPushCorrelationRules()) {
+ infoResultManager.generic("Push correlation rule: " + rule);
+ }
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void reportlets() {
+ try {
+ for (final String reportlet : syncopeTO.getReportlets()) {
+ infoResultManager.generic("Reportlet: " + reportlet);
+ }
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void syncActions() {
+ try {
+ for (final String action : syncopeTO.getSyncActions()) {
+ infoResultManager.generic("Sync action: " + action);
+ }
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void syncCorrelationRules() {
+ try {
+ for (final String rule : syncopeTO.getSyncCorrelationRules()) {
+ infoResultManager.generic("Sync correlation rule: " + rule);
+ }
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void taskJobs() {
+ try {
+ for (final String job : syncopeTO.getTaskJobs()) {
+ infoResultManager.generic("Task job: " + job);
+ }
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void validators() {
+ try {
+ for (final String validator : syncopeTO.getValidators()) {
+ infoResultManager.generic("Validator: " + validator);
+ }
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void passwordGenerators() {
+ try {
+ infoResultManager.generic(
+ "Password generator class: " + syncopeTO.getPasswordGenerator());
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+
+ public void virAttrCache() {
+ try {
+ infoResultManager.generic(
+ "Virtual attribute cache class: " + syncopeTO.getVirAttrCache());
+ } catch (final Exception ex) {
+ infoResultManager.generic(ex.getMessage());
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/80f2548a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoCommand.java
new file mode 100644
index 0000000..31b9aaa
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoCommand.java
@@ -0,0 +1,180 @@
+/*
+ * 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.info;
+
+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.commands.AbstractCommand;
+import org.apache.syncope.client.cli.util.CommandUtils;
+
+@Command(name = "info")
+public class InfoCommand extends AbstractCommand {
+
+ private final Info info = new Info();
+
+ @Override
+ public void execute(final Input input) {
+ if (StringUtils.isBlank(input.getOption())) {
+ input.setOption(Options.HELP.getOptionName());
+ }
+
+ switch (Options.fromName(input.getOption())) {
+ case VERSION:
+ info.version();
+ break;
+ case PWD_RESET_ALLOWED:
+ info.pwdResetAllowed();
+ break;
+ case PWD_RESET_WITH_SECURITY_QUESTION:
+ info.resetWithSecurityQuestion();
+ break;
+ case SELF_REG_ALLOWED:
+ info.selfRegistrationAllowed();
+ break;
+ case PROVISIONING_MANAGER:
+ info.provisioningManager();
+ break;
+ case WORKFLOW_ADAPTER:
+ info.workflowAdapter();
+ break;
+ case ACCOUNT_RULES:
+ info.accountRules();
+ break;
+ case CONNID_LOCATION:
+ info.connidLocation();
+ break;
+ case LOGIC_ACTIONS:
+ info.logicActions();
+ break;
+ case MAIL_TEMPLATES:
+ info.mailTemplates();
+ break;
+ case MAPPING_ITEM_TRANSFORMERS:
+ info.mappingItemTransformers();
+ break;
+ case PASSWORD_RULES:
+ info.passwordRules();
+ break;
+ case PROPAGATION_ACTIONS:
+ info.propagationActions();
+ break;
+ case PUSH_ACTIONS:
+ info.pushActions();
+ break;
+ case PUSH_CORRELATION_ACTIONS:
+ info.pushCorrelationActions();
+ break;
+ case REPORTLETS:
+ info.reportlets();
+ break;
+ case SYNC_ACTIONS:
+ info.syncActions();
+ break;
+ case SYNC_CORRELATION_RULES:
+ info.syncCorrelationRules();
+ break;
+ case TASK_JOBS:
+ info.taskJobs();
+ break;
+ case VALIDATORS:
+ info.validators();
+ break;
+ case PASSWORD_GENERATOR:
+ info.passwordGenerators();
+ break;
+ case VIR_ATTR_CACHE:
+ info.virAttrCache();
+ break;
+ case HELP:
+ System.out.println(CommandUtils.helpMessage("info", Options.toList()));
+ break;
+ default:
+ new InfoResultManager().defaultError(
+ input.getOption(), CommandUtils.helpMessage("info", Options.toList()));
+ break;
+ }
+ }
+
+ @Override
+ public String getHelpMessage() {
+ return CommandUtils.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;
+
+ 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/80f2548a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoResultManager.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoResultManager.java
new file mode 100644
index 0000000..237af64
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoResultManager.java
@@ -0,0 +1,25 @@
+/*
+ * 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.info;
+
+import org.apache.syncope.client.cli.commands.CommonsResultManager;
+
+public class InfoResultManager extends CommonsResultManager {
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/80f2548a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/AbstractLoggerCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/AbstractLoggerCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/AbstractLoggerCommand.java
index 3782eac..a8703a9 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/AbstractLoggerCommand.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/AbstractLoggerCommand.java
@@ -21,7 +21,7 @@ package org.apache.syncope.client.cli.commands.logger;
import org.apache.syncope.client.cli.SyncopeServices;
import org.apache.syncope.common.rest.api.service.LoggerService;
-public class AbstractLoggerCommand {
+public abstract class AbstractLoggerCommand {
protected final LoggerService loggerService = SyncopeServices.get(LoggerService.class);
http://git-wip-us.apache.org/repos/asf/syncope/blob/80f2548a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerCreate.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerCreate.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerCreate.java
index 29d60ad..6a51e95 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerCreate.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerCreate.java
@@ -21,6 +21,7 @@ package org.apache.syncope.client.cli.commands.logger;
import java.util.LinkedList;
import javax.xml.ws.WebServiceException;
import org.apache.syncope.client.cli.Input;
+import org.apache.syncope.client.cli.util.CommandUtils;
import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.to.LoggerTO;
import org.apache.syncope.common.lib.types.LoggerLevel;
@@ -52,7 +53,8 @@ public class LoggerCreate extends AbstractLoggerCommand {
loggerService.update(LoggerType.LOG, loggerTO);
loggerTOs.add(loggerTO);
} catch (final WebServiceException | SyncopeClientException | IllegalArgumentException ex) {
- loggerResultManager.typeNotValidError(input.firstParameter());
+ loggerResultManager.typeNotValidError(
+ "logger level", input.firstParameter(), CommandUtils.fromEnumToArray(LoggerLevel.class));
failed = true;
break;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/80f2548a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerUpdate.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerUpdate.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerUpdate.java
index 7279b96..03de917 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerUpdate.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerUpdate.java
@@ -21,6 +21,7 @@ package org.apache.syncope.client.cli.commands.logger;
import java.util.LinkedList;
import javax.xml.ws.WebServiceException;
import org.apache.syncope.client.cli.Input;
+import org.apache.syncope.client.cli.util.CommandUtils;
import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.to.LoggerTO;
import org.apache.syncope.common.lib.types.LoggerLevel;
@@ -52,7 +53,10 @@ public class LoggerUpdate extends AbstractLoggerCommand {
loggerTOs.add(loggerTO);
} catch (final WebServiceException | SyncopeClientException | IllegalArgumentException ex) {
if (ex.getMessage().startsWith("No enum constant org.apache.syncope.common.lib.types.")) {
- loggerResultManager.typeNotValidError(input.firstParameter());
+ loggerResultManager.typeNotValidError(
+ "logger level",
+ input.firstParameter(),
+ CommandUtils.fromEnumToArray(LoggerLevel.class));
} else if ("Parameter syntax error!".equalsIgnoreCase(ex.getMessage())) {
loggerResultManager.generic(ex.getMessage(), UPDATE_HELP_MESSAGE);
} else if (ex.getMessage().startsWith("NotFound")) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/80f2548a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerUpdateAll.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerUpdateAll.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerUpdateAll.java
index f1c25c2..55c2e60 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerUpdateAll.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerUpdateAll.java
@@ -21,6 +21,7 @@ package org.apache.syncope.client.cli.commands.logger;
import java.util.LinkedList;
import javax.xml.ws.WebServiceException;
import org.apache.syncope.client.cli.Input;
+import org.apache.syncope.client.cli.util.CommandUtils;
import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.to.LoggerTO;
import org.apache.syncope.common.lib.types.LoggerLevel;
@@ -47,7 +48,10 @@ public class LoggerUpdateAll extends AbstractLoggerCommand {
loggerTOs.add(loggerTO);
} catch (final WebServiceException | SyncopeClientException | IllegalArgumentException ex) {
if (ex.getMessage().startsWith("No enum constant org.apache.syncope.common.lib.types.")) {
- loggerResultManager.typeNotValidError(input.firstParameter());
+ loggerResultManager.typeNotValidError(
+ "logger level",
+ input.firstParameter(),
+ CommandUtils.fromEnumToArray(LoggerLevel.class));
} else {
loggerResultManager.generic(ex.getMessage(), UPDATE_ALL_HELP_MESSAGE);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/80f2548a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/AbstractNotificationCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/AbstractNotificationCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/AbstractNotificationCommand.java
new file mode 100644
index 0000000..2b862ed
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/AbstractNotificationCommand.java
@@ -0,0 +1,30 @@
+/*
+ * 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.notification;
+
+import org.apache.syncope.client.cli.SyncopeServices;
+import org.apache.syncope.common.rest.api.service.NotificationService;
+
+public abstract class AbstractNotificationCommand {
+
+ protected final NotificationService notificationService = SyncopeServices.get(NotificationService.class);
+
+ protected final NotificationResultManager notificationResultManager = new NotificationResultManager();
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/80f2548a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/NotificationCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/NotificationCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/NotificationCommand.java
new file mode 100644
index 0000000..d5197ac
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/NotificationCommand.java
@@ -0,0 +1,109 @@
+/*
+ * 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.notification;
+
+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.commands.AbstractCommand;
+
+@Command(name = "notification")
+public class NotificationCommand extends AbstractCommand {
+
+ private static final String HELP_MESSAGE = "Usage: notification [options]\n"
+ + " Options:\n"
+ + " --help \n"
+ + " --list \n"
+ + " --read \n"
+ + " Syntax: --read {NOTIFICATION-ID} \n"
+ + " --delete \n"
+ + " Syntax: --delete {NOTIFICATION-ID}";
+
+ @Override
+ public void execute(final Input input) {
+ if (StringUtils.isBlank(input.getOption())) {
+ input.setOption(Options.HELP.getOptionName());
+ }
+
+ switch (Options.fromName(input.getOption())) {
+ case LIST:
+ new NotificationList().list();
+ break;
+ case READ:
+ new NotificationRead(input).read();
+ break;
+ case DELETE:
+ new NotificationDelete(input).delete();
+ break;
+ case HELP:
+ System.out.println(HELP_MESSAGE);
+ break;
+ default:
+ new NotificationResultManager().deletedMessage(input.getOption(), HELP_MESSAGE);
+ }
+ }
+
+ @Override
+ public String getHelpMessage() {
+ return HELP_MESSAGE;
+ }
+
+ private enum Options {
+
+ HELP("--help"),
+ LIST("--list"),
+ READ("--read"),
+ DELETE("--delete");
+
+ private final String optionName;
+
+ 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;
+ }
+ }
+
+}