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

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

parent 5688d286
No related branches found
No related tags found
No related merge requests found
......@@ -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();
......
......@@ -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");
}
}
......
......@@ -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
......
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