All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ksyun.ks3.service.request.ListMultipartUploadsRequest Maven / Gradle / Ivy

package com.ksyun.ks3.service.request;

import com.ksyun.ks3.http.HttpMethod;
import com.ksyun.ks3.http.Request;

import static com.ksyun.ks3.exception.client.ClientIllegalArgumentExceptionGenerator.notNull;
import static com.ksyun.ks3.exception.client.ClientIllegalArgumentExceptionGenerator.between;

import com.ksyun.ks3.utils.StringUtils;

/**
 * @author lijunwei[[email protected]]  
 * 
 * @date 2014年11月16日
 * 
 * @description 列出bucket下未进行complete或abort的分块上传.该分块上传的块依然占有用户的存储空间,
 *              可以隔一段时间将bucket下未complete或abort的分块上传进行complete或abort操作
 **/
public class ListMultipartUploadsRequest extends Ks3WebServiceRequest {
	private String bucket;
	/**
	 * prefix和delimiter详解
	 * 

* commonPrefix由prefix和delimiter确定,以prefix开头的object * key,在prefix之后第一次出现delimiter的位置之前(包含delimiter)的子字符串将存在于commonPrefixes中 *

*

* 比如有一下几个个分块上传 *

*

* aaaa/bbb/ddd.txt *

*

* aaaa/ccc/eee.txt *

*

* ssss/eee/fff.txt *

*

* prefix为空 delimiter为/ 则commonPrefix 为 aaaa/和ssss/ 返回的uploads为空 *

*

* prefix为aaaa/ delimiter为/ 则commonPrefix 为 aaaa/bbb/和aaaa/ccc/ 返回的uploads为空 *

*

* prefix为ssss/ delimiter为/ 则commonPrefix 为 aaaa/eee/ 返回的uploads为空 *

*

* prefix为空 delimiter为空 则commonPrefix 为空 * 返回的uploads为aaaa/bbb/ddd.txt、aaaa/ccc/eee.txt、ssss/eee/fff.txt *

*

* prefix为aaaa/ delimiter为空 则commonPrefix 为空 * 返回的uploads为aaaa/bbb/ddd.txt、aaaa/ccc/eee.txt *

*

* prefix为ssss/ delimiter为空 则commonPrefix 为空 返回的uploads为ssss/eee/fff.txt *

*

* 由于分布式文件存储系统中没有文件夹结构,所以用delimiter和prefix模拟文件夹结构,可以把prefix看成当前在哪个文件夹下, * delimiter为文件夹分隔符,commonprefix为当前文件夹下的子文件夹 *

*/ private String delimiter; /** *

* keyMarker为空,uploadIdMarker不为空 *

*

* 无意义 *

*

* keyMarker不为空,uploadIdMarker不为空 *

*

* 列出分块上传object key为keyMarker,且upload id 字典排序大于uploadIdMarker的结果 *

*

* keyMarker不为空,uploadIdMarker为空 *

*

* 列出分块上传object key字典排序大于keyMarker的结果 *

*/ private String keyMarker; private String uploadIdMarker; /** * 设置返回结果数,1-1000 */ private Integer maxUploads; private String prefix; /** * 要求ks3服务器对返回的结果中object key进行编码 */ private String encodingType; public ListMultipartUploadsRequest(String bucketName) { this.bucket = bucketName; } public ListMultipartUploadsRequest(String bucketName, String prefix) { this.bucket = bucketName; this.setPrefix(prefix); } public ListMultipartUploadsRequest(String bucketName, String prefix, String keyMarker, String uploadIdMarker) { this.bucket = bucketName; this.setPrefix(prefix); this.setKeyMarker(keyMarker); this.setUploadIdMarker(uploadIdMarker); } @Override public void validateParams() throws IllegalArgumentException { if (StringUtils.isBlank(this.bucket)) throw notNull("bucketName"); if (this.maxUploads != null && (this.maxUploads > 1000 || this.maxUploads < 1)) throw between( "maxUploads",String.valueOf(this.maxUploads),"1","1000"); } public String getBucket() { return bucket; } public void setBucket(String bucket) { this.bucket = bucket; } public String getDelimiter() { return delimiter; } public void setDelimiter(String delimiter) { this.delimiter = delimiter; } public String getKeyMarker() { return keyMarker; } public void setKeyMarker(String keyMarker) { this.keyMarker = keyMarker; } public String getUploadIdMarker() { return uploadIdMarker; } public void setUploadIdMarker(String uploadIdMarker) { this.uploadIdMarker = uploadIdMarker; } public Integer getMaxUploads() { return maxUploads; } public void setMaxUploads(Integer maxUploads) { this.maxUploads = maxUploads; } public String getPrefix() { return prefix; } public void setPrefix(String prefix) { this.prefix = prefix; } public String getEncodingType() { return encodingType; } public void setEncodingType(String encodingType) { this.encodingType = encodingType; } @Override public void buildRequest(Request request) { request.setMethod(HttpMethod.GET); request.setBucket(bucket); request.getQueryParams().put("uploads", null); request.addQueryParamIfNotNull("prefix", prefix); request.addQueryParamIfNotNull("key-marker", this.keyMarker); request.addQueryParamIfNotNull("upload-id-​marker", this.uploadIdMarker); request.addQueryParamIfNotNull("delimiter", delimiter); if (this.maxUploads != null) request.addQueryParamIfNotNull("max-uploads", String.valueOf(maxUploads)); if (!StringUtils.isBlank(this.encodingType)) request.addQueryParamIfNotNull("encoding-type", this.encodingType); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy