diff --git a/data/src/main/java/org/cryptomator/data/cloud/pcloud/PCloudFile.java b/data/src/main/java/org/cryptomator/data/cloud/pcloud/PCloudFile.java new file mode 100644 index 00000000..efca898f --- /dev/null +++ b/data/src/main/java/org/cryptomator/data/cloud/pcloud/PCloudFile.java @@ -0,0 +1,62 @@ +package org.cryptomator.data.cloud.pcloud; + +import org.cryptomator.domain.Cloud; +import org.cryptomator.domain.CloudFile; +import org.cryptomator.util.Optional; + +import java.util.Date; + +class PCloudFile implements CloudFile, PCloudNode { + + private final PCloudFolder parent; + private final Long fileid; + private final String name; + private final String path; + private final Optional size; + private final Optional modified; + + public PCloudFile(PCloudFolder parent, Long fileid, String name, String path, Optional size, Optional modified) { + this.parent = parent; + this.fileid = fileid; + this.name = name; + this.path = path; + this.size = size; + this.modified = modified; + } + + @Override + public Cloud getCloud() { + return parent.getCloud(); + } + + @Override + public Long getId() { + return fileid; + } + + @Override + public String getName() { + return name; + } + + @Override + public String getPath() { + return path; + } + + @Override + public PCloudFolder getParent() { + return parent; + } + + @Override + public Optional getSize() { + return size; + } + + @Override + public Optional getModified() { + return modified; + } + +} diff --git a/data/src/main/java/org/cryptomator/data/cloud/pcloud/PCloudFolder.java b/data/src/main/java/org/cryptomator/data/cloud/pcloud/PCloudFolder.java new file mode 100644 index 00000000..fc57bb0d --- /dev/null +++ b/data/src/main/java/org/cryptomator/data/cloud/pcloud/PCloudFolder.java @@ -0,0 +1,49 @@ +package org.cryptomator.data.cloud.pcloud; + +import org.cryptomator.domain.Cloud; +import org.cryptomator.domain.CloudFolder; + +class PCloudFolder implements CloudFolder, PCloudNode { + + private final PCloudFolder parent; + private final Long folderid; + private final String name; + private final String path; + + public PCloudFolder(PCloudFolder parent, Long folderid, String name, String path) { + this.parent = parent; + this.folderid = folderid; + this.name = name; + this.path = path; + } + + @Override + public Cloud getCloud() { + return parent.getCloud(); + } + + @Override + public Long getId() { + return folderid; + } + + @Override + public String getName() { + return name; + } + + @Override + public String getPath() { + return path; + } + + @Override + public PCloudFolder getParent() { + return parent; + } + + @Override + public PCloudFolder withCloud(Cloud cloud) { + return new PCloudFolder(parent.withCloud(cloud), folderid, name, path); + } +} diff --git a/data/src/main/java/org/cryptomator/data/cloud/pcloud/PCloudNode.java b/data/src/main/java/org/cryptomator/data/cloud/pcloud/PCloudNode.java new file mode 100644 index 00000000..c9b03334 --- /dev/null +++ b/data/src/main/java/org/cryptomator/data/cloud/pcloud/PCloudNode.java @@ -0,0 +1,9 @@ +package org.cryptomator.data.cloud.pcloud; + +import org.cryptomator.domain.CloudNode; + +interface PCloudNode extends CloudNode { + + Long getId(); + +} diff --git a/data/src/main/java/org/cryptomator/data/cloud/pcloud/RootPCloudFolder.java b/data/src/main/java/org/cryptomator/data/cloud/pcloud/RootPCloudFolder.java new file mode 100644 index 00000000..60fc42e2 --- /dev/null +++ b/data/src/main/java/org/cryptomator/data/cloud/pcloud/RootPCloudFolder.java @@ -0,0 +1,25 @@ +package org.cryptomator.data.cloud.pcloud; + +import org.cryptomator.domain.Cloud; +import org.cryptomator.domain.PCloudCloud; + +class RootPCloudFolder extends PCloudFolder { + + private final PCloudCloud cloud; + private static final long rootFolderId = 0L; + + public RootPCloudFolder(PCloudCloud cloud) { + super(null, rootFolderId, "", ""); + this.cloud = cloud; + } + + @Override + public PCloudCloud getCloud() { + return cloud; + } + + @Override + public PCloudFolder withCloud(Cloud cloud) { + return new RootPCloudFolder((PCloudCloud) cloud); + } +}