summaryrefslogtreecommitdiff
path: root/libs/io/src
diff options
context:
space:
mode:
Diffstat (limited to 'libs/io/src')
-rw-r--r--libs/io/src/main/java/org/the_jk/cleversync/io/Directory.kt6
-rw-r--r--libs/io/src/main/java/org/the_jk/cleversync/io/File.kt4
-rw-r--r--libs/io/src/main/java/org/the_jk/cleversync/io/Link.kt2
-rw-r--r--libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableDirectory.kt13
-rw-r--r--libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableFile.kt1
-rw-r--r--libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableLink.kt4
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