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:12 UTC
[11/54] [abbrv] syncope git commit: Fixed SYNCOPE-592,
messages improvement SYNCOPE-158
Fixed SYNCOPE-592, messages improvement SYNCOPE-158
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/2a99db9c
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/2a99db9c
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/2a99db9c
Branch: refs/heads/SYNCOPE-156
Commit: 2a99db9ce64bd9461fad9e1ac89bed7830b957dc
Parents: 405f212
Author: massi <ma...@tirasa.net>
Authored: Thu Oct 15 17:27:41 2015 +0200
Committer: massi <ma...@tirasa.net>
Committed: Thu Oct 15 17:27:41 2015 +0200
----------------------------------------------------------------------
.../apache/syncope/client/cli/SyncopeAdm.java | 38 +-
.../client/cli/commands/AbstractCommand.java | 9 +
.../cli/commands/ConfigurationCommand.java | 4 +-
.../client/cli/commands/DomainCommand.java | 4 +-
.../client/cli/commands/HelpCommand.java | 4 +-
.../client/cli/commands/InfoCommand.java | 4 +-
.../client/cli/commands/LoggerCommand.java | 34 +-
.../cli/commands/NotificationCommand.java | 9 +-
.../client/cli/commands/PolicyCommand.java | 18 +-
.../client/cli/commands/ReportCommand.java | 42 +-
.../client/cli/commands/SchemaCommand.java | 30 +-
.../client/cli/commands/TaskCommand.java | 583 +++++++++++++++++++
.../syncope/client/cli/messages/Messages.java | 30 +
.../syncope/common/lib/types/TaskType.java | 2 +-
14 files changed, 690 insertions(+), 121 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a99db9c/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 3a66baa..d503498 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
@@ -20,6 +20,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.apache.syncope.client.cli.util.CommandUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -27,20 +28,6 @@ public final class SyncopeAdm {
private static final Logger LOG = LoggerFactory.getLogger(SyncopeAdm.class);
- private static final String HELP_MESSAGE = "Usage: Main [options]\n"
- + " Options:\n"
- + " logger --help \n"
- + " config --help \n"
- + " notification --help \n"
- + " report --help \n"
- + " policy --help \n"
- + " entitlement --help \n"
- + " schema --help \n"
- + " install --help \n"
- + " info --help\n"
- + " domain --help\n"
- + " help\n";
-
public static void main(final String[] args) {
LOG.debug("Starting with args \n");
@@ -50,15 +37,34 @@ public final class SyncopeAdm {
final AbstractCommand command = input.getCommand();
command.execute(input);
} catch (final IllegalAccessException | InstantiationException e) {
- System.out.println(HELP_MESSAGE);
+ System.out.println(helpMessage());
} catch (final IllegalArgumentException ex) {
LOG.error("Error in main", ex);
Messages.printMessage(ex.getMessage());
if (!ex.getMessage().startsWith("It seems you")) {
- System.out.println(HELP_MESSAGE);
+ System.out.println(helpMessage());
+ }
+ }
+
+ }
+
+ private static String helpMessage() {
+ final StringBuilder helpMessageBuilder = new StringBuilder("Usage: Main [options]\n");
+ helpMessageBuilder.append(" Options:\n");
+ try {
+ for (AbstractCommand command : CommandUtils.commands()) {
+ final String commandName = command.getClass().getAnnotation(Command.class).name();
+ helpMessageBuilder.append(" ").append(commandName);
+ if (!"help".equalsIgnoreCase(commandName)) {
+ helpMessageBuilder.append(" --help");
+ }
+ helpMessageBuilder.append("\n");
}
+ } catch (final IllegalAccessException | IllegalArgumentException | InstantiationException ex) {
+ Messages.printMessage(ex.getMessage());
}
+ return helpMessageBuilder.toString();
}
private SyncopeAdm() {
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a99db9c/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 7f272fe..7cee202 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
@@ -35,4 +35,13 @@ public abstract class AbstractCommand {
}
public abstract String getHelpMessage();
+
+ protected static String[] fromEnumToArray(final Class<? extends Enum<?>> enumClass) {
+ final String[] types = new String[enumClass.getFields().length];
+ for (int i = 0; i < enumClass.getFields().length; i++) {
+ types[i] = enumClass.getFields()[i].getName();
+
+ }
+ return types;
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a99db9c/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 4b082ee..ee225d7 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
@@ -264,9 +264,7 @@ public class ConfigurationCommand extends AbstractCommand {
System.out.println(HELP_MESSAGE);
break;
default:
- System.out.println(input.getOption() + " is not a valid option.");
- System.out.println("");
- System.out.println(HELP_MESSAGE);
+ Messages.printDefaultMessage(input.getOption(), HELP_MESSAGE);
break;
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a99db9c/client/cli/src/main/java/org/apache/syncope/client/cli/commands/DomainCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/DomainCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/DomainCommand.java
index e733156..a2a0977 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/DomainCommand.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/DomainCommand.java
@@ -112,9 +112,7 @@ public class DomainCommand extends AbstractCommand {
System.out.println(HELP_MESSAGE);
break;
default:
- System.out.println(input.getOption() + " is not a valid option.");
- System.out.println("");
- System.out.println(HELP_MESSAGE);
+ Messages.printDefaultMessage(input.getOption(), HELP_MESSAGE);
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a99db9c/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
index c4008eb..85b7d73 100644
--- 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
@@ -63,9 +63,7 @@ public class HelpCommand extends AbstractCommand {
}
break;
default:
- System.out.println(input.getOption() + " is not a valid option.");
- System.out.println("");
- System.out.println(helpMessage("help", Options.toList()));
+ Messages.printDefaultMessage(input.getOption(), helpMessage("info", Options.toList()));
break;
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a99db9c/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
index e6e1378..07bb952 100644
--- 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
@@ -267,9 +267,7 @@ public class InfoCommand extends AbstractCommand {
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()));
+ Messages.printDefaultMessage(input.getOption(), helpMessage("info", Options.toList()));
break;
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a99db9c/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 6a5cde6..6c11c6f 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
@@ -106,7 +106,7 @@ public class LoggerCommand extends AbstractCommand {
final String updateErrorMessage = "logger --update {LOG-NAME}={LOG-LEVEL} {LOG-NAME}={LOG-LEVEL} [...]";
if (parameters.length >= 1) {
- Input.PairParameter pairParameter = null;
+ Input.PairParameter pairParameter;
for (final String parameter : parameters) {
try {
pairParameter = input.toPairParameter(parameter);
@@ -119,12 +119,8 @@ 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.")) {
- Messages.printMessage(ex.getMessage());
- System.out.println("Try with:");
- for (final LoggerLevel level : LoggerLevel.values()) {
- System.out.println(" *** " + level.name());
- }
- System.out.println("");
+ Messages.printTypeNotValidMessage(
+ "logger level", input.firstParameter(), fromEnumToArray(LoggerLevel.class));
} else if ("Parameter syntax error!".equalsIgnoreCase(ex.getMessage())) {
Messages.printMessage(ex.getMessage(), updateErrorMessage);
} else if (ex.getMessage().startsWith("NotFound")) {
@@ -153,12 +149,8 @@ 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.")) {
- Messages.printMessage(ex.getMessage());
- System.out.println("Try with:");
- for (final LoggerLevel level : LoggerLevel.values()) {
- System.out.println(" *** " + level.name());
- }
- System.out.println("");
+ Messages.printTypeNotValidMessage(
+ "logger level", input.firstParameter(), fromEnumToArray(LoggerLevel.class));
} else {
Messages.printMessage(ex.getMessage(), updateAllErrorMessage);
}
@@ -187,16 +179,8 @@ public class LoggerCommand extends AbstractCommand {
System.out.println(" - level: " + loggerTO.getLevel());
System.out.println("");
} catch (final WebServiceException | SyncopeClientException | IllegalArgumentException ex) {
- if (ex.getMessage().startsWith("No enum constant org.apache.syncope.common.lib.types.")) {
- 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())) {
- Messages.printMessage(ex.getMessage(), createErrorMessage);
- }
+ Messages.printTypeNotValidMessage(
+ "logger level", input.firstParameter(), fromEnumToArray(LoggerLevel.class));
break;
}
}
@@ -228,9 +212,7 @@ public class LoggerCommand extends AbstractCommand {
System.out.println(HELP_MESSAGE);
break;
default:
- System.out.println(input.getOption() + " is not a valid option.");
- System.out.println("");
- System.out.println(HELP_MESSAGE);
+ Messages.printDefaultMessage(input.getOption(), HELP_MESSAGE);
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a99db9c/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 49cc2e2..194ee11 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
@@ -78,7 +78,7 @@ public class NotificationCommand extends AbstractCommand {
try {
System.out.println(notificationService.read(Long.valueOf(parameter)));
} catch (final NumberFormatException ex) {
- System.out.println("Error reading " + parameter + ". It isn't a valid notification id");
+ Messages.printIdNotNumberDeletedMessage("notification", parameter);
} catch (final WebServiceException | SyncopeClientException ex) {
if (ex.getMessage().startsWith("NotFound")) {
Messages.printNofFoundMessage("Notification", parameter);
@@ -106,8 +106,7 @@ public class NotificationCommand extends AbstractCommand {
Messages.printMessage(ex.getMessage());
}
} catch (final NumberFormatException ex) {
- Messages.printMessage(
- "Error reading " + parameter + ". It isn't a valid notification id");
+ Messages.printIdNotNumberDeletedMessage("notification", parameter);
}
}
} else {
@@ -118,9 +117,7 @@ public class NotificationCommand extends AbstractCommand {
System.out.println(HELP_MESSAGE);
break;
default:
- System.out.println(input.getOption() + " is not a valid option.");
- System.out.println("");
- System.out.println(HELP_MESSAGE);
+ Messages.printDefaultMessage(input.getOption(), HELP_MESSAGE);
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a99db9c/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 cd043ce..a69be18 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
@@ -77,12 +77,8 @@ public class PolicyCommand extends AbstractCommand {
} catch (final SyncopeClientException ex) {
Messages.printMessage(ex.getMessage());
} catch (final IllegalArgumentException ex) {
- Messages.printMessage(
- "Error: " + parameters[0] + " isn't a valid policy type, try with:");
- for (final PolicyType type : PolicyType.values()) {
- System.out.println(" *** " + type.name());
- }
- System.out.println("");
+ Messages.printTypeNotValidMessage(
+ "policy", input.firstParameter(), fromEnumToArray(PolicyType.class));
}
} else {
Messages.printCommandOptionMessage(listPolicyErrorMessage);
@@ -96,8 +92,7 @@ public class PolicyCommand extends AbstractCommand {
try {
System.out.println(policyService.read(Long.valueOf(parameter)));
} catch (final NumberFormatException ex) {
- Messages.printMessage(
- "Error reading " + parameter + ". It isn't a valid policy id");
+ Messages.printIdNotNumberDeletedMessage("policy", parameter);
} catch (final WebServiceException | SyncopeClientException ex) {
if (ex.getMessage().startsWith("NotFound")) {
Messages.printNofFoundMessage("Policy", parameter);
@@ -128,8 +123,7 @@ public class PolicyCommand extends AbstractCommand {
Messages.printMessage(ex.getMessage());
}
} catch (final NumberFormatException ex) {
- Messages.printMessage(
- "Error reading " + parameter + ". It isn't a valid policy id");
+ Messages.printIdNotNumberDeletedMessage("policy", parameter);
}
}
} else {
@@ -140,9 +134,7 @@ public class PolicyCommand extends AbstractCommand {
System.out.println(HELP_MESSAGE);
break;
default:
- System.out.println(input.getOption() + " is not a valid option.");
- System.out.println("");
- System.out.println(HELP_MESSAGE);
+ Messages.printDefaultMessage(input.getOption(), HELP_MESSAGE);
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a99db9c/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 3d9770e..2178d22 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
@@ -109,14 +109,13 @@ public class ReportCommand extends AbstractCommand {
}
break;
case READ:
- final String readErrorMessage = "Usage: report --read {REPORT-ID} {REPORT-ID} [...]";
+ final String readErrorMessage = "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) {
- Messages.printMessage(
- "Error reading " + parameter + ". It isn't a valid report id");
+ Messages.printIdNotNumberDeletedMessage("report", parameter);
} catch (final WebServiceException | SyncopeClientException ex) {
if (ex.getMessage().startsWith("NotFound")) {
Messages.printNofFoundMessage("Report", parameter);
@@ -130,9 +129,9 @@ public class ReportCommand extends AbstractCommand {
}
break;
case DELETE:
- final String deleteErrorMessage = "report --execute {REPORT-ID}";
+ final String deleteErrorMessage = "report --delete {REPORT-ID} {REPORT-ID} [...]";
- if (parameters.length == 1) {
+ if (parameters.length >= 1) {
for (final String parameter : parameters) {
try {
reportService.delete(Long.valueOf(parameter));
@@ -146,8 +145,7 @@ public class ReportCommand extends AbstractCommand {
Messages.printMessage(ex.getMessage());
}
} catch (final NumberFormatException ex) {
- Messages.printMessage(
- "Error reading " + parameter + ". It isn't a valid report id");
+ Messages.printIdNotNumberDeletedMessage("report", parameter);
}
}
} else {
@@ -155,7 +153,7 @@ public class ReportCommand extends AbstractCommand {
}
break;
case EXECUTE:
- final String executeErrorMessage = "Usage: report --execute {REPORT-ID}";
+ final String executeErrorMessage = "report --execute {REPORT-ID}";
if (parameters.length == 1) {
@@ -178,8 +176,7 @@ public class ReportCommand extends AbstractCommand {
Messages.printMessage(ex.getMessage());
}
} catch (final NumberFormatException ex) {
- Messages.printMessage(
- "Error reading " + parameters[0] + ". It isn't a valid report id");
+ Messages.printIdNotNumberDeletedMessage("report", parameters[0]);
}
} else {
Messages.printCommandOptionMessage(executeErrorMessage);
@@ -205,8 +202,7 @@ public class ReportCommand extends AbstractCommand {
Messages.printMessage(ex.getMessage());
}
} catch (final NumberFormatException ex) {
- Messages.printMessage(
- "Error reading " + parameter + ". It isn't a valid report id");
+ Messages.printIdNotNumberDeletedMessage("report", parameter);
}
}
} else {
@@ -232,7 +228,7 @@ public class ReportCommand extends AbstractCommand {
System.out.println(ex.getMessage());
}
} catch (final NumberFormatException ex) {
- System.out.println("Error reading " + parameter + ". It isn't a valid report id");
+ Messages.printIdNotNumberDeletedMessage("report", parameter);
}
}
} else {
@@ -241,7 +237,7 @@ public class ReportCommand extends AbstractCommand {
break;
case EXPORT_EXECUTION_RESULT:
final String exportExecutionErrorMessage
- = "Usage: report --export-execution-result {EXECUTION-ID} {EXECUTION-ID} [...] {FORMAT}\n"
+ = "report --export-execution-result {EXECUTION-ID} {EXECUTION-ID} [...] {FORMAT}\n"
+ " Format: CSV / HTML / PDF / XML / RTF";
if (parameters.length >= 2) {
@@ -281,19 +277,15 @@ public class ReportCommand extends AbstractCommand {
System.out.println(ex.getMessage());
}
} catch (final NumberFormatException ex) {
- System.out.println("Error reading " + parameter + ". It isn't a valid report id");
+ Messages.printIdNotNumberDeletedMessage("report", parameter);
} catch (IOException | ParserConfigurationException | SAXException | TransformerException e) {
System.out.println(" - Error creating " + "export_" + parameter + " " + e.getMessage());
} catch (final IllegalArgumentException ex) {
- if (ex.getMessage().startsWith("No enum constant org.apache.syncope.common.lib.types.")) {
- System.out.println(" - Error: " + input.lastParameter()
- + " isn't a valid policy type, try with:");
- for (final ReportExecExportFormat type : ReportExecExportFormat.values()) {
- System.out.println(" *** " + type.name());
- }
- }
- break;
+ Messages.printTypeNotValidMessage(
+ "format", input.firstParameter(),
+ fromEnumToArray(ReportExecExportFormat.class));
}
+ break;
}
} else {
Messages.printCommandOptionMessage(exportExecutionErrorMessage);
@@ -303,9 +295,7 @@ public class ReportCommand extends AbstractCommand {
System.out.println(HELP_MESSAGE);
break;
default:
- System.out.println(input.getOption() + " is not a valid option.");
- System.out.println("");
- System.out.println(HELP_MESSAGE);
+ Messages.printDefaultMessage(input.getOption(), HELP_MESSAGE);
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a99db9c/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 28e66de..7cb9ca1 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,6 +18,8 @@
*/
package org.apache.syncope.client.cli.commands;
+import static org.apache.syncope.client.cli.commands.AbstractCommand.fromEnumToArray;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -98,12 +100,8 @@ public class SchemaCommand extends AbstractCommand {
} catch (final SyncopeClientException ex) {
Messages.printMessage(ex.getMessage());
} catch (final IllegalArgumentException ex) {
- Messages.printMessage(
- input.firstParameter() + " isn't a valid schema type, try with:");
- for (final SchemaType type : SchemaType.values()) {
- System.out.println(" *** " + type.name());
- }
- System.out.println("");
+ Messages.printTypeNotValidMessage(
+ "schema", input.firstParameter(), fromEnumToArray(SchemaType.class));
}
} else {
Messages.printCommandOptionMessage(listErrorMessage);
@@ -217,12 +215,8 @@ public class SchemaCommand extends AbstractCommand {
Messages.printMessage(ex.getMessage());
}
} catch (final IllegalArgumentException ex) {
- Messages.printMessage(
- parameters[0] + " isn't a valid schema type, try with:");
- for (final SchemaType type : SchemaType.values()) {
- System.out.println(" *** " + type.name());
- }
- System.out.println("");
+ Messages.printTypeNotValidMessage(
+ "schema", input.firstParameter(), fromEnumToArray(SchemaType.class));
}
} else {
Messages.printCommandOptionMessage(readErrorMessage);
@@ -248,12 +242,8 @@ public class SchemaCommand extends AbstractCommand {
Messages.printMessage(ex.getMessage());
}
} catch (final IllegalArgumentException ex) {
- Messages.printMessage(
- parameters[0] + " isn't a valid schema type, try with:");
- for (final SchemaType type : SchemaType.values()) {
- System.out.println(" *** " + type.name());
- }
- System.out.println("");
+ Messages.printTypeNotValidMessage(
+ "schema", input.firstParameter(), fromEnumToArray(SchemaType.class));
}
} else {
Messages.printCommandOptionMessage(deleteErrorMessage);
@@ -263,9 +253,7 @@ public class SchemaCommand extends AbstractCommand {
System.out.println(HELP_MESSAGE);
break;
default:
- System.out.println(input.getOption() + " is not a valid option.");
- System.out.println("");
- System.out.println(HELP_MESSAGE);
+ Messages.printDefaultMessage(input.getOption(), HELP_MESSAGE);
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a99db9c/client/cli/src/main/java/org/apache/syncope/client/cli/commands/TaskCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/TaskCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/TaskCommand.java
new file mode 100644
index 0000000..9dcb795
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/TaskCommand.java
@@ -0,0 +1,583 @@
+/*
+ * 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 java.util.Map;
+import javax.xml.ws.WebServiceException;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.cli.Command;
+import org.apache.syncope.client.cli.Input;
+import org.apache.syncope.client.cli.SyncopeServices;
+import org.apache.syncope.client.cli.messages.Messages;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.to.AbstractTaskTO;
+import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.syncope.common.lib.to.NotificationTaskTO;
+import org.apache.syncope.common.lib.to.PropagationTaskTO;
+import org.apache.syncope.common.lib.to.PushTaskTO;
+import org.apache.syncope.common.lib.to.SchedTaskTO;
+import org.apache.syncope.common.lib.to.SyncTaskTO;
+import org.apache.syncope.common.lib.to.TaskExecTO;
+import org.apache.syncope.common.lib.types.JobStatusType;
+import org.apache.syncope.common.lib.types.TaskType;
+import org.apache.syncope.common.rest.api.beans.TaskQuery;
+import org.apache.syncope.common.rest.api.service.TaskService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Command(name = "task")
+public class TaskCommand extends AbstractCommand {
+
+ private static final Logger LOG = LoggerFactory.getLogger(LoggerCommand.class);
+
+ private static final String HELP_MESSAGE = "Usage: task [options]\n"
+ + " Options:\n"
+ + " --help \n"
+ + " --list-task \n"
+ + " Syntax: --list-task {TASK-TYPE} \n"
+ + " Task type: NOTIFICATION / PROPAGATION / PUSH / SCHEDULED / SYNCHRONIZATION\n"
+ + " --list-running-jobs \n"
+ + " --list-scheduled-jobs \n"
+ + " --read \n"
+ + " Syntax: --read {TASK-ID} {TASK-ID} [...]\n"
+ + " --read-execution \n"
+ + " Syntax: --read-execution {TASK-EXEC-ID} {TASK-EXEC-ID} [...]\n"
+ + " --delete \n"
+ + " Syntax: --delete {TASK-ID} {TASK-ID} [...]\n"
+ + " --delete-execution \n"
+ + " Syntax: --delete-execution {TASK-EXEC-ID} {TASK-EXEC-ID} [...]\n"
+ + " --execute \n"
+ + " Syntax: --execute {TASK-ID} {DRY-RUN}"
+ + " Dry run: true / false";
+
+ @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 TaskService taskService = SyncopeServices.get(TaskService.class);
+ switch (Options.fromName(input.getOption())) {
+ case LIST_TASK:
+ final String listTaskErrorMessage = "task --list-task {TASK-TYPE}\n"
+ + " Task type: NOTIFICATION / PROPAGATION / PUSH / SCHEDULED / SYNCHRONIZATION";
+ if (parameters.length == 1) {
+ try {
+ final TaskType taskType = TaskType.valueOf(parameters[0]);
+ for (final AbstractTaskTO taskTO : taskService.list(taskType, new TaskQuery()).getResult()) {
+ switch (taskType) {
+ case NOTIFICATION:
+ final NotificationTaskTO notificationTaskTO = (NotificationTaskTO) taskTO;
+ System.out.println("");
+ System.out.println(" - Notification task key: " + notificationTaskTO.getKey());
+ System.out.println(" executed: " + notificationTaskTO.isExecuted());
+ System.out.println(" sender: " + notificationTaskTO.getSender());
+ System.out.println(" subjetc: " + notificationTaskTO.getSubject());
+ System.out.println(" text body: " + notificationTaskTO.getTextBody());
+ System.out.println(" html body: " + notificationTaskTO.getHtmlBody());
+ System.out.println(" latest execution status: "
+ + notificationTaskTO.getLatestExecStatus());
+ System.out.println(" start date: " + notificationTaskTO.getStartDate());
+ System.out.println(" end date: " + notificationTaskTO.getEndDate());
+ System.out.println(" recipients: " + notificationTaskTO.getRecipients());
+ System.out.println(" trace level: " + notificationTaskTO.getTraceLevel());
+ for (final TaskExecTO taskExecTO : notificationTaskTO.getExecutions()) {
+ printTaskExecTO(taskExecTO);
+ }
+ System.out.println("");
+ break;
+ case PROPAGATION:
+ final PropagationTaskTO propagationTaskTO = (PropagationTaskTO) taskTO;
+ System.out.println("");
+ System.out.println(" - Propagation task key: " + propagationTaskTO.getKey());
+ System.out.println(" resource: " + propagationTaskTO.getResource());
+ System.out.println(" any key: " + propagationTaskTO.getAnyKey());
+ System.out.println(" any type kind: " + propagationTaskTO.getAnyTypeKind());
+ System.out.println(" connector object key: "
+ + propagationTaskTO.getConnObjectKey());
+ System.out.println(" old connector object key: "
+ + propagationTaskTO.getOldConnObjectKey());
+ System.out.println(" latest execution status: "
+ + propagationTaskTO.getLatestExecStatus());
+ System.out.println(" class name: " + propagationTaskTO.getObjectClassName());
+ System.out.println(" xml attribute: " + propagationTaskTO.getXmlAttributes());
+ System.out.println(" start date: " + propagationTaskTO.getStartDate());
+ System.out.println(" end date: " + propagationTaskTO.getEndDate());
+ System.out.println(" operation: " + propagationTaskTO.getOperation());
+ for (final TaskExecTO taskExecTO : propagationTaskTO.getExecutions()) {
+ printTaskExecTO(taskExecTO);
+ }
+ System.out.println("");
+ break;
+ case PUSH:
+ final PushTaskTO pushTaskTO = (PushTaskTO) taskTO;
+ System.out.println("");
+ System.out.println(" - Push task key: " + pushTaskTO.getKey());
+ System.out.println(" name: " + pushTaskTO.getName());
+ System.out.println(" resource: " + pushTaskTO.getResource());
+ System.out.println(" cron expression: " + pushTaskTO.getCronExpression());
+ System.out.println(" description: " + pushTaskTO.getDescription());
+ System.out.println(" is perform create: " + pushTaskTO.isPerformCreate());
+ System.out.println(" is perform delete: " + pushTaskTO.isPerformDelete());
+ System.out.println(" is perform update: " + pushTaskTO.isPerformUpdate());
+ System.out.println(" is sync status: " + pushTaskTO.isSyncStatus());
+ System.out.println(" start date: " + pushTaskTO.getStartDate());
+ System.out.println(" end date: " + pushTaskTO.getEndDate());
+ System.out.println(" last execution: " + pushTaskTO.getLastExec());
+ System.out.println(" next execution: " + pushTaskTO.getNextExec());
+ System.out.println(" latest execution status: "
+ + pushTaskTO.getLatestExecStatus());
+ System.out.println(" filters: " + pushTaskTO.getFilters());
+ System.out.println(" delegate class: " + pushTaskTO.getJobDelegateClassName());
+ System.out.println(" action class: " + pushTaskTO.getActionsClassNames());
+ System.out.println(" matching rule: " + pushTaskTO.getMatchingRule());
+ System.out.println(" not matching rule: " + pushTaskTO.getUnmatchingRule());
+ for (final TaskExecTO taskExecTO : pushTaskTO.getExecutions()) {
+ printTaskExecTO(taskExecTO);
+ }
+ System.out.println("");
+ break;
+ case SCHEDULED:
+ final SchedTaskTO schedTaskTO = (SchedTaskTO) taskTO;
+ System.out.println("");
+ System.out.println(" - Scheduled task key: " + schedTaskTO.getKey());
+ System.out.println(" name: " + schedTaskTO.getName());
+ System.out.println(" cron expression: " + schedTaskTO.getCronExpression());
+ System.out.println(" description: " + schedTaskTO.getDescription());
+ System.out.println(" start date: " + schedTaskTO.getStartDate());
+ System.out.println(" end date: " + schedTaskTO.getEndDate());
+ System.out.println(" last execution: " + schedTaskTO.getLastExec());
+ System.out.println(" next execution: " + schedTaskTO.getNextExec());
+ System.out.println(" latest execution status: "
+ + schedTaskTO.getLatestExecStatus());
+ System.out.println(" job delegate class: "
+ + schedTaskTO.getJobDelegateClassName());
+ for (final TaskExecTO taskExecTO : schedTaskTO.getExecutions()) {
+ printTaskExecTO(taskExecTO);
+ }
+ System.out.println("");
+ break;
+ case SYNCHRONIZATION:
+ final SyncTaskTO syncTaskTO = (SyncTaskTO) taskTO;
+ System.out.println("");
+ System.out.println(" - Sync task key: " + syncTaskTO.getKey());
+ System.out.println(" name: " + syncTaskTO.getName());
+ System.out.println(" resource: " + syncTaskTO.getResource());
+ System.out.println(" realm destination: " + syncTaskTO.getDestinationRealm());
+ System.out.println(" cron expression: " + syncTaskTO.getCronExpression());
+ System.out.println(" description: " + syncTaskTO.getDescription());
+ System.out.println(" is full reconciliation: "
+ + syncTaskTO.isFullReconciliation());
+ System.out.println(" is perform create: " + syncTaskTO.isPerformCreate());
+ System.out.println(" is perform delete: " + syncTaskTO.isPerformDelete());
+ System.out.println(" is perform update: " + syncTaskTO.isPerformUpdate());
+ System.out.println(" is sync status: " + syncTaskTO.isSyncStatus());
+ System.out.println(" templates:");
+ for (Map.Entry<String, AnyTO> entrySet : syncTaskTO.getTemplates().entrySet()) {
+ final String key = entrySet.getKey();
+ final AnyTO value = entrySet.getValue();
+ System.out.println(" " + key + " key: " + value.getKey()
+ + " of realm" + value.getRealm()
+ + " on resource " + value.getResources());
+
+ }
+ System.out.println(" start date: " + syncTaskTO.getStartDate());
+ System.out.println(" end date: " + syncTaskTO.getEndDate());
+ System.out.println(" next execution: " + syncTaskTO.getNextExec());
+ System.out.println(" last execution: " + syncTaskTO.getLastExec());
+ System.out.println(" latest execution status: "
+ + syncTaskTO.getLatestExecStatus());
+ System.out.println(" job delegate class: "
+ + syncTaskTO.getJobDelegateClassName());
+ System.out.println(" action class name: " + syncTaskTO.getActionsClassNames());
+ System.out.println(" matching rule: " + syncTaskTO.getMatchingRule());
+ System.out.println(" unmatching rule: " + syncTaskTO.getUnmatchingRule());
+ for (final TaskExecTO taskExecTO : syncTaskTO.getExecutions()) {
+ printTaskExecTO(taskExecTO);
+ }
+ System.out.println("");
+ break;
+ default:
+ break;
+ }
+ }
+ } catch (final SyncopeClientException ex) {
+ Messages.printMessage(ex.getMessage());
+ } catch (final IllegalArgumentException ex) {
+ Messages.printTypeNotValidMessage("task", parameters[0], fromEnumToArray(TaskType.class));
+ }
+ } else {
+ Messages.printCommandOptionMessage(listTaskErrorMessage);
+ }
+ break;
+ case LIST_RUNNING_JOBS:
+ try {
+ for (final TaskExecTO taskExecTO : taskService.listJobs(JobStatusType.RUNNING)) {
+ printTaskExecTO(taskExecTO);
+ }
+ } catch (final SyncopeClientException ex) {
+ Messages.printMessage(ex.getMessage());
+ }
+ break;
+ case LIST_SCHEDULED_JOBS:
+ try {
+ for (final TaskExecTO taskExecTO : taskService.listJobs(JobStatusType.SCHEDULED)) {
+ printTaskExecTO(taskExecTO);
+ }
+ } catch (final SyncopeClientException ex) {
+ Messages.printMessage(ex.getMessage());
+ }
+ break;
+ case READ:
+ final String readErrorMessage = "task --read {TASK-ID} {TASK-ID} [...]";
+ if (parameters.length >= 1) {
+ for (final String parameter : parameters) {
+ try {
+ final AbstractTaskTO taskTO = taskService.read(Long.valueOf(parameter));
+ if (taskTO instanceof NotificationTaskTO) {
+ final NotificationTaskTO notificationTaskTO = (NotificationTaskTO) taskTO;
+ System.out.println("");
+ System.out.println(" - Notification task key: " + notificationTaskTO.getKey());
+ System.out.println(" executed: " + notificationTaskTO.isExecuted());
+ System.out.println(" sender: " + notificationTaskTO.getSender());
+ System.out.println(" subjetc: " + notificationTaskTO.getSubject());
+ System.out.println(" text body: " + notificationTaskTO.getTextBody());
+ System.out.println(" html body: " + notificationTaskTO.getHtmlBody());
+ System.out.println(" latest execution status: "
+ + notificationTaskTO.getLatestExecStatus());
+ System.out.println(" start date: " + notificationTaskTO.getStartDate());
+ System.out.println(" end date: " + notificationTaskTO.getEndDate());
+ System.out.println(" recipients: " + notificationTaskTO.getRecipients());
+ System.out.println(" trace level: " + notificationTaskTO.getTraceLevel());
+ for (final TaskExecTO taskExecTO : notificationTaskTO.getExecutions()) {
+ printTaskExecTO(taskExecTO);
+ }
+ System.out.println("");
+ } else if (taskTO instanceof PropagationTaskTO) {
+ final PropagationTaskTO propagationTaskTO = (PropagationTaskTO) taskTO;
+ System.out.println("");
+ System.out.println(" - Propagation task key: " + propagationTaskTO.getKey());
+ System.out.println(" resource: " + propagationTaskTO.getResource());
+ System.out.println(" any key: " + propagationTaskTO.getAnyKey());
+ System.out.println(" any type kind: " + propagationTaskTO.getAnyTypeKind());
+ System.out.println(" connector object key: "
+ + propagationTaskTO.getConnObjectKey());
+ System.out.println(" old connector object key: "
+ + propagationTaskTO.getOldConnObjectKey());
+ System.out.println(" latest execution status: "
+ + propagationTaskTO.getLatestExecStatus());
+ System.out.println(" class name: " + propagationTaskTO.getObjectClassName());
+ System.out.println(" xml attribute: " + propagationTaskTO.getXmlAttributes());
+ System.out.println(" start date: " + propagationTaskTO.getStartDate());
+ System.out.println(" end date: " + propagationTaskTO.getEndDate());
+ System.out.println(" operation: " + propagationTaskTO.getOperation());
+ for (final TaskExecTO taskExecTO : propagationTaskTO.getExecutions()) {
+ printTaskExecTO(taskExecTO);
+ }
+ System.out.println("");
+ } else if (taskTO instanceof PushTaskTO) {
+ final PushTaskTO pushTaskTO = (PushTaskTO) taskTO;
+ System.out.println("");
+ System.out.println(" - Push task key: " + pushTaskTO.getKey());
+ System.out.println(" name: " + pushTaskTO.getName());
+ System.out.println(" resource: " + pushTaskTO.getResource());
+ System.out.println(" cron expression: " + pushTaskTO.getCronExpression());
+ System.out.println(" description: " + pushTaskTO.getDescription());
+ System.out.println(" is perform create: " + pushTaskTO.isPerformCreate());
+ System.out.println(" is perform delete: " + pushTaskTO.isPerformDelete());
+ System.out.println(" is perform update: " + pushTaskTO.isPerformUpdate());
+ System.out.println(" is sync status: " + pushTaskTO.isSyncStatus());
+ System.out.println(" start date: " + pushTaskTO.getStartDate());
+ System.out.println(" end date: " + pushTaskTO.getEndDate());
+ System.out.println(" last execution: " + pushTaskTO.getLastExec());
+ System.out.println(" next execution: " + pushTaskTO.getNextExec());
+ System.out.println(" latest execution status: "
+ + pushTaskTO.getLatestExecStatus());
+ System.out.println(" filters: " + pushTaskTO.getFilters());
+ System.out.println(" delegate class: " + pushTaskTO.getJobDelegateClassName());
+ System.out.println(" action class: " + pushTaskTO.getActionsClassNames());
+ System.out.println(" matching rule: " + pushTaskTO.getMatchingRule());
+ System.out.println(" not matching rule: " + pushTaskTO.getUnmatchingRule());
+ for (final TaskExecTO taskExecTO : pushTaskTO.getExecutions()) {
+ printTaskExecTO(taskExecTO);
+ }
+ System.out.println("");
+ } else if (taskTO instanceof SchedTaskTO) {
+ final SchedTaskTO schedTaskTO = (SchedTaskTO) taskTO;
+ System.out.println("");
+ System.out.println(" - Scheduled task key: " + schedTaskTO.getKey());
+ System.out.println(" name: " + schedTaskTO.getName());
+ System.out.println(" cron expression: " + schedTaskTO.getCronExpression());
+ System.out.println(" description: " + schedTaskTO.getDescription());
+ System.out.println(" start date: " + schedTaskTO.getStartDate());
+ System.out.println(" end date: " + schedTaskTO.getEndDate());
+ System.out.println(" last execution: " + schedTaskTO.getLastExec());
+ System.out.println(" next execution: " + schedTaskTO.getNextExec());
+ System.out.println(" latest execution status: "
+ + schedTaskTO.getLatestExecStatus());
+ System.out.println(" job delegate class: "
+ + schedTaskTO.getJobDelegateClassName());
+ for (final TaskExecTO taskExecTO : schedTaskTO.getExecutions()) {
+ printTaskExecTO(taskExecTO);
+ }
+ System.out.println("");
+ } else if (taskTO instanceof SyncTaskTO) {
+ final SyncTaskTO syncTaskTO = (SyncTaskTO) taskTO;
+ System.out.println("");
+ System.out.println(" - Sync task key: " + syncTaskTO.getKey());
+ System.out.println(" name: " + syncTaskTO.getName());
+ System.out.println(" resource: " + syncTaskTO.getResource());
+ System.out.println(" realm destination: " + syncTaskTO.getDestinationRealm());
+ System.out.println(" cron expression: " + syncTaskTO.getCronExpression());
+ System.out.println(" description: " + syncTaskTO.getDescription());
+ System.out.println(" is full reconciliation: "
+ + syncTaskTO.isFullReconciliation());
+ System.out.println(" is perform create: " + syncTaskTO.isPerformCreate());
+ System.out.println(" is perform delete: " + syncTaskTO.isPerformDelete());
+ System.out.println(" is perform update: " + syncTaskTO.isPerformUpdate());
+ System.out.println(" is sync status: " + syncTaskTO.isSyncStatus());
+ System.out.println(" templates:");
+ for (Map.Entry<String, AnyTO> entrySet : syncTaskTO.getTemplates().entrySet()) {
+ final String key = entrySet.getKey();
+ final AnyTO value = entrySet.getValue();
+ System.out.println(" " + key + "key : " + value.getKey()
+ + " of realm" + value.getRealm()
+ + " on resource " + value.getResources());
+
+ }
+ System.out.println(" start date: " + syncTaskTO.getStartDate());
+ System.out.println(" end date: " + syncTaskTO.getEndDate());
+ System.out.println(" next execution: " + syncTaskTO.getNextExec());
+ System.out.println(" last execution: " + syncTaskTO.getLastExec());
+ System.out.println(" latest execution status: "
+ + syncTaskTO.getLatestExecStatus());
+ System.out.println(" job delegate class: "
+ + syncTaskTO.getJobDelegateClassName());
+ System.out.println(" action class name: " + syncTaskTO.getActionsClassNames());
+ System.out.println(" matching rule: " + syncTaskTO.getMatchingRule());
+ System.out.println(" unmatching rule: " + syncTaskTO.getUnmatchingRule());
+ for (final TaskExecTO taskExecTO : syncTaskTO.getExecutions()) {
+ printTaskExecTO(taskExecTO);
+ }
+ System.out.println("");
+ }
+ } catch (final NumberFormatException ex) {
+ Messages.printIdNotNumberDeletedMessage("task", parameter);
+ } catch (final SyncopeClientException | WebServiceException ex) {
+ if (ex.getMessage().startsWith("NotFound")) {
+ Messages.printNofFoundMessage("Task", parameter);
+ } else {
+ Messages.printMessage("Error: " + ex.getMessage());
+ }
+ break;
+ }
+ }
+ } else {
+ Messages.printCommandOptionMessage(readErrorMessage);
+ }
+ break;
+ case READ_EXECUTION:
+ final String readExecutionErrorMessage = "task --read-execution {TASK-ID} {TASK-ID} [...]";
+ if (parameters.length >= 1) {
+ for (final String parameter : parameters) {
+ try {
+ final TaskExecTO taskExecTO = taskService.readExecution(Long.valueOf(parameter));
+ printTaskExecTO(taskExecTO);
+ } catch (final NumberFormatException ex) {
+ Messages.printIdNotNumberDeletedMessage("task execution", parameter);
+ } catch (final SyncopeClientException | WebServiceException ex) {
+ if (ex.getMessage().startsWith("NotFound")) {
+ Messages.printNofFoundMessage("Task execution", parameter);
+ } else {
+ Messages.printMessage("Error: " + ex.getMessage());
+ }
+ break;
+ }
+ }
+ } else {
+ Messages.printCommandOptionMessage(readExecutionErrorMessage);
+ }
+ break;
+ case DELETE:
+ final String deleteErrorMessage = "task --delete {TASK-ID} {TASK-ID} [...]";
+
+ if (parameters.length >= 1) {
+ for (final String parameter : parameters) {
+ try {
+ taskService.delete(Long.valueOf(parameter));
+ Messages.printDeletedMessage("Task", parameter);
+ } catch (final WebServiceException | SyncopeClientException ex) {
+ if (ex.getMessage().startsWith("NotFound")) {
+ Messages.printNofFoundMessage("Task", parameter);
+ } else if (ex.getMessage().startsWith("DataIntegrityViolation")) {
+ Messages.printMessage("You cannot delete task " + parameter);
+ } else {
+ Messages.printMessage(ex.getMessage());
+ }
+ } catch (final NumberFormatException ex) {
+ Messages.printIdNotNumberDeletedMessage("task", parameter);
+ }
+ }
+ } else {
+ Messages.printCommandOptionMessage(deleteErrorMessage);
+ }
+ break;
+ case DELETE_EXECUTION:
+ final String deleteExecutionErrorMessage = "task --delete-execution "
+ + "{TASK-EXEC-ID} {TASK-EXEC-ID} [...]";
+
+ if (parameters.length >= 1) {
+ for (final String parameter : parameters) {
+ try {
+ taskService.deleteExecution(Long.valueOf(parameter));
+ Messages.printDeletedMessage("Task execution", parameter);
+ } catch (final WebServiceException | SyncopeClientException ex) {
+ if (ex.getMessage().startsWith("NotFound")) {
+ Messages.printNofFoundMessage("Task execution", parameter);
+ } else if (ex.getMessage().startsWith("DataIntegrityViolation")) {
+ Messages.printMessage("You cannot delete task execution" + parameter);
+ } else {
+ Messages.printMessage(ex.getMessage());
+ }
+ } catch (final NumberFormatException ex) {
+ Messages.printIdNotNumberDeletedMessage("task execution", parameter);
+ }
+ }
+ } else {
+ Messages.printCommandOptionMessage(deleteExecutionErrorMessage);
+ }
+ break;
+ case EXECUTE:
+ final String executeErrorMessage = "task --execute {TASK-ID} {DRY-RUN}\n"
+ + " Dry run: true / false";
+
+ if (parameters.length == 2) {
+
+ try {
+ final Long taskIdToExecute = Long.valueOf(parameters[0]);
+ boolean dryRun;
+ if ("false".equalsIgnoreCase(parameters[1])) {
+ dryRun = false;
+ } else if ("true".equalsIgnoreCase(parameters[1])) {
+ dryRun = true;
+ } else {
+ Messages.printNotBooleanDeletedMessage("dry run", parameters[1]);
+ break;
+ }
+ final TaskExecTO taskExecTO = taskService.execute(taskIdToExecute, dryRun);
+ printTaskExecTO(taskExecTO);
+ } catch (final WebServiceException | SyncopeClientException ex) {
+ System.out.println("Error:");
+ if (ex.getMessage().startsWith("NotFound")) {
+ Messages.printNofFoundMessage("Task", parameters[0]);
+ } else if (ex.getMessage().startsWith("DataIntegrityViolation")) {
+ Messages.printMessage("You cannot delete task " + parameters[0]);
+ } else {
+ Messages.printMessage(ex.getMessage());
+ }
+ } catch (final NumberFormatException ex) {
+ Messages.printIdNotNumberDeletedMessage("task", parameters[0]);
+ }
+ } else {
+ Messages.printCommandOptionMessage(executeErrorMessage);
+ }
+ break;
+ case HELP:
+ System.out.println(HELP_MESSAGE);
+ break;
+ default:
+ Messages.printDefaultMessage(input.getOption(), HELP_MESSAGE);
+ }
+
+ }
+
+ private void printTaskExecTO(final TaskExecTO taskExecTO) {
+ System.out.println(" EXECUTIONS: ");
+ System.out.println(" - task execution key: " + taskExecTO.getKey());
+ System.out.println(" task: " + taskExecTO.getTask());
+ System.out.println(" message: ");
+ System.out.println(" ############### <BEGIN MESSAGE> ###############");
+ System.out.println(" message: " + taskExecTO.getMessage());
+ System.out.println(" ############### <END MESSAGE> ###############");
+ System.out.println(" status: " + taskExecTO.getStatus());
+ System.out.println(" start date: " + taskExecTO.getStartDate());
+ System.out.println(" end date: " + taskExecTO.getEndDate());
+ System.out.println("");
+ }
+
+ @Override
+ public String getHelpMessage() {
+ return HELP_MESSAGE;
+ }
+
+ private enum Options {
+
+ HELP("--help"),
+ LIST_TASK("--list-task"),
+ LIST_RUNNING_JOBS("--list-running-jobs"),
+ LIST_SCHEDULED_JOBS("--list-scheduled-jobs"),
+ READ("--read"),
+ READ_EXECUTION("--read-execution"),
+ DELETE("--delete"),
+ DELETE_EXECUTION("--delete-execution"),
+ EXECUTE("--execute");
+
+ 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/2a99db9c/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
index d1a9fdc..e2cb159 100644
--- 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
@@ -26,6 +26,16 @@ public final class Messages {
private static final String DOESNT_EXIST_MESSAGE_TEMPLATE = "%s %s doesn't exist";
+ private static final String TYPE_NOT_VALID_MESSAGE_TEMPLATE = "%s isn't a valid %s type, try with: %s";
+
+ private static final String ID_NOT_NUMBER_MESSAGE_TEMPLATE = "Error reading %s. It isn't a valid %s "
+ + "id because it isn't a long value";
+
+ private static final String NOT_BOOLEAN_MESSAGE_TEMPLATE = "Error reading %s. It isn't a valid %s "
+ + "value because it isn't a boolean value";
+
+ private static final String DEFAULT_MESSAGE_TEMPLATE = "%s is not a valid option. \n\b %s";
+
public static void printCommandOptionMessage(final String message) {
System.out.println(String.format(OPTION_COMMAND_MESSAGE_TEMPLATE, message));
}
@@ -46,6 +56,26 @@ public final class Messages {
printMessage(String.format(DELETED_MESSAGE_TEMPLATE, what, key));
}
+ public static void printIdNotNumberDeletedMessage(final String what, final String key) {
+ printMessage(String.format(ID_NOT_NUMBER_MESSAGE_TEMPLATE, key, what));
+ }
+
+ public static void printNotBooleanDeletedMessage(final String what, final String key) {
+ printMessage(String.format(NOT_BOOLEAN_MESSAGE_TEMPLATE, key, what));
+ }
+
+ public static void printTypeNotValidMessage(final String what, final String key, final String[] types) {
+ final StringBuilder typesBuilder = new StringBuilder();
+ for (final String type : types) {
+ typesBuilder.append("\n *** ").append(type);
+ }
+ printMessage(String.format(TYPE_NOT_VALID_MESSAGE_TEMPLATE, key, what, typesBuilder.toString()));
+ }
+
+ public static void printDefaultMessage(final String option, final String helpMessage) {
+ printMessage(String.format(DEFAULT_MESSAGE_TEMPLATE, option, helpMessage));
+ }
+
private Messages() {
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a99db9c/common/lib/src/main/java/org/apache/syncope/common/lib/types/TaskType.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/types/TaskType.java b/common/lib/src/main/java/org/apache/syncope/common/lib/types/TaskType.java
index a20d0a7..a60a5af 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/types/TaskType.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/types/TaskType.java
@@ -29,7 +29,7 @@ public enum TaskType {
SYNCHRONIZATION("sync"),
PUSH("push");
- private String name;
+ private final String name;
private TaskType(final String name) {
this.name = name;