/* * 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.impl; import java.io.IOException; import java.util.List; import org.opendaylight.controller.netconf.cli.io.ConsoleIO; import org.opendaylight.controller.netconf.cli.writer.OutFormatter; import org.opendaylight.controller.netconf.cli.writer.WriteException; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.api.Node; import org.opendaylight.yangtools.yang.data.api.SimpleNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; public class CompositeNodeWriter extends AbstractWriter { private final OutFormatter outFormatter; public CompositeNodeWriter(final ConsoleIO console, final OutFormatter outFormatter) { super(console); this.outFormatter = outFormatter; } @Override protected void writeInner(final DataSchemaNode dataSchemaNode, final List> dataNodes) throws IOException, WriteException { final StringBuilder output = new StringBuilder(); writeNode(dataNodes, output); console.writeLn(output); } private void writeNode(final List> dataNodes, final StringBuilder output) throws IOException, WriteException { for (final Node dataNode : dataNodes) { outFormatter.increaseIndent(); outFormatter.addStringWithIndent(output, dataNode.getNodeType().getLocalName()); if (dataNode instanceof CompositeNode) { outFormatter.openComposite(output); outFormatter.newLine(output); writeNode(((CompositeNode) dataNode).getValue(), output); outFormatter.closeCompositeWithIndent(output); outFormatter.newLine(output); } else if (dataNode instanceof SimpleNode) { final SimpleNode simpleNode = (SimpleNode) dataNode; output.append(" "); output.append(simpleNode.getValue()); outFormatter.newLine(output); } outFormatter.decreaseIndent(); } } }