Commit dc41e553 authored by gmantele's avatar gmantele
Browse files

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

parent 91a53de4
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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;
+16 −42
Original line number Diff line number Diff line
@@ -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");
					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;
						}
					if (uploadLimit[0] > -1){
						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");
+2 −18
Original line number Diff line number Diff line
@@ -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;