diff --git a/storage-api/src/main/java/com/omh/android/storage/api/OmhStorageClient.kt b/storage-api/src/main/java/com/omh/android/storage/api/OmhStorageClient.kt new file mode 100644 index 00000000..d0810c97 --- /dev/null +++ b/storage-api/src/main/java/com/omh/android/storage/api/OmhStorageClient.kt @@ -0,0 +1,12 @@ +package com.omh.android.storage.api + +import android.content.Context + +interface OmhStorageClient { + + interface Builder { + fun build(context: Context): OmhStorageClient + } + + fun setupAccessToken(token: String) +} diff --git a/storage-api/src/main/java/com/omh/android/storage/api/OmhStorageFactory.kt b/storage-api/src/main/java/com/omh/android/storage/api/OmhStorageFactory.kt new file mode 100644 index 00000000..835cad1f --- /dev/null +++ b/storage-api/src/main/java/com/omh/android/storage/api/OmhStorageFactory.kt @@ -0,0 +1,7 @@ +package com.omh.android.storage.api + +import android.content.Context + +interface OmhStorageFactory { + fun getStorageClient(context: Context): OmhStorageClient +} diff --git a/storage-api/src/main/java/com/omh/android/storage/api/OmhStorageProvider.kt b/storage-api/src/main/java/com/omh/android/storage/api/OmhStorageProvider.kt new file mode 100644 index 00000000..b732bb43 --- /dev/null +++ b/storage-api/src/main/java/com/omh/android/storage/api/OmhStorageProvider.kt @@ -0,0 +1,16 @@ +package com.omh.android.storage.api + +import android.content.Context +import kotlin.reflect.KClass + +object OmhStorageProvider { + + private const val NGMS_ADDRESS = "com.omh.android.storage.api.drive.nongms.OmhStorageFactoryImpl" + + @SuppressWarnings("SwallowedException") + fun provideStorageClient(context: Context): OmhStorageClient { + val clazz: KClass = Class.forName(NGMS_ADDRESS).kotlin + val omhStorageFactory = clazz.objectInstance as OmhStorageFactory + return omhStorageFactory.getStorageClient(context) + } +} diff --git a/storage-api/src/main/java/com/omh/android/storage/api/data/datasource/network/FilesFoldersNetworkDataSource.kt b/storage-api/src/main/java/com/omh/android/storage/api/data/datasource/network/FilesFoldersNetworkDataSource.kt index 17c7ea5e..d6488ba7 100644 --- a/storage-api/src/main/java/com/omh/android/storage/api/data/datasource/network/FilesFoldersNetworkDataSource.kt +++ b/storage-api/src/main/java/com/omh/android/storage/api/data/datasource/network/FilesFoldersNetworkDataSource.kt @@ -1,5 +1,7 @@ package com.omh.android.storage.api.data.datasource.network +import com.omh.android.storage.api.data.model.RemoteFileOrFolder + interface FilesFoldersNetworkDataSource { - fun getAll() + fun getAll(): List } diff --git a/storage-api/src/main/java/com/omh/android/storage/api/data/mapper/DataMappers.kt b/storage-api/src/main/java/com/omh/android/storage/api/data/mapper/DataMappers.kt index 3d122397..0ed11aba 100644 --- a/storage-api/src/main/java/com/omh/android/storage/api/data/mapper/DataMappers.kt +++ b/storage-api/src/main/java/com/omh/android/storage/api/data/mapper/DataMappers.kt @@ -1 +1,32 @@ package com.omh.android.storage.api.data.mapper + +import com.omh.android.storage.api.data.model.RemoteFile +import com.omh.android.storage.api.data.model.RemoteFileOrFolder +import com.omh.android.storage.api.data.model.RemoteFolder +import com.omh.android.storage.api.domain.model.File +import com.omh.android.storage.api.domain.model.FileOrFolder +import com.omh.android.storage.api.domain.model.Folder + +fun fromFilesFoldersRemoteListToDomain(inputList: List): List { + val outputList = mutableListOf() + if (inputList.isEmpty()) { + return outputList + } + for (gDriveFileOrFolder in inputList) { + outputList.add( + if (gDriveFileOrFolder is RemoteFile) { + File( + gDriveFileOrFolder.name, + gDriveFileOrFolder.ext, + gDriveFileOrFolder.lastModDate + ) + } else { + Folder( + (gDriveFileOrFolder as RemoteFolder).name, + gDriveFileOrFolder.lastModDate + ) + } + ) + } + return outputList +} diff --git a/storage-api/src/main/java/com/omh/android/storage/api/data/model/DataModel.kt b/storage-api/src/main/java/com/omh/android/storage/api/data/model/DataModel.kt index 1071ee79..0f6968a1 100644 --- a/storage-api/src/main/java/com/omh/android/storage/api/data/model/DataModel.kt +++ b/storage-api/src/main/java/com/omh/android/storage/api/data/model/DataModel.kt @@ -1 +1,14 @@ package com.omh.android.storage.api.data.model + +interface RemoteFileOrFolder + +data class RemoteFile( + val name: String = "", + val ext: String = "", + val lastModDate: Long = 0L +) : RemoteFileOrFolder + +data class RemoteFolder( + val name: String = "", + val lastModDate: Long = 0L +) : RemoteFileOrFolder diff --git a/storage-api/src/main/java/com/omh/android/storage/api/data/repository/FilesFoldersDataRepository.kt b/storage-api/src/main/java/com/omh/android/storage/api/data/repository/FilesFoldersDataRepository.kt new file mode 100644 index 00000000..37b27424 --- /dev/null +++ b/storage-api/src/main/java/com/omh/android/storage/api/data/repository/FilesFoldersDataRepository.kt @@ -0,0 +1,13 @@ +package com.omh.android.storage.api.data.repository + +import com.omh.android.storage.api.data.datasource.network.FilesFoldersNetworkDataSource +import com.omh.android.storage.api.data.mapper.fromFilesFoldersRemoteListToDomain +import com.omh.android.storage.api.domain.abstraction.FilesFoldersRepository + +class FilesFoldersDataRepository( + private val networkDataSource: FilesFoldersNetworkDataSource +) : FilesFoldersRepository { + override fun getAll() = fromFilesFoldersRemoteListToDomain( + networkDataSource.getAll() + ) +} diff --git a/storage-api/src/main/java/com/omh/android/storage/api/domain/abstraction/FilesFoldersRepository.kt b/storage-api/src/main/java/com/omh/android/storage/api/domain/abstraction/FilesFoldersRepository.kt index 40f75f12..864de08e 100644 --- a/storage-api/src/main/java/com/omh/android/storage/api/domain/abstraction/FilesFoldersRepository.kt +++ b/storage-api/src/main/java/com/omh/android/storage/api/domain/abstraction/FilesFoldersRepository.kt @@ -1,5 +1,7 @@ package com.omh.android.storage.api.domain.abstraction +import com.omh.android.storage.api.domain.model.FileOrFolder + interface FilesFoldersRepository { - fun getAll() + fun getAll(): List } diff --git a/storage-api/src/main/java/com/omh/android/storage/api/domain/model/DomainModel.kt b/storage-api/src/main/java/com/omh/android/storage/api/domain/model/DomainModel.kt index 0f6ab521..58492356 100644 --- a/storage-api/src/main/java/com/omh/android/storage/api/domain/model/DomainModel.kt +++ b/storage-api/src/main/java/com/omh/android/storage/api/domain/model/DomainModel.kt @@ -1 +1,17 @@ package com.omh.android.storage.api.domain.model + +interface FileOrFolder { + val name: String + val modificationDate: Long +} + +data class File( + override val name: String, + val extension: String, + override val modificationDate: Long +) : FileOrFolder + +data class Folder( + override val name: String, + override val modificationDate: Long +) : FileOrFolder diff --git a/storage-api/src/main/java/com/omh/android/storage/api/domain/usecase/GetAllFilesAndFolders.kt b/storage-api/src/main/java/com/omh/android/storage/api/domain/usecase/GetAllFilesAndFolders.kt index 997da9af..59c78926 100644 --- a/storage-api/src/main/java/com/omh/android/storage/api/domain/usecase/GetAllFilesAndFolders.kt +++ b/storage-api/src/main/java/com/omh/android/storage/api/domain/usecase/GetAllFilesAndFolders.kt @@ -1,5 +1,7 @@ package com.omh.android.storage.api.domain.usecase +import com.omh.android.storage.api.domain.model.FileOrFolder + interface GetAllFilesAndFolders { - fun execute() + fun execute(): List } diff --git a/storage-api/src/main/java/com/omh/android/storage/api/domain/usecase/GetAllFilesAndFoldersUseCase.kt b/storage-api/src/main/java/com/omh/android/storage/api/domain/usecase/GetAllFilesAndFoldersUseCase.kt new file mode 100644 index 00000000..066e1f0e --- /dev/null +++ b/storage-api/src/main/java/com/omh/android/storage/api/domain/usecase/GetAllFilesAndFoldersUseCase.kt @@ -0,0 +1,9 @@ +package com.omh.android.storage.api.domain.usecase + +import com.omh.android.storage.api.domain.abstraction.FilesFoldersRepository + +class GetAllFilesAndFoldersUseCase( + private val repository: FilesFoldersRepository +) : GetAllFilesAndFolders { + override fun execute() = repository.getAll() +}