/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.toolkit.utils.text.impl; import java.util.Collections; import java.util.List; import de.rcenvironment.toolkit.utils.text.MultiLineOutput; /** * Simple default {@link MultiLineOutput} implementation wrapping a given {@link List} of {@link String}s. The given list object is * referenced internally (not cloned/detached), so changes to the list will affect the generated output. * * @author Robert Mischke */ public class MultiLineOutputWrapper implements MultiLineOutput { private List<String> lines; public MultiLineOutputWrapper(List<String> lines) { this.lines = lines; } @Override public List<String> getLines() { return Collections.unmodifiableList(lines); } @Override public String asMultilineString() { return asMultilineString("", "\n"); } @Override public String asMultilineString(String indent, String lineSeparator) { return asMultilineString(null, indent, lineSeparator, null); } @Override public String asMultilineString(String intro, String indent, String lineSeparator, String outro) { StringBuilder buffer = new StringBuilder(); if (intro != null) { buffer.append(intro); buffer.append(lineSeparator); } for (String line : lines) { buffer.append(indent); buffer.append(line); buffer.append(lineSeparator); } if (outro != null) { buffer.append(outro); buffer.append(lineSeparator); } // remove last line separator if (buffer.length() >= lineSeparator.length()) { buffer.setLength(buffer.length() - lineSeparator.length()); } return buffer.toString(); } @Override public boolean hasContent() { return !lines.isEmpty(); } }