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; ...@@ -16,26 +16,31 @@ package tap;
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General Public License
* along with TAPLibrary. If not, see <http://www.gnu.org/licenses/>. * 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.Collection;
import java.util.Iterator; import java.util.Iterator;
import tap.file.TAPFileManager; import tap.file.TAPFileManager;
import tap.formatter.OutputFormat; import tap.formatter.OutputFormat;
import tap.log.TAPLog; import tap.log.TAPLog;
import tap.metadata.TAPMetadata; import tap.metadata.TAPMetadata;
import uws.service.UserIdentifier; 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 interface ServiceConnection< R > {
public static enum LimitUnit{ public static enum LimitUnit{
rows, bytes; rows, bytes, kilobytes, megabytes, gigabytes;
} }
public String getProviderName(); public String getProviderName();
......
...@@ -55,6 +55,12 @@ import uws.service.UWSService; ...@@ -55,6 +55,12 @@ import uws.service.UWSService;
import uws.service.UWSUrl; import uws.service.UWSUrl;
import uws.service.error.ServiceErrorWriter; 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 { public class TAP< R > implements VOSIResource {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -243,10 +249,50 @@ public class TAP< R > implements VOSIResource { ...@@ -243,10 +249,50 @@ public class TAP< R > implements VOSIResource {
if (uploadLimit != null && uploadLimit.length >= 2 && uploadLimitType != null && uploadLimitType.length >= 2){ if (uploadLimit != null && uploadLimit.length >= 2 && uploadLimitType != null && uploadLimitType.length >= 2){
if (uploadLimit[0] > -1 || uploadLimit[1] > -1){ if (uploadLimit[0] > -1 || uploadLimit[1] > -1){
xml.append("\t<uploadLimit>\n"); xml.append("\t<uploadLimit>\n");
if (uploadLimit[0] > -1) if (uploadLimit[0] > -1){
xml.append("\t\t<default unit=\"").append(uploadLimitType[0]).append("\">").append(uploadLimit[0]).append("</default>\n"); String limitType;
if (uploadLimit[1] > -1) long limit = uploadLimit[0];
xml.append("\t\t<hard unit=\"").append(uploadLimitType[1]).append("\">").append(uploadLimit[1]).append("</hard>\n"); 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"); xml.append("\t</uploadLimit>\n");
} }
} }
......
...@@ -55,7 +55,7 @@ public class Uploader { ...@@ -55,7 +55,7 @@ public class Uploader {
protected final ServiceConnection<?> service; protected final ServiceConnection<?> service;
protected final DBConnection<?> dbConn; protected final DBConnection<?> dbConn;
protected final int nbRowsLimit; protected final int nbRowsLimit;
protected final int nbBytesLimit; protected final long nbBytesLimit;
protected int nbRows = 0; protected int nbRows = 0;
...@@ -66,7 +66,6 @@ public class Uploader { ...@@ -66,7 +66,6 @@ public class Uploader {
throw new NullPointerException("The given DBConnection is NULL !"); throw new NullPointerException("The given DBConnection is NULL !");
this.service = service; this.service = service;
this.dbConn = dbConn; this.dbConn = dbConn;
if (service.uploadEnabled()){ if (service.uploadEnabled()){
...@@ -74,7 +73,23 @@ public class Uploader { ...@@ -74,7 +73,23 @@ public class Uploader {
nbRowsLimit = ((service.getUploadLimit()[1] > 0) ? service.getUploadLimit()[1] : -1); nbRowsLimit = ((service.getUploadLimit()[1] > 0) ? service.getUploadLimit()[1] : -1);
nbBytesLimit = -1; nbBytesLimit = -1;
}else{ }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; nbRowsLimit = -1;
} }
}else }else
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment