/* This file is part of VoltDB. * Copyright (C) 2008-2017 VoltDB Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with VoltDB. If not, see <http://www.gnu.org/licenses/>. */ package org.voltdb.utils; import java.io.IOException; import java.io.PrintStream; import org.voltdb.VoltTable; import org.voltdb.VoltType; /** * Tab-delimited output formatter for SQLCommand. */ class SQLCommandOutputFormatterTabDelimited implements SQLCommandOutputFormatter { @Override public void printTable(PrintStream stream, VoltTable t, boolean addMetadata) throws IOException { int columnCount = t.getColumnCount(); if (addMetadata) { for (int i = 0; i < t.getColumnCount(); i++) { if (i > 0) stream.print("\t"); stream.print(t.getColumnName(i)); } stream.print("\n"); t.resetRowPosition(); } while(t.advanceRow()) { for (int i = 0; i < columnCount; i++) { if (i > 0) stream.print("\t"); Object v = t.get(i, t.getColumnType(i)); if (t.wasNull()) v = "NULL"; else if (t.getColumnType(i) == VoltType.VARBINARY) { v = Encoder.hexEncode((byte[])v); } else { v = v.toString(); } stream.print(v); } stream.print("\n"); } } }