Skip to content
Snippets Groups Projects
Commit 5688d286 authored by gmantele's avatar gmantele
Browse files

TAP: Modify the xSV formats in order to let developer specify a MIME type and...

TAP: Modify the xSV formats in order to let developer specify a MIME type and short MIME type (or alias) for any SV format, but especially for the one not already managed (CSV and TSV).
parent 37fe1c2d
No related branches found
No related tags found
No related merge requests found
......@@ -16,28 +16,46 @@ package tap.formatter;
* 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 - UDS/Centre de Données astronomiques de Strasbourg (CDS)
* Copyright 2012-2013 - UDS/Centre de Données astronomiques de Strasbourg (CDS),
* Astronomisches Rechen Institute (ARI)
*/
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import adql.db.DBColumn;
import tap.ServiceConnection;
import tap.TAPException;
import tap.TAPExecutionReport;
import adql.db.DBColumn;
/**
*
* @author Gr&eacute;gory Mantelet (CDS;ARI) - gmantele@ari.uni-heidelberg.de
* @version 1.1 (12/2013)
*/
public class ResultSet2SVFormatter extends SVFormat<ResultSet> implements ResultSetFormatter {
/**
* @since 1.1
*/
public ResultSet2SVFormatter(final ServiceConnection<ResultSet> service, char colSeparator){
super(service, colSeparator);
}
public ResultSet2SVFormatter(final ServiceConnection<ResultSet> service, char colSeparator, boolean delimitStrings){
super(service, colSeparator, delimitStrings);
}
public ResultSet2SVFormatter(final ServiceConnection<ResultSet> service, char colSeparator){
/**
* @since 1.1
*/
public ResultSet2SVFormatter(final ServiceConnection<ResultSet> service, char colSeparator, boolean delimitStrings, String mimeType, String typeAlias){
super(service, colSeparator, delimitStrings, mimeType, typeAlias);
}
public ResultSet2SVFormatter(final ServiceConnection<ResultSet> service, String colSeparator){
super(service, colSeparator);
}
......@@ -45,8 +63,11 @@ public class ResultSet2SVFormatter extends SVFormat<ResultSet> implements Result
super(service, colSeparator, delimitStrings);
}
public ResultSet2SVFormatter(final ServiceConnection<ResultSet> service, String colSeparator){
super(service, colSeparator);
/**
* @since 1.1
*/
public ResultSet2SVFormatter(final ServiceConnection<ResultSet> service, String colSeparator, boolean delimitStrings, String mimeType, String typeAlias){
super(service, colSeparator, delimitStrings, mimeType, typeAlias);
}
@Override
......
......@@ -16,19 +16,28 @@ package tap.formatter;
* 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 - UDS/Centre de Données astronomiques de Strasbourg (CDS)
* Copyright 2012-2013 - UDS/Centre de Données astronomiques de Strasbourg (CDS),
* Astronomisches Rechen Institute (ARI)
*/
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import cds.savot.writer.SavotWriter;
import adql.db.DBColumn;
import tap.ServiceConnection;
import tap.TAPException;
import tap.TAPExecutionReport;
import adql.db.DBColumn;
import cds.savot.writer.SavotWriter;
/**
*
*
* @author Gr&eacute;gory Mantelet (CDS;ARI) - gmantele@ari.uni-heidelberg.de
* @version 1.1 (12/2013)
*
* @param <R>
*/
public abstract class SVFormat< R > implements OutputFormat<R> {
/** Indicates whether a format report (start and end date/time) must be printed in the log output. */
......@@ -42,60 +51,114 @@ public abstract class SVFormat< R > implements OutputFormat<R> {
protected final String separator;
protected final boolean delimitStr;
/** @since 1.1 */
protected final String mimeType;
/** @since 1.1 */
protected final String shortMimeType;
public SVFormat(final ServiceConnection<R> service, char colSeparator){
this(service, colSeparator, true);
}
/**
* @since 1.1
*/
public SVFormat(final ServiceConnection<R> service, String colSeparator){
this(service, colSeparator, true);
}
public SVFormat(final ServiceConnection<R> service, char colSeparator, boolean delimitStrings){
this(service, colSeparator, delimitStrings, false);
this(service, "" + colSeparator, delimitStrings);
}
public SVFormat(final ServiceConnection<R> service, char colSeparator, boolean delimitStrings, final boolean logFormatReport){
separator = "" + colSeparator;
delimitStr = delimitStrings;
this.service = service;
this.logFormatReport = logFormatReport;
/**
* @since 1.1
*/
public SVFormat(final ServiceConnection<R> service, String colSeparator, boolean delimitStrings){
this(service, colSeparator, delimitStrings, null, null);
}
public SVFormat(final ServiceConnection<R> service, String colSeparator){
this(service, colSeparator, true);
/**
* @since 1.1
*/
public SVFormat(final ServiceConnection<R> service, char colSeparator, boolean delimitStrings, String mimeType, String typeAlias){
this(service, "" + colSeparator, delimitStrings, mimeType, typeAlias);
}
public SVFormat(final ServiceConnection<R> service, String colSeparator, boolean delimitStrings){
/**
* @since 1.1
*/
public SVFormat(final ServiceConnection<R> service, String colSeparator, boolean delimitStrings, String mimeType, String typeAlias){
this(service, colSeparator, delimitStrings, mimeType, typeAlias, false);
}
/**
* @since 1.1
*/
public SVFormat(final ServiceConnection<R> service, char colSeparator, boolean delimitStrings, String mimeType, String typeAlias, final boolean logFormatReport){
this(service, "" + colSeparator, delimitStrings, mimeType, typeAlias, logFormatReport);
}
/**
* @since 1.1
*/
public SVFormat(final ServiceConnection<R> service, String colSeparator, boolean delimitStrings, String mimeType, String typeAlias, final boolean logFormatReport){
separator = (colSeparator == null) ? ("" + COMMA_SEPARATOR) : colSeparator;
delimitStr = delimitStrings;
this.service = service;
this.logFormatReport = logFormatReport;
// Set the MIME type:
if (mimeType == null || mimeType.length() == 0){
// if none is provided, guess it from the separator:
switch(separator.charAt(0)){
case COMMA_SEPARATOR:
case SEMI_COLON_SEPARATOR:
this.mimeType = "text/csv";
break;
case TAB_SEPARATOR:
this.mimeType = "text/tsv";
break;
default:
this.mimeType = "text/plain";
}
}else
this.mimeType = mimeType;
// Set the short MIME type (or the alias):
if (typeAlias == null || typeAlias.length() == 0){
// if none is provided, guess it from the separator:
switch(separator.charAt(0)){
case COMMA_SEPARATOR:
case SEMI_COLON_SEPARATOR:
this.shortMimeType = "csv";
break;
case TAB_SEPARATOR:
this.shortMimeType = "tsv";
break;
default:
this.shortMimeType = "text";
}
}else
this.shortMimeType = typeAlias;
}
@Override
public String getMimeType(){
switch(separator.charAt(0)){
case COMMA_SEPARATOR:
case SEMI_COLON_SEPARATOR:
return "text/csv";
case TAB_SEPARATOR:
return "text/tsv";
default:
return "text/plain";
}
return mimeType;
}
@Override
public String getShortMimeType(){
switch(separator.charAt(0)){
case COMMA_SEPARATOR:
case SEMI_COLON_SEPARATOR:
return "csv";
case TAB_SEPARATOR:
return "tsv";
default:
return "text";
}
return shortMimeType;
}
@Override
public String getDescription(){
return null;
}
@Override
public String getFileExtension(){
switch(separator.charAt(0)){
case COMMA_SEPARATOR:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment