package tap.formatter; /* * This file is part of TAPLibrary. * * TAPLibrary is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * TAPLibrary 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with TAPLibrary. If not, see <http://www.gnu.org/licenses/>. * * Copyright 2012-2015 - UDS/Centre de DonnĂ©es astronomiques de Strasbourg (CDS) * Astronomisches Rechen Institut (ARI) */ import java.io.IOException; import java.io.OutputStream; import tap.TAPException; import tap.TAPExecutionReport; import tap.data.TableIterator; /** * Describes an output format and formats a given query result into this format. * * @author Grégory Mantelet (CDS;ARI) * * @version 2.0 (03/2015) */ public interface OutputFormat { /** * Gets the MIME type corresponding to this format. * * @return Its MIME type (MUST BE DIFFERENT FROM NULL). */ public String getMimeType(); /** * Gets a short expression of its MIME type. * * @return Its short MIME type. */ public String getShortMimeType(); /** * Gets a description of this format. * * @return Its description. */ public String getDescription(); /** * Gets a file extension for this format. * * @return Its file extension. */ public String getFileExtension(); /** * <p>Formats the given query result and writes it in the given output stream.</p> * * <p><i>Note: the given output stream should not be closed at the end of this function. It is up to the called to do it.</i></p> * * @param result The raw (table) result to format. * @param output The output stream (a ServletOutputStream or a stream on a file) in which the formatted result must be written. * @param execReport The report of the execution of the TAP query whose the result must be now written. * @param thread The thread which has asked the result writing. * * @throws TAPException If there is an error while formatting the query result. * @throws IOException If any error occurs while writing into the given stream. * @throws InterruptedException If the query has been interrupted/aborted. */ public void writeResult(final TableIterator result, final OutputStream output, final TAPExecutionReport execReport, final Thread thread) throws TAPException, IOException, InterruptedException; }