diff options
| author | Joel Klinghed <the_jk@spawned.biz> | 2024-08-25 02:31:59 +0200 |
|---|---|---|
| committer | Joel Klinghed <the_jk@spawned.biz> | 2024-08-25 02:31:59 +0200 |
| commit | 518f22558d23f7278474df30799dd24545689ab1 (patch) | |
| tree | 92cc43058b0216fa6f9a0b2d61bdedae96be265e /libs/io | |
| parent | a15cfde0fcbdb29dafdb9ebe39fe53c8da4073be (diff) | |
Document io classes
Diffstat (limited to 'libs/io')
6 files changed, 30 insertions, 0 deletions
diff --git a/libs/io/src/main/java/org/the_jk/cleversync/io/Directory.kt b/libs/io/src/main/java/org/the_jk/cleversync/io/Directory.kt index e653059..0b288fe 100644 --- a/libs/io/src/main/java/org/the_jk/cleversync/io/Directory.kt +++ b/libs/io/src/main/java/org/the_jk/cleversync/io/Directory.kt @@ -3,13 +3,19 @@ package org.the_jk.cleversync.io import androidx.lifecycle.LiveData interface Directory { + /** name of Directory, not full path */ val name: String + /** open existing sub directory, returns null if it doesn't exist */ fun openDir(name: String): Directory? + /** open existing sub file, returns null if it doesn't exist */ fun openFile(name: String): File? + /** open existing sub link, returns null if it doesn't exist */ fun openLink(name: String): Link? + /** return content of directory */ fun list(): Content + /** return live data of content of directory */ fun liveList(): LiveData<Content> data class Content( diff --git a/libs/io/src/main/java/org/the_jk/cleversync/io/File.kt b/libs/io/src/main/java/org/the_jk/cleversync/io/File.kt index 17f142a..ff66d6e 100644 --- a/libs/io/src/main/java/org/the_jk/cleversync/io/File.kt +++ b/libs/io/src/main/java/org/the_jk/cleversync/io/File.kt @@ -4,9 +4,13 @@ import java.io.InputStream import java.time.Instant interface File { + /** name of file, not full path */ val name: String + /** size of file */ val size: ULong + /** last time the file was modified */ val lastModified: Instant + /** read file */ fun read(): InputStream } diff --git a/libs/io/src/main/java/org/the_jk/cleversync/io/Link.kt b/libs/io/src/main/java/org/the_jk/cleversync/io/Link.kt index c05f29e..a20669b 100644 --- a/libs/io/src/main/java/org/the_jk/cleversync/io/Link.kt +++ b/libs/io/src/main/java/org/the_jk/cleversync/io/Link.kt @@ -1,8 +1,10 @@ package org.the_jk.cleversync.io interface Link { + /** name of link, not full path */ val name: String + /** read and resolve what link points to */ fun resolve(): LinkTarget sealed class LinkTarget diff --git a/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableDirectory.kt b/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableDirectory.kt index 8bddc2c..e82b0eb 100644 --- a/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableDirectory.kt +++ b/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableDirectory.kt @@ -3,21 +3,34 @@ package org.the_jk.cleversync.io import androidx.lifecycle.LiveData interface ModifiableDirectory : Directory { + /** same as openDir but returns a ModifiableDirectory */ fun modifiableOpenDir(name: String): ModifiableDirectory? + /** same as openFile but returns a ModifiableFile */ fun modifiableOpenFile(name: String): ModifiableFile? + /** same as openLink but returns a ModifiableLink */ fun modifiableOpenLink(name: String): ModifiableLink? + /** same as list() but items are modifiable versions */ fun modifiableList(): Content + /** same as liveList() but items are modifiable versions */ fun modifiableLiveList(): LiveData<Content> + /** create a directory and return the newly created entry */ fun createDirectory(name: String): ModifiableDirectory + /** create a file object, the file doesn't exist until written */ fun createFile(name: String): ModifiableFile + /** create a link pointing to a directory */ fun createLink(name: String, target: Directory): ModifiableLink + /** create a link pointing to a file */ fun createLink(name: String, target: File): ModifiableLink + /** create a link pointing to a path (doesn't need to exist) */ fun createLink(name: String, target: String): ModifiableLink + /** remove directory, recursively, returns true if directory was removed */ fun removeDirectory(name: String): Boolean + /** remove file, returns true if file was removed */ fun removeFile(name: String): Boolean + /** remove link (not target), returns true if link was removed */ fun removeLink(name: String): Boolean data class Content( diff --git a/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableFile.kt b/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableFile.kt index 8675dae..8a982d3 100644 --- a/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableFile.kt +++ b/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableFile.kt @@ -3,5 +3,6 @@ package org.the_jk.cleversync.io import java.io.OutputStream interface ModifiableFile : File { + /** create or truncate file and start writing to it */ fun write(): OutputStream } diff --git a/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableLink.kt b/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableLink.kt index 7dd565b..0510137 100644 --- a/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableLink.kt +++ b/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableLink.kt @@ -1,10 +1,14 @@ package org.the_jk.cleversync.io interface ModifiableLink : Link { + /** same as resolve() but returns modifiable entries */ fun modifiableResolve(): ModifiableLinkTarget + /** change link to point to target directory */ fun target(directory: Directory) + /** change link to point to target file */ fun target(file: File) + /** change link to point to target path (doesn't have to exist) */ fun target(name: String) sealed class ModifiableLinkTarget |
