From 8228fb82f3ad657adf7832eb05c624bf48c4a30e Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Wed, 19 Sep 2007 00:31:06 +0000
Subject: [PATCH] More changes relating to issue 1449: aggregation support.
---
opends/src/server/org/opends/server/tools/dsconfig/ArgumentExceptionFactory.java | 178 +++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 149 insertions(+), 29 deletions(-)
diff --git a/opends/src/server/org/opends/server/tools/dsconfig/ArgumentExceptionFactory.java b/opends/src/server/org/opends/server/tools/dsconfig/ArgumentExceptionFactory.java
index 85cc99c..5ed4b82 100644
--- a/opends/src/server/org/opends/server/tools/dsconfig/ArgumentExceptionFactory.java
+++ b/opends/src/server/org/opends/server/tools/dsconfig/ArgumentExceptionFactory.java
@@ -44,10 +44,15 @@
import org.opends.server.admin.PropertyIsSingleValuedException;
import org.opends.server.admin.RelationDefinition;
import org.opends.server.admin.client.IllegalManagedObjectNameException;
+import org.opends.server.admin.client.ManagedObjectDecodingException;
import org.opends.server.admin.client.MissingMandatoryPropertiesException;
+import org.opends.server.admin.client.OperationRejectedException;
import org.opends.server.util.args.Argument;
import org.opends.server.util.args.ArgumentException;
import org.opends.server.util.cli.CLIException;
+import org.opends.server.util.cli.ConsoleApplication;
+import org.opends.server.util.table.TableBuilder;
+import org.opends.server.util.table.TextTablePrinter;
@@ -103,35 +108,6 @@
/**
- * Creates an argument exception from a missing mandatory properties
- * exception.
- *
- * @param e
- * The missing mandatory properties exception.
- * @param d
- * The managed object definition.
- * @return Returns an argument exception.
- */
- public static ArgumentException adaptMissingMandatoryPropertiesException(
- MissingMandatoryPropertiesException e,
- AbstractManagedObjectDefinition<?, ?> d) {
- StringBuilder builder = new StringBuilder();
- boolean isFirst = true;
- for (PropertyIsMandatoryException pe : e.getCauses()) {
- if (!isFirst) {
- builder.append(", ");
- }
- builder.append(pe.getPropertyDefinition().getName());
- isFirst = false;
- }
- Message msg = ERR_DSCFG_ERROR_CREATE_MMPE.get(
- d.getUserFriendlyName(), builder.toString());
- return new ArgumentException(msg);
- }
-
-
-
- /**
* Creates an argument exception from a property exception.
*
* @param e
@@ -172,6 +148,150 @@
/**
+ * Displays a table listing reasons why a managed object could not
+ * be decoded successfully.
+ *
+ * @param app
+ * The console application.
+ * @param e
+ * The managed object decoding exception.
+ */
+ public static void displayManagedObjectDecodingException(
+ ConsoleApplication app, ManagedObjectDecodingException e) {
+ AbstractManagedObjectDefinition<?, ?> d = e.getPartialManagedObject()
+ .getManagedObjectDefinition();
+ Message ufn = d.getUserFriendlyName();
+ Message msg;
+ if (e.getCauses().size() == 1) {
+ msg = ERR_GET_HEADING_MODE_SINGLE.get(ufn);
+ } else {
+ msg = ERR_GET_HEADING_MODE_PLURAL.get(ufn);
+ }
+
+ app.println(msg);
+ app.println();
+ TableBuilder builder = new TableBuilder();
+ for (PropertyException pe : e.getCauses()) {
+ ArgumentException ae = adaptPropertyException(pe, d);
+ builder.startRow();
+ builder.appendCell("*");
+ builder.appendCell(ae.getMessage());
+ }
+
+ TextTablePrinter printer = new TextTablePrinter(app.getErrorStream());
+ printer.setDisplayHeadings(false);
+ printer.setColumnWidth(1, 0);
+ printer.setIndentWidth(4);
+ builder.print(printer);
+ }
+
+
+
+ /**
+ * Displays a table listing missing mandatory properties.
+ *
+ * @param app
+ * The console application.
+ * @param e
+ * The missing mandatory property exception.
+ */
+ public static void displayMissingMandatoryPropertyException(
+ ConsoleApplication app, MissingMandatoryPropertiesException e) {
+ Message ufn = e.getUserFriendlyName();
+ Message msg;
+ if (e.isCreate()) {
+ if (e.getCauses().size() == 1) {
+ msg = ERR_CREATE_HEADING_MMPE_SINGLE.get(ufn);
+ } else {
+ msg = ERR_CREATE_HEADING_MMPE_PLURAL.get(ufn);
+ }
+ } else {
+ if (e.getCauses().size() == 1) {
+ msg = ERR_MODIFY_HEADING_MMPE_SINGLE.get(ufn);
+ } else {
+ msg = ERR_MODIFY_HEADING_MMPE_PLURAL.get(ufn);
+ }
+ }
+
+ app.println(msg);
+ app.println();
+ TableBuilder builder = new TableBuilder();
+ builder.addSortKey(0);
+ builder.appendHeading(INFO_DSCFG_HEADING_PROPERTY_NAME.get());
+ builder.appendHeading(INFO_DSCFG_HEADING_PROPERTY_SYNTAX.get());
+
+ PropertyDefinitionUsageBuilder b = new PropertyDefinitionUsageBuilder(true);
+ for (PropertyIsMandatoryException pe : e.getCauses()) {
+ PropertyDefinition<?> pd = pe.getPropertyDefinition();
+ builder.startRow();
+ builder.appendCell(pd.getName());
+ builder.appendCell(b.getUsage(pd));
+ }
+
+ TextTablePrinter printer = new TextTablePrinter(app.getErrorStream());
+ printer.setDisplayHeadings(true);
+ printer.setColumnWidth(1, 0);
+ printer.setIndentWidth(4);
+ builder.print(printer);
+ }
+
+
+
+ /**
+ * Displays a table listing the reasons why an operation was
+ * rejected.
+ *
+ * @param app
+ * The console application.
+ * @param e
+ * The operation rejected exception.
+ */
+ public static void displayOperationRejectedException(ConsoleApplication app,
+ OperationRejectedException e) {
+ Message ufn = e.getUserFriendlyName();
+ Message msg;
+ switch (e.getOperationType()) {
+ case CREATE:
+ if (e.getMessages().size() == 1) {
+ msg = ERR_DSCFG_ERROR_CREATE_ORE_SINGLE.get(ufn);
+ } else {
+ msg = ERR_DSCFG_ERROR_CREATE_ORE_PLURAL.get(ufn);
+ }
+ break;
+ case DELETE:
+ if (e.getMessages().size() == 1) {
+ msg = ERR_DSCFG_ERROR_DELETE_ORE_SINGLE.get(ufn);
+ } else {
+ msg = ERR_DSCFG_ERROR_DELETE_ORE_PLURAL.get(ufn);
+ }
+ break;
+ default:
+ if (e.getMessages().size() == 1) {
+ msg = ERR_DSCFG_ERROR_MODIFY_ORE_SINGLE.get(ufn);
+ } else {
+ msg = ERR_DSCFG_ERROR_MODIFY_ORE_PLURAL.get(ufn);
+ }
+ break;
+ }
+
+ app.println(msg);
+ app.println();
+ TableBuilder builder = new TableBuilder();
+ for (Message reason : e.getMessages()) {
+ builder.startRow();
+ builder.appendCell("*");
+ builder.appendCell(reason);
+ }
+ TextTablePrinter printer = new TextTablePrinter(app.getErrorStream());
+ printer.setDisplayHeadings(false);
+ printer.setColumnWidth(1, 0);
+ printer.setIndentWidth(4);
+ builder.print(printer);
+ }
+
+
+
+ /**
* Creates an argument exception which should be used when a
* property modification argument is incompatible with a previous
* modification argument.
--
Gitblit v1.10.0