From bb4572b9d01e0ee521cca4d842b9e8e642c76eaf Mon Sep 17 00:00:00 2001 From: Manuel Jenny Date: Fri, 12 Mar 2021 16:06:43 +0100 Subject: [PATCH] feat(Data): introduce PCloudCloudNodeFactory --- .../cloud/pcloud/PCloudCloudNodeFactory.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 data/src/main/java/org/cryptomator/data/cloud/pcloud/PCloudCloudNodeFactory.java diff --git a/data/src/main/java/org/cryptomator/data/cloud/pcloud/PCloudCloudNodeFactory.java b/data/src/main/java/org/cryptomator/data/cloud/pcloud/PCloudCloudNodeFactory.java new file mode 100644 index 00000000..2294d63a --- /dev/null +++ b/data/src/main/java/org/cryptomator/data/cloud/pcloud/PCloudCloudNodeFactory.java @@ -0,0 +1,40 @@ +package org.cryptomator.data.cloud.pcloud; + +import com.pcloud.sdk.RemoteEntry; +import com.pcloud.sdk.RemoteFile; +import com.pcloud.sdk.RemoteFolder; + +import org.cryptomator.util.Optional; + +class PCloudCloudNodeFactory { + + public static PCloudFile from(PCloudFolder parent, RemoteFile metadata) { + + return new PCloudFile(parent, metadata.fileId(), metadata.name(), getNodePath(parent, metadata.name()), Optional.ofNullable(metadata.size()), Optional.ofNullable(metadata.lastModified())); + } + + public static PCloudFile file(PCloudFolder parent, String name, Optional size, String path) { + return new PCloudFile(parent, null, name, path, size, Optional.empty()); + } + + public static PCloudFolder from(PCloudFolder parent, RemoteFolder metadata) { + return new PCloudFolder(parent, metadata.folderId(), metadata.name(), getNodePath(parent, metadata.name())); + } + + private static String getNodePath(PCloudFolder parent, String name) { + return parent.getPath() + "/" + name; + } + + public static PCloudFolder folder(PCloudFolder parent, String name, String path) { + return new PCloudFolder(parent, null, name, path); + } + + public static PCloudNode from(PCloudFolder parent, RemoteEntry metadata) { + if (metadata instanceof RemoteFile) { + return from(parent, (RemoteFile) metadata); + } else { + return from(parent, (RemoteFolder) metadata); + } + } + +}