Преглед изворни кода

Merge branch 'master' of http://192.168.0.115:3000/4dkankan-v4/4dkankan-utils

lyhzzz пре 2 година
родитељ
комит
14435ea82b

+ 30 - 0
4dkankan-utils-fyun-https/src/main/java/com/fdkankan/fyun/http/HttpFileService.java

@@ -311,4 +311,34 @@ public class HttpFileService extends AbstractFYunFileService {
         return 0;
     }
 
+    @Override
+    public Boolean checkStore(String bucket, String url) {
+        return null;
+    }
+
+    @Override
+    public void restoreFolder(String bucket, String url) {
+
+    }
+
+    @Override
+    public Integer getRestoreFolderProcess(String bucket, String url) {
+        return null;
+    }
+
+    @Override
+    public void restoreFolder(String bucket, String folderName, Integer priority) {
+
+    }
+
+    @Override
+    public void restoreFile(String bucket, String objectName, Integer priority) {
+
+    }
+
+    @Override
+    public Long getSpace(String bucket, String key) {
+        return null;
+    }
+
 }

+ 5 - 0
4dkankan-utils-fyun-local/src/main/java/com/fdkankan/fyun/local/LocalFileService.java

@@ -205,4 +205,9 @@ public class LocalFileService extends AbstractFYunFileService {
     public Integer getRestoreFolderProcess(String bucket, String url) {
         return null;
     }
+
+    @Override
+    public Long getSpace(String bucket, String key) {
+        return null;
+    }
 }

+ 24 - 0
4dkankan-utils-fyun-oss/src/main/java/com/fdkankan/fyun/oss/OssFileService.java

@@ -425,5 +425,29 @@ public class OssFileService extends AbstractFYunFileService {
         }
     }
 
+    @Override
+    public Long getSpace(String bucket, String key) {
+
+        Long total = 0L;
+        boolean flag = true;
+        String nextMaker = null;
+        ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucket);
+        //指定下一级文件
+        listObjectsRequest.setPrefix(key);
+        //设置分页的页容量
+        listObjectsRequest.setMaxKeys(200);
+        do {
+            //获取下一页的起始点,它的下一项
+            listObjectsRequest.setMarker(nextMaker);
+            ObjectListing objectListing = ossClient.listObjects(listObjectsRequest);
+            Long space = objectListing.getObjectSummaries().parallelStream()
+                    .mapToLong(OSSObjectSummary::getSize).sum();
+            total += space;
+            nextMaker = objectListing.getNextMarker();
+            //全部执行完后,为false
+            flag = objectListing.isTruncated();
+        } while (flag);
+        return total;
+    }
 
 }

+ 2 - 0
4dkankan-utils-fyun-parent/src/main/java/com/fdkankan/fyun/face/FYunFileServiceInterface.java

@@ -338,4 +338,6 @@ public interface FYunFileServiceInterface {
     public void restoreFolder(String bucket, String folderName, Integer priority);
 
     public void restoreFile(String bucket, String objectName, Integer priority);
+
+    public Long getSpace(String bucket, String key);
 }

+ 68 - 2
4dkankan-utils-fyun-s3/src/main/java/com/fdkankan/fyun/s3/S3FileService.java

@@ -334,12 +334,54 @@ public class S3FileService extends AbstractFYunFileService {
 
     @Override
     public void restoreFolder(String bucket, String folderName, Integer priority) {
-
+        List<String> objectList = this.listRemoteFiles(bucket, folderName);
+        if(CollUtil.isEmpty(objectList)){
+            return;
+        }
+        objectList.parallelStream().forEach(objectName -> {
+            this.restoreFile(bucket, objectName, priority);
+        });
     }
 
     @Override
     public void restoreFile(String bucket, String objectName, Integer priority){
-
+//        ObjectMetadata objectMetadata = ossClient.getObjectMetadata(bucket, objectName);
+//
+//        // 校验Object是否为归档类型Object。
+//        StorageClass storageClass = objectMetadata.getObjectStorageClass();
+//        if (storageClass == StorageClass.ColdArchive) {
+//            // 设置解冻冷归档Object的优先级。
+//            // RestoreTier.RESTORE_TIER_EXPEDITED 表示1小时内完成解冻。
+//            // RestoreTier.RESTORE_TIER_STANDARD 表示2~5小时内完成解冻。
+//            // RestoreTier.RESTORE_TIER_BULK 表示5~12小时内完成解冻。
+//            RestoreTier restoreTier = null;
+//            switch (priority){
+//                case 1 :
+//                    restoreTier = RestoreTier.RESTORE_TIER_EXPEDITED;
+//                    break;
+//                case 2 :
+//                    restoreTier = RestoreTier.RESTORE_TIER_STANDARD;
+//                    break;
+//                default:
+//                    restoreTier = RestoreTier.RESTORE_TIER_BULK;
+//            }
+//            RestoreJobParameters jobParameters = new RestoreJobParameters(restoreTier);
+//            // 配置解冻参数,以设置5小时内解冻完成,解冻状态保持2天为例。
+//            // 第一个参数表示保持解冻状态的天数,默认是1天,此参数适用于解冻Archive(归档)与ColdArchive(冷归档)类型Object。
+//            // 第二个参数jobParameters表示解冻优先级,只适用于解冻ColdArchive类型Object。
+//            RestoreConfiguration configuration = new RestoreConfiguration(1, jobParameters);
+//            //开始解冻
+//            ossClient.restoreObject(bucket, objectName, configuration);
+////            // 等待解冻完成。
+////            do {
+////                try {
+////                    Thread.sleep(1000);
+////                } catch (InterruptedException e) {
+////                    e.printStackTrace();
+////                }
+////                objectMetadata = ossClient.getObjectMetadata(bucket, objectName);
+////            } while (!objectMetadata.isRestoreCompleted());
+//        }
     }
 
     @Override
@@ -356,4 +398,28 @@ public class S3FileService extends AbstractFYunFileService {
     public Integer getRestoreFolderProcess(String bucket, String url) {
         return null;
     }
+
+    @Override
+    public Long getSpace(String bucket, String key) {
+        List<String> keyList = new ArrayList<>();
+        Long total = 0L;
+        boolean flag = true;
+        String nextMaker = null;
+        ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
+        listObjectsRequest.setBucketName(bucket);
+        listObjectsRequest.setPrefix(key);
+        listObjectsRequest.setMaxKeys(200);
+
+        do {
+            listObjectsRequest.setMarker(nextMaker);
+            ObjectListing objectListing = s3.listObjects(listObjectsRequest);
+            List<S3ObjectSummary> objectSummaries = objectListing.getObjectSummaries();
+            Long space = objectSummaries.stream().mapToLong(S3ObjectSummary::getSize).sum();
+            total += space;
+            nextMaker = objectListing.getNextMarker();
+            flag = objectListing.isTruncated();
+        } while (flag);
+
+        return total;
+    }
 }