Commit fbff829a authored by gmantele's avatar gmantele
Browse files

TAP: Add other kinds of BYTE limit unit (kB, MB and GB).

parent 5688d286
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -16,26 +16,31 @@ package tap;
 * 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.util.Collection;
import java.util.Iterator;

import tap.file.TAPFileManager;

import tap.formatter.OutputFormat;

import tap.log.TAPLog;

import tap.metadata.TAPMetadata;

import uws.service.UserIdentifier;

/**
 * 
 * 
 * @author Gr&eacute;gory Mantelet (CDS;ARI) - gmantele@ari.uni-heidelberg.de
 * @version 1.1 (12/2013)
 * 
 * @param <R>
 */
public interface ServiceConnection< R > {

	public static enum LimitUnit{
		rows, bytes;
		rows, bytes, kilobytes, megabytes, gigabytes;
	}

	public String getProviderName();
+50 −4
Original line number Diff line number Diff line
@@ -55,6 +55,12 @@ import uws.service.UWSService;
import uws.service.UWSUrl;
import uws.service.error.ServiceErrorWriter;

/**
 * @author Gr&eacute;gory Mantelet (CDS;ARI) - gmantele@ari.uni-heidelberg.de
 * @version 1.1 (12/2013)
 * 
 * @param <R>
 */
public class TAP< R > implements VOSIResource {

	private static final long serialVersionUID = 1L;
@@ -243,10 +249,50 @@ public class TAP< R > implements VOSIResource {
			if (uploadLimit != null && uploadLimit.length >= 2 && uploadLimitType != null && uploadLimitType.length >= 2){
				if (uploadLimit[0] > -1 || uploadLimit[1] > -1){
					xml.append("\t<uploadLimit>\n");
					if (uploadLimit[0] > -1)
						xml.append("\t\t<default unit=\"").append(uploadLimitType[0]).append("\">").append(uploadLimit[0]).append("</default>\n");
					if (uploadLimit[1] > -1)
						xml.append("\t\t<hard unit=\"").append(uploadLimitType[1]).append("\">").append(uploadLimit[1]).append("</hard>\n");
					if (uploadLimit[0] > -1){
						String limitType;
						long limit = uploadLimit[0];
						switch(uploadLimitType[0]){
							case kilobytes:
								limit *= 1000l;
								limitType = LimitUnit.rows.toString();
								break;
							case megabytes:
								limit *= 1000000l;
								limitType = LimitUnit.rows.toString();
								break;
							case gigabytes:
								limit *= 1000000000l;
								limitType = LimitUnit.rows.toString();
								break;
							default:
								limitType = uploadLimitType[0].toString();
								break;
						}
						xml.append("\t\t<default unit=\"").append(limitType).append("\">").append(limit).append("</default>\n");
					}
					if (uploadLimit[1] > -1){
						String limitType;
						long limit = uploadLimit[1];
						switch(uploadLimitType[1]){
							case kilobytes:
								limit *= 1000l;
								limitType = LimitUnit.rows.toString();
								break;
							case megabytes:
								limit *= 1000000l;
								limitType = LimitUnit.rows.toString();
								break;
							case gigabytes:
								limit *= 1000000000l;
								limitType = LimitUnit.rows.toString();
								break;
							default:
								limitType = uploadLimitType[1].toString();
								break;
						}
						xml.append("\t\t<hard unit=\"").append(limitType).append("\">").append(limit).append("</hard>\n");
					}
					xml.append("\t</uploadLimit>\n");
				}
			}
+18 −3
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ public class Uploader {
	protected final ServiceConnection<?> service;
	protected final DBConnection<?> dbConn;
	protected final int nbRowsLimit;
	protected final int nbBytesLimit;
	protected final long nbBytesLimit;

	protected int nbRows = 0;

@@ -66,7 +66,6 @@ public class Uploader {
			throw new NullPointerException("The given DBConnection is NULL !");

		this.service = service;

		this.dbConn = dbConn;

		if (service.uploadEnabled()){
@@ -74,7 +73,23 @@ public class Uploader {
				nbRowsLimit = ((service.getUploadLimit()[1] > 0) ? service.getUploadLimit()[1] : -1);
				nbBytesLimit = -1;
			}else{
				nbBytesLimit = ((service.getUploadLimit()[1] > 0) ? service.getUploadLimit()[1] : -1);
				long limit = ((service.getUploadLimit()[1] > 0) ? service.getUploadLimit()[1] : -1);
				if (limit > 0){
					switch(service.getUploadLimitType()[1]){
						case kilobytes:
							limit *= 1000l;
							break;
						case megabytes:
							limit *= 1000000l;
							break;
						case gigabytes:
							limit *= 1000000000l;
							break;
						default:
							break;
					}
				}
				nbBytesLimit = limit;
				nbRowsLimit = -1;
			}
		}else