/**
* 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;
}