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

[TAP] Deal with the new LimitUnit (kilobytes, etc...) everywhere.

parent 91a53de4
No related branches found
No related tags found
No related merge requests found
......@@ -55,7 +55,7 @@ import com.oreilly.servlet.multipart.ExceededSizeException;
* </p>
*
* @author Gr&eacute;gory Mantelet (ARI)
* @version 2.0 (12/2014)
* @version 2.0 (01/2015)
* @since 2.0
*/
public class LimitedTableIterator implements TableIterator {
......@@ -119,9 +119,9 @@ public class LimitedTableIterator implements TableIterator {
public < T extends TableIterator > LimitedTableIterator(final Class<T> classIt, final InputStream input, final LimitUnit type, final int limit) throws DataReadException{
try{
Constructor<T> construct = classIt.getConstructor(InputStream.class);
if (type == LimitUnit.bytes && limit > 0){
if (LimitUnit.bytes.isCompatibleWith(type) && limit > 0){
maxNbRows = -1;
innerIt = construct.newInstance(new LimitedSizeInputStream(input, limit));
innerIt = construct.newInstance(new LimitedSizeInputStream(input, limit * type.bytesFactor()));
}else{
innerIt = construct.newInstance(input);
maxNbRows = (type == null || type != LimitUnit.rows) ? -1 : limit;
......
......@@ -521,10 +521,17 @@ public class TAP implements VOSIResource {
if (outputLimit != null && outputLimit.length >= 2 && outputLimitType != null && outputLimitType.length >= 2){
if (outputLimit[0] > -1 || outputLimit[1] > -1){
xml.append("\t<outputLimit>\n");
if (outputLimit[0] > -1)
xml.append("\t\t<default ").append(VOSerializer.formatAttribute("unit", outputLimitType[0].toString())).append(">").append(outputLimit[0]).append("</default>\n");
if (outputLimit[1] > -1)
xml.append("\t\t<hard ").append(VOSerializer.formatAttribute("unit", outputLimitType[1].toString())).append(">").append(outputLimit[1]).append("</hard>\n");
String limitType;
if (outputLimit[0] > -1){
long limit = outputLimit[0] * outputLimitType[0].bytesFactor();
limitType = (outputLimitType[0] == null || outputLimitType[0] == LimitUnit.rows) ? LimitUnit.rows.toString() : LimitUnit.bytes.toString();
xml.append("\t\t<default ").append(VOSerializer.formatAttribute("unit", limitType)).append(">").append(limit).append("</default>\n");
}
if (outputLimit[1] > -1){
long limit = outputLimit[1] * outputLimitType[1].bytesFactor();
limitType = (outputLimitType[1] == null || outputLimitType[1] == LimitUnit.rows) ? LimitUnit.rows.toString() : LimitUnit.bytes.toString();
xml.append("\t\t<hard ").append(VOSerializer.formatAttribute("unit", limitType)).append(">").append(limit).append("</hard>\n");
}
xml.append("\t</outputLimit>\n");
}
}
......@@ -537,48 +544,15 @@ public class TAP 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");
String limitType;
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;
}
long limit = uploadLimit[0] * uploadLimitType[0].bytesFactor();
limitType = (uploadLimitType[0] == null || uploadLimitType[0] == LimitUnit.rows) ? LimitUnit.rows.toString() : LimitUnit.bytes.toString();
xml.append("\t\t<default ").append(VOSerializer.formatAttribute("unit", 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;
}
long limit = uploadLimit[1] * uploadLimitType[1].bytesFactor();
limitType = (uploadLimitType[1] == null || uploadLimitType[1] == LimitUnit.rows) ? LimitUnit.rows.toString() : LimitUnit.bytes.toString();
xml.append("\t\t<hard ").append(VOSerializer.formatAttribute("unit", limitType)).append("\">").append(limit).append("</hard>\n");
}
xml.append("\t</uploadLimit>\n");
......
......@@ -120,24 +120,8 @@ public class Uploader {
if (this.service.uploadEnabled()){
// ...and set the rows or bytes limit:
if (this.service.getUploadLimitType()[1] != null && this.service.getUploadLimit()[1] > 0){
switch(service.getUploadLimitType()[1]){
case kilobytes:
limit = (int)(1000l * this.service.getUploadLimit()[1]);
limitUnit = LimitUnit.bytes;
break;
case megabytes:
limit = (int)(1000000l * this.service.getUploadLimit()[1]);
limitUnit = LimitUnit.bytes;
break;
case gigabytes:
limit = (int)(1000000000l * this.service.getUploadLimit()[1]);
limitUnit = LimitUnit.bytes;
break;
default:
limit = this.service.getUploadLimit()[1];
limitUnit = this.service.getUploadLimitType()[1];
break;
}
limit = (int)(this.service.getUploadLimitType()[1].bytesFactor() * this.service.getUploadLimit()[1]);
limitUnit = (this.service.getUploadLimitType()[1] == LimitUnit.rows) ? LimitUnit.rows : LimitUnit.bytes;
}else{
limit = -1;
limitUnit = null;
......
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