--- /dev/null
+/*
+ * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.controller.netconf.cli.writer;
+
+public class OutFormatter {
+
+ public static final String INDENT_STEP = " ";
+ public static final String COMPOSITE_OPEN_NODE = " {";
+ public static final String COMPOSITE_CLOSE_NODE = "}";
+ public static final String NEW_LINE = "\n";
+
+ int indentLevel = -1;
+ private String currentIndent = "";
+
+ public OutFormatter indent(final StringBuilder buffer) {
+ buffer.append(currentIndent);
+ return this;
+ }
+
+ public OutFormatter openComposite(final StringBuilder buffer) {
+ buffer.append(COMPOSITE_OPEN_NODE);
+ return this;
+ }
+
+ public OutFormatter closeCompositeWithIndent(final StringBuilder buffer) {
+ buffer.append(currentIndent);
+ buffer.append(COMPOSITE_CLOSE_NODE);
+ return this;
+ }
+
+ public OutFormatter newLine(final StringBuilder buffer) {
+ buffer.append(NEW_LINE);
+ return this;
+ }
+
+ private void prepareIndent() {
+ final StringBuilder output = new StringBuilder();
+ for (int i = 0; i < indentLevel; i++) {
+ output.append(INDENT_STEP);
+ }
+ currentIndent = output.toString();
+ }
+
+ public OutFormatter increaseIndent() {
+ indentLevel++;
+ prepareIndent();
+ return this;
+ }
+
+ public OutFormatter decreaseIndent() {
+ indentLevel--;
+ prepareIndent();
+ return this;
+ }
+
+ public OutFormatter addStringWithIndent(final StringBuilder buffer, final String value) {
+ indent(buffer);
+ buffer.append(value);
+ return this;
+ }
+}
\ No newline at end of file