diff --git a/src/main/lombok/org/warp/filesponge/SecureFileAccessor.java b/src/main/lombok/org/warp/filesponge/SecureFileAccessor.java index 75b20de..6726ee7 100644 --- a/src/main/lombok/org/warp/filesponge/SecureFileAccessor.java +++ b/src/main/lombok/org/warp/filesponge/SecureFileAccessor.java @@ -19,7 +19,7 @@ package org.warp.filesponge; import java.util.Optional; -import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; import org.jetbrains.annotations.NotNull; @@ -33,22 +33,22 @@ import org.warp.filesponge.value.FileURI; */ @AllArgsConstructor @EqualsAndHashCode -public class SecureFileAccessor implements FileAccessor { +public class SecureFileAccessor implements FileAccessor { - private final FileAccessor fileAccessor; + private final FileAccessor fileAccessor; @Override - public void delete(@NotNull FileURI fileURI) { + public void delete(@NotNull FURI fileURI) { fileAccessor.delete(fileURI); } @Override - public CompletableFuture> getContent(@NotNull FileURI fileURI, boolean offlineOnly) { + public CompletionStage> getContent(@NotNull FURI fileURI, boolean offlineOnly) { return fileAccessor.getContent(fileURI, offlineOnly); } @Override - public @NotNull FileStatus getStatus(@NotNull FileURI fileURI) { + public @NotNull FileStatus getStatus(@NotNull FURI fileURI) { return fileAccessor.getStatus(fileURI); } diff --git a/src/main/lombok/org/warp/filesponge/api/FileAccessor.java b/src/main/lombok/org/warp/filesponge/api/FileAccessor.java index 0e52606..c5a0fa6 100644 --- a/src/main/lombok/org/warp/filesponge/api/FileAccessor.java +++ b/src/main/lombok/org/warp/filesponge/api/FileAccessor.java @@ -19,7 +19,7 @@ package org.warp.filesponge.api; import java.util.Optional; -import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; import org.jetbrains.annotations.NotNull; import org.warp.filesponge.value.FileContent; import org.warp.filesponge.value.FileStatus; @@ -28,14 +28,14 @@ import org.warp.filesponge.value.FileURI; /** * FileAccessor can be used to access files from the client side */ -public interface FileAccessor { +public interface FileAccessor { /** * Request file deletion * * @param fileURI File URI */ - void delete(@NotNull FileURI fileURI); + void delete(@NotNull FURI fileURI); /** * Get file content @@ -44,7 +44,7 @@ public interface FileAccessor { * @param offlineOnly true to get the file from cache * @return content if found. If the request is offline the future will complete instantly */ - CompletableFuture> getContent(@NotNull FileURI fileURI, boolean offlineOnly); + CompletionStage> getContent(@NotNull FURI fileURI, boolean offlineOnly); /** * Get file status @@ -52,5 +52,5 @@ public interface FileAccessor { * @param fileURI File URI * @return status of this file */ - @NotNull FileStatus getStatus(@NotNull FileURI fileURI); + @NotNull FileStatus getStatus(@NotNull FURI fileURI); } diff --git a/src/main/lombok/org/warp/filesponge/api/FileActor.java b/src/main/lombok/org/warp/filesponge/api/FileActor.java index 42ccbfe..9e459e8 100644 --- a/src/main/lombok/org/warp/filesponge/api/FileActor.java +++ b/src/main/lombok/org/warp/filesponge/api/FileActor.java @@ -25,7 +25,7 @@ import org.warp.filesponge.value.FileURI; /** * FileActor sends signals to a mirror */ -public interface FileActor { +public interface FileActor { /** * Send a "delete file" signal @@ -33,7 +33,7 @@ public interface FileActor { * @param fileURI File URI * @return true if the signal can be sent */ - boolean deleteFile(FileURI fileURI); + boolean deleteFile(FURI fileURI); /** * Send a "download file" signal @@ -41,7 +41,7 @@ public interface FileActor { * @param fileURI File URI * @return true if the signal can be sent */ - boolean downloadFile(FileURI fileURI); + boolean downloadFile(FURI fileURI); /** * Check if this actor can handle signals for this file @@ -49,7 +49,7 @@ public interface FileActor { * @param fileURI File URI * @return true if the actor can send signals related to this file */ - boolean canHandleFile(FileURI fileURI); + boolean canHandleFile(FURI fileURI); /** * Send a "download file" signal diff --git a/src/main/lombok/org/warp/filesponge/api/FileSource.java b/src/main/lombok/org/warp/filesponge/api/FileSource.java index c8a31b5..d789967 100644 --- a/src/main/lombok/org/warp/filesponge/api/FileSource.java +++ b/src/main/lombok/org/warp/filesponge/api/FileSource.java @@ -27,7 +27,7 @@ import org.warp.filesponge.value.FileURI; /** * FileSource receives responses from a mirror */ -public interface FileSource { +public interface FileSource { /** * Called when the mirror is online @@ -42,14 +42,14 @@ public interface FileSource { /** * Called when the mirror notifies you that a new file exists */ - boolean onNewFile(@NotNull FileURI fileURI, @NotNull FileType fileType); + boolean onNewFile(@NotNull FURI fileURI, @NotNull FTYPE fileType); /** * Called when the mirror notifies you details about a file. *

* {@link this#onNewFile(FileURI, FileType)} must have been already called */ - void onFile(@NotNull FileURI fileURI, @NotNull FileSourceAvailability fileAvailability, long totalSize); + void onFile(@NotNull FURI fileURI, @NotNull FileSourceAvailability fileAvailability, long totalSize); /** * Called when the mirror notifies you the bytes of a part of a file. @@ -57,5 +57,5 @@ public interface FileSource { * {@link this#onNewFile(FileURI, FileType)} and {@link this#onFile(FileURI, FileSourceAvailability, long)} must * have been already called */ - void onFilePiece(@NotNull FileURI fileURI, long offset, long size, @NotNull ByteBuffer piece); + void onFilePiece(@NotNull FURI fileURI, long offset, long size, @NotNull ByteBuffer piece); } diff --git a/src/main/lombok/org/warp/filesponge/api/FileSpongeClient.java b/src/main/lombok/org/warp/filesponge/api/FileSpongeClient.java index 0bad767..0fb8ee5 100644 --- a/src/main/lombok/org/warp/filesponge/api/FileSpongeClient.java +++ b/src/main/lombok/org/warp/filesponge/api/FileSpongeClient.java @@ -19,11 +19,13 @@ package org.warp.filesponge.api; import org.warp.filesponge.SecureFileAccessor; +import org.warp.filesponge.value.FileContent; +import org.warp.filesponge.value.FileURI; /** * FileAccessor can be used to manage FileSponge and access files from the client side */ -public interface FileSpongeClient extends FileAccessor { +public interface FileSpongeClient extends FileAccessor { void optimizeStorage(); @@ -32,7 +34,7 @@ public interface FileSpongeClient extends FileAccessor { * * @return limited instance of itself */ - default FileAccessor asFileAccessor() { - return new SecureFileAccessor(this); + default FileAccessor asFileAccessor() { + return new SecureFileAccessor<>(this); } } diff --git a/src/main/lombok/org/warp/filesponge/api/FileStorage.java b/src/main/lombok/org/warp/filesponge/api/FileStorage.java new file mode 100644 index 0000000..6fdc48a --- /dev/null +++ b/src/main/lombok/org/warp/filesponge/api/FileStorage.java @@ -0,0 +1,32 @@ +/* + * FileSponge + * Copyright (C) 2020 Andrea Cavalli + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.warp.filesponge.api; + +import org.jetbrains.annotations.NotNull; +import org.warp.filesponge.value.FileContent; +import org.warp.filesponge.value.FileType; +import org.warp.filesponge.value.FileURI; +import org.warp.filesponge.value.MirrorURI; + +public interface FileStorage { + + void newFile(@NotNull FURI fileURI, @NotNull FTYPE fileType); + + FC readFileData(@NotNull FURI fileURI); +} diff --git a/src/main/lombok/org/warp/filesponge/extra/api/FileURITranslator.java b/src/main/lombok/org/warp/filesponge/extra/api/FileURITranslator.java index cc00d2a..19986f6 100644 --- a/src/main/lombok/org/warp/filesponge/extra/api/FileURITranslator.java +++ b/src/main/lombok/org/warp/filesponge/extra/api/FileURITranslator.java @@ -19,26 +19,25 @@ package org.warp.filesponge.extra.api; import java.util.Optional; -import java.util.OptionalLong; import org.warp.filesponge.value.FileURI; /** * Translate File URIs to "fileId" and back */ -public interface FileURITranslator { +public interface FileURITranslator { - Optional getURI(long fileId); + Optional getURI(FID fileId); - OptionalLong getFileId(FileURI fileURI); + Optional getFileId(FURI fileURI); /** * @throws AlreadyAssignedException Throw if the uri has another fileId assigned */ - void setFileId(FileURI fileURI, long fileId) throws AlreadyAssignedException; + void setFileId(FURI fileURI, FID fileId) throws AlreadyAssignedException; - Optional delete(long fileId); + Optional delete(FID fileId); - OptionalLong delete(FileURI fileURI); + Optional delete(FURI fileURI); void clear(); } diff --git a/src/main/lombok/org/warp/filesponge/extra/api/URIObfuscator.java b/src/main/lombok/org/warp/filesponge/extra/api/URIObfuscator.java index 965104f..e7d80a2 100644 --- a/src/main/lombok/org/warp/filesponge/extra/api/URIObfuscator.java +++ b/src/main/lombok/org/warp/filesponge/extra/api/URIObfuscator.java @@ -23,17 +23,17 @@ import org.warp.filesponge.value.FileURI; /** * Create an unique "fileId" for each File URI */ -public interface URIObfuscator { +public interface URIObfuscator { - FileURI deobfuscateFileId(long fileId); + FURI deobfuscateFileId(FID fileId); - void getFileId(FileURI fileURI); + void getFileId(FURI fileURI); - void setURIValue(FileURI fileURI, long fileId); + void setURIValue(FURI fileURI, FID fileId); - FileURI delete(long fileId); + FURI delete(FID fileId); - long delete(FileURI fileURI); + FID delete(FURI fileURI); void clear(); }