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

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

package com.ksyun.ks3.service.request;

import com.ksyun.ks3.http.HttpHeaders;
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.http.HttpMethod;
import com.ksyun.ks3.utils.StringUtils;

/**
 * @author lijunwei[[email protected]]  
 * 
 * @date 2014年10月16日 下午3:30:01
 * 
 * @description 

* 构造函数 *

*

* public ListObjectsRequest(String bucketName) *

*

* public ListObjectsRequest(String bucketName,String prefix) *

*

* public ListObjectsRequest(String bucketName, String prefix, * String marker, String delimiter, Integer maxKeys) *

*

* GET Bucket(List Objects)的请求 *

**/ public class ListObjectsRequest extends Ks3WebServiceRequest { private String bucket; /** * prefix和delimiter详解 *

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

*

* 比如有一下几个个object key *

*

* aaaa/bbb/ddd.txt *

*

* aaaa/ccc/eee.txt *

*

* ssss/eee/fff.txt *

*

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

*

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

*

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

*

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

*

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

*

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

* *

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

*/ private String prefix; /** * 游标,列出object key 字典排序大于marker的object */ private String marker; /** * prefix和delimiter详解 *

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

*

* 比如有一下几个个object key *

*

* aaaa/bbb/ddd.txt *

*

* aaaa/ccc/eee.txt *

*

* ssss/eee/fff.txt *

*

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

*

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

*

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

*

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

*

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

*

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

* *

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

*/ private String delimiter; /** * 返回的最大数1-1000 */ private Integer maxKeys; /** * 要求ks3服务器对返回的结果中object key进行编码 */ private String encodingType; public String getBucket() { return bucket; } public void setBucket(String bucket) { this.bucket = bucket; } /** * 前缀 */ public String getPrefix() { return prefix; } /** * 前缀 */ public void setPrefix(String prefix) { this.prefix = prefix; } /** * 游标 */ public String getMarker() { return marker; } /** * 游标 */ public void setMarker(String marker) { this.marker = marker; } /** * 分隔符 */ public String getDelimiter() { return delimiter; } /** * 分隔符 */ public void setDelimiter(String delimiter) { this.delimiter = delimiter; } /** * 返回的最大数 */ public Integer getMaxKeys() { return maxKeys; } /** * 返回的最大数 */ public void setMaxKeys(Integer maxKeys) { this.maxKeys = maxKeys; } /** * * @param bucketName */ public ListObjectsRequest(String bucketName) { this(bucketName, null, null, null, null); } /** * * @param bucketName * @param prefix */ public ListObjectsRequest(String bucketName, String prefix) { this(bucketName, prefix, null, null, null); } /** * * @param bucketName * @param prefix * @param marker * @param delimiter * @param maxKeys */ public ListObjectsRequest(String bucketName, String prefix, String marker, String delimiter, Integer maxKeys) { this.bucket = bucketName; this.prefix = prefix; this.marker = marker; this.delimiter = delimiter; this.maxKeys = maxKeys; } @Override public void validateParams() throws IllegalArgumentException { if (StringUtils.isBlank(this.bucket)) throw notNull( "bucketName"); if (this.maxKeys != null && (this.maxKeys > 1000 || this.maxKeys < 1)) throw between( "maxKeys",String.valueOf(maxKeys),"1","1000"); } 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.addQueryParamIfNotNull("prefix", prefix); request.addQueryParamIfNotNull("marker", marker); request.addQueryParamIfNotNull("delimiter", delimiter); if(maxKeys!=null) request.addQueryParamIfNotNull("max-keys", String.valueOf(maxKeys)); request.addQueryParamIfNotNull("encoding-type", this.encodingType); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy