feat(S3): implement S3CloudNodeFactory

This commit is contained in:
Manuel Jenny 2021-04-19 10:34:22 +02:00
parent 00a63228c1
commit 250e711d4a
No known key found for this signature in database
GPG Key ID: 1C80FE62B2BEAA18

View File

@ -1,15 +1,13 @@
package org.cryptomator.data.cloud.s3;
import com.pcloud.sdk.RemoteEntry;
import com.pcloud.sdk.RemoteFile;
import com.pcloud.sdk.RemoteFolder;
import com.amazonaws.services.s3.model.S3ObjectSummary;
import org.cryptomator.util.Optional;
class S3CloudNodeFactory {
public static S3File file(S3Folder parent, RemoteFile file) {
return new S3File(parent, file.name(), getNodePath(parent, file.name()), Optional.ofNullable(file.size()), Optional.ofNullable(file.lastModified()));
public static S3File file(S3Folder parent, S3ObjectSummary file) {
return new S3File(parent, file.getKey(), getNodePath(parent, file.getKey()), Optional.ofNullable(file.getSize()), Optional.ofNullable(file.getLastModified()));
}
public static S3File file(S3Folder parent, String name, Optional<Long> size) {
@ -20,8 +18,8 @@ class S3CloudNodeFactory {
return new S3File(folder, name, path, size, Optional.empty());
}
public static S3Folder folder(S3Folder parent, RemoteFolder folder) {
return new S3Folder(parent, folder.name(), getNodePath(parent, folder.name()));
public static S3Folder folder(S3Folder parent, S3ObjectSummary folder) {
return new S3Folder(parent, folder.getKey(), getNodePath(parent, folder.getKey()));
}
public static S3Folder folder(S3Folder parent, String name) {
@ -36,11 +34,11 @@ class S3CloudNodeFactory {
return parent.getPath() + "/" + name;
}
public static S3Node from(S3Folder parent, RemoteEntry remoteEntry) {
if (remoteEntry instanceof RemoteFile) {
return file(parent, remoteEntry.asFile());
public static S3Node from(S3Folder parent, S3ObjectSummary objectSummary) {
if (objectSummary.getKey().endsWith("/")) {
return folder(parent, objectSummary);
} else {
return folder(parent, remoteEntry.asFolder());
return file(parent, objectSummary);
}
}