com.spectralogic.ds3cli.views.csv.CsvOutput.java Source code

Java tutorial

Introduction

Here is the source code for com.spectralogic.ds3cli.views.csv.CsvOutput.java

Source

/*
 * *****************************************************************************
 *   Copyright 2014-2016 Spectra Logic Corporation. All Rights Reserved.
 *   Licensed under the Apache License, Version 2.0 (the "License"). You may not use
 *   this file except in compliance with the License. A copy of the License is located at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 *   or in the "license" file accompanying this file.
 *   This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 *   CONDITIONS OF ANY KIND, either express or implied. See the License for the
 *   specific language governing permissions and limitations under the License.
 * ***************************************************************************
 */

package com.spectralogic.ds3cli.views.csv;

import com.google.common.collect.ImmutableList;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;

import java.io.IOException;
import java.io.StringWriter;

public class CsvOutput<E> {

    private final ImmutableList<String> headers;
    private final Iterable<E> csvContents;
    private final ContentFormatter<E> contentFormatter;

    public CsvOutput(final ImmutableList<String> headers, final Iterable<E> csvContents,
            final ContentFormatter<E> contentFormatter) {
        this.headers = headers;
        this.csvContents = csvContents;
        this.contentFormatter = contentFormatter;
    }

    public String toString() {
        try (final StringWriter writer = new StringWriter();
                final CSVPrinter csvPrinter = new CSVPrinter(writer, CSVFormat.EXCEL)) {

            csvPrinter.printRecord(headers);
            for (final E content : csvContents) {
                csvPrinter.printRecord(contentFormatter.format(content));
            }
            return writer.toString();
        } catch (final IOException e) {
            throw new RuntimeException("Failed to write csv", e);
        }
    }

    public interface ContentFormatter<E> {
        Iterable<String> format(final E content);
    }
}