Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.qiniu.service.media.QiniuPfop Maven / Gradle / Ivy
Go to download
qiniu-suits is a efficient tools for qiniu api implemented by java8.
package com.qiniu.service.media;
import com.qiniu.persistence.FileMap;
import com.qiniu.common.QiniuException;
import com.qiniu.sdk.OperationManager;
import com.qiniu.service.interfaces.ILineProcess;
import com.qiniu.storage.Configuration;
import com.qiniu.util.Auth;
import com.qiniu.util.HttpResponseUtils;
import com.qiniu.util.StringMap;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class QiniuPfop implements ILineProcess>, Cloneable {
final private String processName;
final private String accessKey;
final private String secretKey;
final private Configuration configuration;
private OperationManager operationManager;
final private String bucket;
final private String fopsIndex;
final private StringMap pfopParams;
public int retryCount;
final private String savePath;
private String saveTag;
private int saveIndex;
private FileMap fileMap;
public QiniuPfop(String accessKey, String secretKey, Configuration configuration, String bucket, String pipeline,
String fopsIndex, String savePath, int saveIndex) throws IOException {
this.processName = "pfop";
this.accessKey = accessKey;
this.secretKey = secretKey;
this.configuration = configuration;
this.operationManager = new OperationManager(Auth.create(accessKey, secretKey), configuration);
this.bucket = bucket;
if (fopsIndex == null || "".equals(fopsIndex)) throw new IOException("please set the fopsIndex.");
else this.fopsIndex = fopsIndex;
this.pfopParams = new StringMap().putNotEmpty("pipeline", pipeline);
this.savePath = savePath;
this.saveTag = "";
this.saveIndex = saveIndex;
this.fileMap = new FileMap(savePath, processName, String.valueOf(saveIndex));
this.fileMap.initDefaultWriters();
}
public QiniuPfop(String accessKey, String secretKey, Configuration configuration, String bucket, String pipeline,
String fopsIndex, String savePath) throws IOException {
this(accessKey, secretKey, configuration, bucket, pipeline, fopsIndex, savePath, 0);
}
public String getProcessName() {
return this.processName;
}
public void setRetryCount(int retryCount) {
this.retryCount = retryCount < 1 ? 1 : retryCount;
}
public void setSaveTag(String saveTag) {
this.saveTag = saveTag == null ? "" : saveTag;
}
public QiniuPfop clone() throws CloneNotSupportedException {
QiniuPfop qiniuPfop = (QiniuPfop)super.clone();
qiniuPfop.operationManager = new OperationManager(Auth.create(accessKey, secretKey), configuration.clone());
qiniuPfop.fileMap = new FileMap(savePath, processName, saveTag + String.valueOf(++saveIndex));
try {
qiniuPfop.fileMap.initDefaultWriters();
} catch (IOException e) {
throw new CloneNotSupportedException("init writer failed.");
}
return qiniuPfop;
}
public void processLine(List> lineList, int retryCount) throws IOException {
String key;
String persistentId;
int retry;
for (Map line : lineList) {
key = line.get("key");
retry = retryCount;
while (retry > 0) {
try {
persistentId = operationManager.pfop(bucket, key, line.get(fopsIndex), pfopParams);
fileMap.writeSuccess(key + "\t" + persistentId, false);
retry = 0;
} catch (QiniuException e) {
retry--;
retry = HttpResponseUtils.processException(e, retry, fileMap, new ArrayList(){{
add(line.get("key") + "\t" + line.get(fopsIndex));
}});
}
}
}
}
public void processLine(List> lineList) throws IOException {
processLine(lineList, retryCount);
}
public void closeResource() {
fileMap.closeWriters();
}
}