|
@@ -16,6 +16,7 @@ import org.springframework.util.ObjectUtils;
|
|
import org.springframework.util.StringUtils;
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.io.*;
|
|
import java.io.*;
|
|
|
|
+import java.math.BigDecimal;
|
|
import java.net.URL;
|
|
import java.net.URL;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
@@ -330,6 +331,48 @@ public class OssFileService extends AbstractFYunFileService {
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+ public void restoreFolder(String bucket,String folderName){
|
|
|
|
+ ObjectMetadata objectMetadata ;
|
|
|
|
+
|
|
|
|
+ List<String> objectList = this.listRemoteFiles(bucket, folderName);
|
|
|
|
+ if(CollUtil.isEmpty(objectList)){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ for (String objectName : objectList) {
|
|
|
|
+ objectMetadata = ossClient.getObjectMetadata(bucket, objectName);
|
|
|
|
+ // 校验Object是否为归档类型Object。
|
|
|
|
+ StorageClass storageClass = objectMetadata.getObjectStorageClass();
|
|
|
|
+ if (storageClass == StorageClass.Archive) {
|
|
|
|
+ // 解冻Object。
|
|
|
|
+ ossClient.restoreObject(bucket, objectName);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public Integer getRestoreFolderProcess(String bucket,String folderName){
|
|
|
|
+ ObjectMetadata objectMetadata ;
|
|
|
|
+
|
|
|
|
+ List<String> objectList = this.listRemoteFiles(bucket, folderName);
|
|
|
|
+ if(CollUtil.isEmpty(objectList)){
|
|
|
|
+ return 100;
|
|
|
|
+ }
|
|
|
|
+ List<String> restoreFileList = new ArrayList<>();
|
|
|
|
+ for (String objectName : objectList) {
|
|
|
|
+ objectMetadata = ossClient.getObjectMetadata(bucket, objectName);
|
|
|
|
+ if(objectMetadata.isRestoreCompleted()){
|
|
|
|
+ restoreFileList.add(objectName);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(objectList.size() <= restoreFileList.size() ){
|
|
|
|
+ return 100;
|
|
|
|
+ }
|
|
|
|
+ BigDecimal rite = new BigDecimal(restoreFileList.size()).divide(new BigDecimal(objectList.size()),2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ BigDecimal multiply = rite.multiply(new BigDecimal(100));
|
|
|
|
+ return multiply.intValue();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
public void restoreFolder(String bucket, String folderName, Integer priority) {
|
|
public void restoreFolder(String bucket, String folderName, Integer priority) {
|
|
|
|
|
|
List<String> objectList = this.listRemoteFiles(bucket, folderName);
|
|
List<String> objectList = this.listRemoteFiles(bucket, folderName);
|