X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fnetconf-cli%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fcli%2Freader%2Fimpl%2FGenericListReader.java;fp=opendaylight%2Fnetconf%2Fnetconf-cli%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fcli%2Freader%2Fimpl%2FGenericListReader.java;h=6cf8eb2344c11babe00ad25d58bd547917188ff4;hp=0000000000000000000000000000000000000000;hb=b3d2a00776a1a5e3a139d73ced859aa557c931af;hpb=d04e0863b86415749a8437241c57df0d32a3b133 diff --git a/opendaylight/netconf/netconf-cli/src/main/java/org/opendaylight/controller/netconf/cli/reader/impl/GenericListReader.java b/opendaylight/netconf/netconf-cli/src/main/java/org/opendaylight/controller/netconf/cli/reader/impl/GenericListReader.java new file mode 100644 index 0000000000..6cf8eb2344 --- /dev/null +++ b/opendaylight/netconf/netconf-cli/src/main/java/org/opendaylight/controller/netconf/cli/reader/impl/GenericListReader.java @@ -0,0 +1,69 @@ +/* + * 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.reader.impl; + +import static org.opendaylight.controller.netconf.cli.io.IOUtil.listType; + +import com.google.common.base.Optional; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import org.opendaylight.controller.netconf.cli.io.BaseConsoleContext; +import org.opendaylight.controller.netconf.cli.io.ConsoleContext; +import org.opendaylight.controller.netconf.cli.io.ConsoleIO; +import org.opendaylight.controller.netconf.cli.reader.AbstractReader; +import org.opendaylight.controller.netconf.cli.reader.GenericListEntryReader; +import org.opendaylight.controller.netconf.cli.reader.ReadingException; +import org.opendaylight.yangtools.yang.data.api.Node; +import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; +import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class GenericListReader extends AbstractReader { + private static final Logger LOG = LoggerFactory.getLogger(GenericListReader.class); + + private final GenericListEntryReader concreteListEntryReader; + + public GenericListReader(final ConsoleIO console, final GenericListEntryReader concreteListEntryReader, + final SchemaContext schemaContext) { + super(console, schemaContext); + this.concreteListEntryReader = concreteListEntryReader; + } + + public GenericListReader(final ConsoleIO console, final GenericListEntryReader concreteListEntryReader, + final SchemaContext schemaContext, final boolean readConfigNode) { + super(console, schemaContext, readConfigNode); + this.concreteListEntryReader = concreteListEntryReader; + } + + @Override + public List> readWithContext(final T schemaNode) throws IOException, ReadingException { + final List> newNodes = new ArrayList<>(); + Optional readNextListEntry = Optional.of(Boolean.TRUE); + console.formatLn("Reading collection type argument: %s", schemaNode.getQName().getLocalName()); + while (readNextListEntry.isPresent() && readNextListEntry.get()) { + try { + newNodes.addAll(concreteListEntryReader.read(schemaNode)); + } catch (final ReadingException e) { + console.writeLn(e.getMessage()); + } + readNextListEntry = new DecisionReader().read(console, "Add other entry to " + listType(schemaNode) + " " + + schemaNode.getQName().getLocalName() + " " + " [Y|N]?"); + } + console.formatLn("Collection type argument: %s read finished", schemaNode.getQName().getLocalName()); + + return newNodes; + } + + @Override + protected ConsoleContext getContext(final T schemaNode) { + return new BaseConsoleContext<>(schemaNode); + } + +}