diff --git a/src/tap/formatter/ResultSet2SVFormatter.java b/src/tap/formatter/ResultSet2SVFormatter.java index 628957071ee609e48f2db64d99bfde961803610d..43c756ca90bde73627e2d7c7566dbc496d854528 100644 --- a/src/tap/formatter/ResultSet2SVFormatter.java +++ b/src/tap/formatter/ResultSet2SVFormatter.java @@ -16,28 +16,48 @@ 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é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); + } + + /** + * @since 1.1 + */ + public ResultSet2SVFormatter(final ServiceConnection<ResultSet> service, String colSeparator){ super(service, colSeparator); } @@ -45,8 +65,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 diff --git a/src/tap/formatter/SVFormat.java b/src/tap/formatter/SVFormat.java index 259fff2ef5129a7f1013c079edd7080c4eed363c..c28ccc9c2dfd24e472aee2299b6bf37c311bca79 100644 --- a/src/tap/formatter/SVFormat.java +++ b/src/tap/formatter/SVFormat.java @@ -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é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,112 @@ public abstract class SVFormat< R > implements OutputFormat<R> { protected final String separator; protected final boolean delimitStr; + protected final String mimeType; + 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: