From f2314152ff2aab895431959df995cf94f227fd0f Mon Sep 17 00:00:00 2001
From: Violette Roche-Montane <violette.roche-montane@forgerock.com>
Date: Fri, 14 Feb 2014 08:23:06 +0000
Subject: [PATCH] minor commit for OPENDJ-1343 Migrate dsconfig / OPENDJ-1303 "opendj-cli" - added TabSeparatedTablePrinter.java - added return codes used by tools in opendj3. - added new messages needed by DSConfig.

---
 opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/TabSeparatedTablePrinter.java |  182 +++++++++++++++++++++++++++++++++++++++++++++
 opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/ReturnCode.java               |   45 +++++++++++
 opendj-sdk/opendj-cli/src/main/resources/com/forgerock/opendj/cli/cli.properties           |    5 +
 3 files changed, 230 insertions(+), 2 deletions(-)

diff --git a/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/ReturnCode.java b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/ReturnCode.java
index 2369fc8..81a4605 100644
--- a/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/ReturnCode.java
+++ b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/ReturnCode.java
@@ -92,13 +92,56 @@
      */
     JAVA_VERSION_INCOMPATIBLE(8),
     /**
+     * The LDAP result code for operations that fail because a defined constraint
+     * has been violated.
+     */
+    CONSTRAINT_VIOLATION(19),
+    /**
+     * The LDAP result code for operations that fail because a targeted entry does
+     * not exist.
+     */
+    NO_SUCH_OBJECT(32),
+    /**
+     * The LDAP result code for operations that fail because the client does not
+     * have permission to perform the requested operation.
+     */
+    INSUFFICIENT_ACCESS_RIGHTS(50),
+    /**
+     * The LDAP result code for operations that fail because the requested
+     * operation would have resulted in an entry that conflicts with one that
+     * already exists.
+     */
+    ENTRY_ALREADY_EXISTS(68),
+    /**
+     * The LDAP result code for use in cases in which none of the other defined
+     * result codes are appropriate.
+     */
+    OTHER(80),
+    /**
+     * The client-side result code that indicates that a previously-established
+     * connection to the server was lost.  This is for client-side use only and
+     * should never be transferred over protocol.
+     */
+    CLIENT_SIDE_SERVER_DOWN(81),
+    /**
+     * The client-side result code that indicates that the client was not able to
+     * establish a connection to the server.  This is for client-side use only and
+     * should never be transferred over protocol.
+     */
+    CLIENT_SIDE_CONNECT_ERROR(91),
+    /**
      * The client-side result code that indicates that there was a problem with one or more of the parameters provided
      * by the user.
      * <PRE>
      * Code value of 89.
      * </PRE>
      */
-    CLIENT_SIDE_PARAM_ERROR(89);
+    CLIENT_SIDE_PARAM_ERROR(89),
+
+    /**
+     * TODO to review.
+     */
+    TODO(99);
 
     private int returnCode;
 
diff --git a/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/TabSeparatedTablePrinter.java b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/TabSeparatedTablePrinter.java
new file mode 100644
index 0000000..3e6dfe1
--- /dev/null
+++ b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/TabSeparatedTablePrinter.java
@@ -0,0 +1,182 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License").  You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
+ * or http://forgerock.org/license/CDDLv1.0.html.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at legal-notices/CDDLv1_0.txt.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information:
+ *      Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ *      Copyright 2008 Sun Microsystems, Inc.
+ *      Portions Copyright 2014 ForgeRock AS
+ */
+package com.forgerock.opendj.cli;
+
+import java.io.BufferedWriter;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.Writer;
+
+/**
+ * An interface for creating a tab-separated formatted table.
+ * <p>
+ * This table printer will replace any tab, line-feeds, or carriage return control characters encountered in a cell with
+ * a single space.
+ */
+public final class TabSeparatedTablePrinter extends TablePrinter {
+
+    /**
+     * Table serializer implementation.
+     */
+    private final class Serializer extends TableSerializer {
+
+        /** The current column being output. */
+        private int column = 0;
+
+        /**
+         * Counts the number of separators that should be output the next time a non-empty cell is displayed. The tab
+         * separators are not displayed immediately so that we can avoid displaying unnecessary trailing separators.
+         */
+        private int requiredSeparators = 0;
+
+        /** Private constructor. */
+        private Serializer() {
+            // No implementation required.
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public void addCell(String s) {
+            // Avoid printing tab separators for trailing empty cells.
+            if (s.length() == 0) {
+                requiredSeparators++;
+            } else {
+                for (int i = 0; i < requiredSeparators; i++) {
+                    writer.print('\t');
+                }
+                requiredSeparators = 1;
+            }
+
+            // Replace all new-lines and tabs with a single space.
+            writer.print(s.replaceAll("[\\t\\n\\r]", " "));
+            column++;
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public void addHeading(String s) {
+            if (displayHeadings) {
+                addCell(s);
+            }
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public void endHeader() {
+            if (displayHeadings) {
+                writer.println();
+            }
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public void endRow() {
+            writer.println();
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public void endTable() {
+            writer.flush();
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public void startHeader() {
+            column = 0;
+            requiredSeparators = 0;
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public void startRow() {
+            column = 0;
+            requiredSeparators = 0;
+        }
+    }
+
+    /** Indicates whether or not the headings should be output. */
+    private boolean displayHeadings = false;
+
+    /** The output destination. */
+    private PrintWriter writer = null;
+
+    /**
+     * Creates a new tab separated table printer for the specified output stream. Headings will not be displayed by
+     * default.
+     *
+     * @param stream
+     *            The stream to output tables to.
+     */
+    public TabSeparatedTablePrinter(OutputStream stream) {
+        this(new BufferedWriter(new OutputStreamWriter(stream)));
+    }
+
+    /**
+     * Creates a new tab separated table printer for the specified writer. Headings will not be displayed by default.
+     *
+     * @param writer
+     *            The writer to output tables to.
+     */
+    public TabSeparatedTablePrinter(Writer writer) {
+        this.writer = new PrintWriter(writer);
+    }
+
+    /**
+     * Specify whether or not table headings should be displayed.
+     *
+     * @param displayHeadings
+     *            <code>true</code> if table headings should be displayed.
+     */
+    public void setDisplayHeadings(boolean displayHeadings) {
+        this.displayHeadings = displayHeadings;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected TableSerializer getSerializer() {
+        return new Serializer();
+    }
+
+}
diff --git a/opendj-sdk/opendj-cli/src/main/resources/com/forgerock/opendj/cli/cli.properties b/opendj-sdk/opendj-cli/src/main/resources/com/forgerock/opendj/cli/cli.properties
index c521b3b..03373d4 100755
--- a/opendj-sdk/opendj-cli/src/main/resources/com/forgerock/opendj/cli/cli.properties
+++ b/opendj-sdk/opendj-cli/src/main/resources/com/forgerock/opendj/cli/cli.properties
@@ -421,6 +421,10 @@
 INFO_TIME_LIMIT_PLACEHOLDER={timeLimit}
 INFO_TARGETDN_PLACEHOLDER={targetDN}
 INFO_KEYSTORE_PWD_FILE_PLACEHOLDER={keyStorePasswordFile}
+INFO_PATH_PLACEHOLDER={path}
+INFO_NAME_PLACEHOLDER={name}
+INFO_PROPERTY_PLACEHOLDER={property}
+INFO_UNIT_PLACEHOLDER={unit}
 INFO_PSEARCH_PLACEHOLDER=ps[:changetype[:changesonly[:entrychgcontrols]]]
 ERR_CANNOT_READ_TRUSTSTORE=Cannot access trust store '%s'.  Verify \
  that the provided trust store exists and that you have read access rights to it
@@ -488,7 +492,6 @@
  data based on a definition in a template file
 INFO_CONSTANT_PLACEHOLDER={name=value}
 INFO_SEED_PLACEHOLDER={seed}
-INFO_PATH_PLACEHOLDER={path}
 INFO_BATCH_FILE_PATH_PLACEHOLDER={batchFilePath}
 INFO_MAKELDIF_DESCRIPTION_CONSTANT=A constant that overrides the value \
  set in the template file

--
Gitblit v1.10.0