java/sql-dk/src/main/java/info/globalcode/sql/dk/formatting/Formatter.java
author František Kučera <franta-hg@frantovo.cz>
Thu, 24 Oct 2019 21:43:08 +0200
branchv_0
changeset 250 aae5009bd0af
parent 238 4a1864c3e867
permissions -rw-r--r--
fix license version: GNU GPLv3

/**
 * SQL-DK
 * Copyright © 2013 František Kučera (frantovo.cz)
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, version 3 of the License.
 *
 * 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */
package info.globalcode.sql.dk.formatting;

import info.globalcode.sql.dk.Parameter;
import info.globalcode.sql.dk.configuration.DatabaseDefinition;
import java.util.List;

/**
 * The formatter is responsible for printing the result sets and/or updates result (count of
 * inserted/updated rows). The formatter can produce output in arbitrary format – text, some markup
 * or even binary data.
 *
 * @author Ing. František Kučera (frantovo.cz)
 */
public interface Formatter extends AutoCloseable {

	void writeStartBatch();

	void writeStartDatabase(DatabaseDefinition databaseDefinition);

	void writeEndDatabase();

	void writeStartStatement();

	void writeEndStatement();

	void writeQuery(String sql);

	void writeParameters(List<? extends Parameter> parameters);

	void writeStartResultSet(ColumnsHeader header);

	void writeEndResultSet();

	void writeStartRow();

	void writeColumnValue(Object value);

	void writeEndRow();

	void writeUpdatesResult(int updatedRowsCount);

	void writeEndBatch();

	/**
	 * If an error occurs (e.g. lost connection during result set reading) this method will be
	 * called even if there was no {@linkplain #writeEndBach()}.
	 */
	@Override
	void close() throws FormatterException;
}