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

com.ksyun.ks3.service.util.CopyBucket Maven / Gradle / Ivy

package com.ksyun.ks3.service.util;

import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import com.ksyun.ks3.dto.Ks3ObjectSummary;
import com.ksyun.ks3.dto.ObjectListing;
import com.ksyun.ks3.service.Ks3Client;
import com.ksyun.ks3.service.request.ListObjectsRequest;

public class CopyBucket {
	private int maxThreads = 30;
	private Ks3Client client;
	public CopyBucket(Ks3Client client){
		this.client = client;
	}
	public CopyBucket(Ks3Client client,int maxThreads){
		this.maxThreads = maxThreads;
		this.client = client;
	}
	public CopyBucketResult doCopy(final String sourceBucket,final String destBucket){
		final CopyBucketResult result = new CopyBucketResult();
		ExecutorService pool = Executors.newFixedThreadPool(maxThreads);
		
		ListObjectsRequest listReq = new ListObjectsRequest(sourceBucket);
		do{
			final ObjectListing objects = client.listObjects(listReq);
			listReq.setMarker(objects.getObjectSummaries().get(objects.getObjectSummaries().size()-1).getKey());
			Thread t = new Thread() {
				@Override
				public void run() {
					for(Ks3ObjectSummary obj : objects.getObjectSummaries()){
						try{
							client.copyObject(destBucket, obj.getKey(), sourceBucket, obj.getKey());
							result.getSuccess().add(obj.getKey());
						}catch(Exception e){
							e.printStackTrace();
							result.getError().put(obj.getKey(),e);
						}
					}
				}
			};
			pool.execute(t);
			if(!objects.isTruncated())
				break;
		}while(true);
		
		pool.shutdown();
		for (;;) {
			if (pool.isTerminated())
				break;
			try {
				Thread.sleep(200);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		return result;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy