com.sangupta.jerry.print.ConsoleTableWriter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jerry-core Show documentation
Show all versions of jerry-core Show documentation
Common Java functionality for core functionality
/**
*
* jerry - Common Java Functionality
* Copyright (c) 2012-2015, Sandeep Gupta
*
* http://sangupta.com/projects/jerry
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License 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.sangupta.jerry.print;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.output.WriterOutputStream;
import com.sangupta.jerry.util.StringUtils;
/**
* A simple writer that converts {@link ConsoleTable} into various
* other data formats.
*
* @author sangupta
*
*/
public class ConsoleTableWriter {
/**
* Output the data of the table as a JSON
*
* @param table
* the {@link ConsoleTable} to output
*
* @param writer
* the {@link PrintWriter} to write to
*/
public void writeJson(ConsoleTable table, PrintWriter writer) {
OutputStream os = new WriterOutputStream(writer);
PrintStream ps = new PrintStream(os);
try {
writeJson(table, ps);
} finally {
ps.close();
}
}
/**
* Output the data of the table as a JSON
*
* @param table
* the {@link ConsoleTable} to output
*
* @param out
* the {@link PrintStream} to write to
*/
public static void writeJson(ConsoleTable table, PrintStream out) {
if(table == null) {
throw new IllegalArgumentException("ConsoleTable cannot be null");
}
if(out == null) {
throw new IllegalArgumentException("PrintStream to write to cannot be null");
}
if(table.headerRow == null) {
throw new IllegalStateException("Header row must be present for conversion to JSON");
}
List names = new ArrayList();
for(int index = 0; index < table.headerRow.numColumns(); index++) {
String name = table.headerRow.column(index);
name = StringUtils.convertToJsonPropertyName(name);
names.add(name);
}
// now start iterating over each row
out.print("[\n");
for(int rowIndex = 0; rowIndex < table.rows.size(); rowIndex++) {
ConsoleTableRow row = table.rows.get(rowIndex);
if(rowIndex > 0) {
out.print(", ");
}
out.print("{\n");
for(int index = 0; index < table.headerRow.numColumns(); index++) {
if(index > 0) {
out.print(", ");
}
out.print("\"");
out.print(names.get(index));
out.print("\" : \"");
out.print(row.column(index));
out.print("\"\n");
}
out.print("}\n");
}
out.print("]");
}
/**
* Output the data as an XML.
*
* @param table
* the {@link ConsoleTable} to output
*
* @param writer
* the {@link PrintStream} to write to
*
* @param parentXmlTag
* the uber XML tag to wrap items into
*
* @param rowTag
* the tag to use for wrapping each row of data
*/
public void writeXml(ConsoleTable table, PrintWriter writer, String parentXmlTag, String rowTag) {
OutputStream os = new WriterOutputStream(writer);
PrintStream ps = new PrintStream(os);
try {
writeJson(table, ps);
} finally {
ps.close();
}
}
/**
* Output the data as an XML.
*
* @param table
* the {@link ConsoleTable} to output
*
* @param out
* the {@link PrintWriter} to write to
*
* @param parentXmlTag
* the uber XML tag to wrap items into
*
* @param rowTag
* the tag to use for wrapping each row of data
*/
public static void writeXml(ConsoleTable table, PrintStream out, String parentXmlTag, String rowTag) {
if(table == null) {
throw new IllegalArgumentException("ConsoleTable cannot be null");
}
if(out == null) {
throw new IllegalArgumentException("PrintStream to write to cannot be null");
}
if(table.headerRow == null) {
throw new IllegalStateException("Header row must be present for conversion to XML");
}
List names = new ArrayList();
for(int index = 0; index < table.headerRow.numColumns(); index++) {
String name = table.headerRow.column(index);
name = StringUtils.convertToJsonPropertyName(name);
names.add(name);
}
// now start itearting over each row
out.print("<" + parentXmlTag + ">\n");
for(int rowIndex = 0; rowIndex < table.rows.size(); rowIndex++) {
ConsoleTableRow row = table.rows.get(rowIndex);
out.print("<" + rowTag + ">\n");
for(int index = 0; index < table.headerRow.numColumns(); index++) {
out.print("<");
out.print(names.get(index));
out.print(">");
out.print(row.column(index));
out.print("");
out.print(names.get(index));
out.print(">\n");
}
out.print("" + rowTag + ">\n");
}
out.print("" + parentXmlTag + ">\n");
}
/**
* Output the data of the table as a CSV
*
* @param table
* the {@link ConsoleTable} to output
*
* @param writer
* the {@link PrintWriter} to write to
*/
public void writeCsv(ConsoleTable table, PrintWriter writer) {
OutputStream os = new WriterOutputStream(writer);
PrintStream ps = new PrintStream(os);
try {
writeCsv(table, ps);
} finally {
ps.close();
}
}
/**
* Output the data of the table as a CSV
*
* @param table
* the {@link ConsoleTable} to output
*
* @param out
* the {@link PrintStream} to write to
*/
public static void writeCsv(ConsoleTable table, PrintStream out) {
if(table == null) {
throw new IllegalArgumentException("ConsoleTable cannot be null");
}
if(out == null) {
throw new IllegalArgumentException("PrintStream to write to cannot be null");
}
final int columns = table.headerRow.numColumns();
if(table.headerRow != null) {
for(int index = 0; index < columns; index++) {
if(index > 0) {
out.print(",");
}
out.print(table.headerRow.column(index));
}
out.print("\n");
}
// each row
for(ConsoleTableRow row : table.rows) {
for(int index = 0; index < columns; index++) {
if(index > 0) {
out.print(",");
}
out.print(row.column(index));
}
out.print("\n");
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy