init devmenu models
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
package com.megboyzz.devmenu.domain.entities
|
||||
|
||||
val devmenuId = "DevMenu"
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.megboyzz.devmenu.domain.entities
|
||||
|
||||
import java.util.Date
|
||||
|
||||
data class FileProps(
|
||||
val fileName: String,
|
||||
val size: Int,
|
||||
val dateOfCreation: Date
|
||||
)
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.megboyzz.devmenu.domain.entities
|
||||
|
||||
enum class GameLang(private val lang: String) {
|
||||
System("sys"),
|
||||
Chinese("cn"),
|
||||
Dutch("nl"),
|
||||
English("en"),
|
||||
French("fr"),
|
||||
Deutsch("de"),
|
||||
Italian("it"),
|
||||
Japanese("ja"),
|
||||
Korean("kr"),
|
||||
Portuguese("br"),
|
||||
Russian("ru"),
|
||||
Spanish("es");
|
||||
|
||||
override fun toString() = lang
|
||||
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.megboyzz.devmenu.domain.entities
|
||||
|
||||
data class Settings(
|
||||
val enable: Boolean,
|
||||
val trackingInterval: Int,
|
||||
val pathToSaveTrackable: String,
|
||||
val lang: GameLang
|
||||
)
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.megboyzz.devmenu.domain.entities
|
||||
|
||||
import java.util.Date
|
||||
|
||||
data class SvmwProps(
|
||||
val description: String,
|
||||
val date: Date
|
||||
)
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package com.megboyzz.devmenu.domain.repository
|
||||
|
||||
import com.megboyzz.devmenu.domain.entities.FileProps
|
||||
import java.io.File
|
||||
|
||||
interface FilesRepository {
|
||||
|
||||
val internalRoot: File
|
||||
|
||||
val externalRoot: File
|
||||
|
||||
fun getFileProps(file: File): FileProps
|
||||
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package com.megboyzz.devmenu.domain.repository
|
||||
|
||||
import java.io.File
|
||||
|
||||
interface ReplacementRepository {
|
||||
|
||||
suspend fun replaceFile(what: File, to: File): Result<Boolean>
|
||||
|
||||
suspend fun recoverReplacement(replacement: File): Result<Boolean>
|
||||
|
||||
suspend fun getAllReplacements(): List<File>
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.megboyzz.devmenu.domain.repository
|
||||
|
||||
import java.io.File
|
||||
|
||||
interface SaveRepository {
|
||||
|
||||
suspend fun loadSaveFile(file: File): Boolean
|
||||
|
||||
suspend fun uploadCurrentSaveFile(fileToUpload: File): Boolean
|
||||
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package com.megboyzz.devmenu.domain.repository
|
||||
|
||||
import com.megboyzz.devmenu.domain.entities.Settings
|
||||
|
||||
interface SettingsRepository {
|
||||
|
||||
suspend fun getSettings(): Settings
|
||||
|
||||
suspend fun setSettings(settings: Settings)
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.megboyzz.devmenu.domain.repository
|
||||
|
||||
import com.megboyzz.devmenu.domain.entities.SvmwProps
|
||||
import java.io.File
|
||||
|
||||
interface SvmwRepository {
|
||||
|
||||
suspend fun createSvmwFromCurrentSaveFileAndSetIt(): Boolean
|
||||
|
||||
suspend fun createSvmwFromCurrentSaveFile(fileToSave: File): Boolean
|
||||
|
||||
suspend fun createSvmw(fileToSave: File, saveFile: File): Boolean
|
||||
|
||||
suspend fun loadSvmw(svmw: File): Boolean
|
||||
|
||||
suspend fun getInfoAboutSvmw(svmw: File): SvmwProps?
|
||||
|
||||
suspend fun getInfoAboutLoadedSvmw(): SvmwProps?
|
||||
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.files
|
||||
|
||||
import com.megboyzz.devmenu.domain.repository.FilesRepository
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
class GetExternalFilesUseCase @Inject constructor(
|
||||
private val filesRepository: FilesRepository
|
||||
) {
|
||||
operator fun invoke(childPath: String = ""): File = File(filesRepository.externalRoot, childPath)
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.files
|
||||
|
||||
import com.megboyzz.devmenu.domain.entities.FileProps
|
||||
import com.megboyzz.devmenu.domain.repository.FilesRepository
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
class GetFilePropsUseCase @Inject constructor(
|
||||
private val filesRepository: FilesRepository
|
||||
) {
|
||||
operator fun invoke(file: File): FileProps = filesRepository.getFileProps(file)
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.files
|
||||
|
||||
import com.megboyzz.devmenu.domain.repository.FilesRepository
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
class GetInternalFilesUseCase @Inject constructor(
|
||||
private val filesRepository: FilesRepository
|
||||
) {
|
||||
|
||||
operator fun invoke(childPath: String = ""): File = File(filesRepository.internalRoot, childPath)
|
||||
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.files
|
||||
|
||||
import java.io.File
|
||||
|
||||
class RemoveFileUseCase {
|
||||
operator fun invoke(file: File): Boolean = file.delete()
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.files
|
||||
|
||||
import com.megboyzz.devmenu.domain.repository.FilesRepository
|
||||
import javax.inject.Inject
|
||||
|
||||
class RemoveInternalDataUseCase @Inject constructor(
|
||||
private val filesRepository: FilesRepository
|
||||
) {
|
||||
operator fun invoke(): Boolean{
|
||||
val listFiles = filesRepository.internalRoot.listFiles() ?: return false
|
||||
listFiles.forEach { it.deleteRecursively() }
|
||||
return true
|
||||
}
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.files
|
||||
|
||||
import com.megboyzz.devmenu.domain.repository.ReplacementRepository
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
class ReplaceFileUseCase @Inject constructor(
|
||||
private val replacementRepository: ReplacementRepository
|
||||
) {
|
||||
|
||||
suspend operator fun invoke(what: File, to: File): Result<Boolean>
|
||||
= replacementRepository.replaceFile(what, to)
|
||||
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.replacement
|
||||
|
||||
import com.megboyzz.devmenu.domain.repository.ReplacementRepository
|
||||
import javax.inject.Inject
|
||||
|
||||
class GetAllReplacedFilesUseCase @Inject constructor(
|
||||
private val replacementRepository: ReplacementRepository
|
||||
) {
|
||||
suspend operator fun invoke() = replacementRepository.getAllReplacements()
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.replacement
|
||||
|
||||
import javax.inject.Inject
|
||||
|
||||
class RecoverAllReplacementsUseCase @Inject constructor(
|
||||
private val getAllReplacedFilesUseCase: GetAllReplacedFilesUseCase,
|
||||
private val recoverReplacementUseCase: RecoverReplacementUseCase
|
||||
) {
|
||||
suspend operator fun invoke(){
|
||||
val listReplacedFiles = getAllReplacedFilesUseCase()
|
||||
listReplacedFiles.forEach { recoverReplacementUseCase(it) }
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.replacement
|
||||
|
||||
import com.megboyzz.devmenu.domain.repository.ReplacementRepository
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
class RecoverReplacementUseCase @Inject constructor(
|
||||
private val replacementRepository: ReplacementRepository
|
||||
) {
|
||||
suspend operator fun invoke(replacement: File) = replacementRepository.recoverReplacement(replacement)
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.save
|
||||
|
||||
import com.megboyzz.devmenu.domain.repository.SaveRepository
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
class LoadSaveFileUseCase @Inject constructor(
|
||||
private val saveRepository: SaveRepository
|
||||
) {
|
||||
suspend operator fun invoke(file: File) = if(file.exists()) saveRepository.loadSaveFile(file) else false
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.save
|
||||
|
||||
import com.megboyzz.devmenu.domain.repository.SaveRepository
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
class UploadSaveFileUseCase @Inject constructor(
|
||||
private val saveRepository: SaveRepository
|
||||
) {
|
||||
suspend operator fun invoke(fileToUpload: File) =
|
||||
if(fileToUpload.exists())
|
||||
saveRepository.uploadCurrentSaveFile(fileToUpload)
|
||||
else
|
||||
false
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.settings
|
||||
|
||||
import com.megboyzz.devmenu.domain.entities.Settings
|
||||
import com.megboyzz.devmenu.domain.repository.SettingsRepository
|
||||
import javax.inject.Inject
|
||||
|
||||
class GetSettingsUseCase @Inject constructor(
|
||||
private val settingsRepository: SettingsRepository
|
||||
) {
|
||||
suspend operator fun invoke(): Settings = settingsRepository.getSettings()
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.settings
|
||||
|
||||
import com.megboyzz.devmenu.domain.entities.Settings
|
||||
import com.megboyzz.devmenu.domain.repository.SettingsRepository
|
||||
import javax.inject.Inject
|
||||
|
||||
class SetSettingsUseCase @Inject constructor(
|
||||
private val settingsRepository: SettingsRepository
|
||||
) {
|
||||
suspend operator fun invoke(settings: Settings) = settingsRepository.setSettings(settings)
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.settings
|
||||
|
||||
import com.megboyzz.devmenu.domain.entities.devmenuId
|
||||
import com.megboyzz.devmenu.domain.repository.FilesRepository
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
class TurnOffDevMenuUseCase @Inject constructor(
|
||||
private val filesRepository: FilesRepository
|
||||
) {
|
||||
operator fun invoke() = File(filesRepository.externalRoot, devmenuId).delete()
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.svmw
|
||||
|
||||
import com.megboyzz.devmenu.domain.repository.SvmwRepository
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
class CreateSvmwFileUseCase @Inject constructor(
|
||||
private val svmwRepository: SvmwRepository
|
||||
) {
|
||||
|
||||
suspend operator fun invoke(
|
||||
fileToSave: File? = null,
|
||||
saveFile: File? = null
|
||||
){
|
||||
|
||||
val a = fileToSave != null
|
||||
val b = saveFile != null
|
||||
|
||||
when {
|
||||
a && b -> svmwRepository.createSvmw(fileToSave!!, saveFile!!)
|
||||
a && !b -> svmwRepository.createSvmwFromCurrentSaveFile(fileToSave!!)
|
||||
!a && !b -> svmwRepository.createSvmwFromCurrentSaveFileAndSetIt()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.svmw
|
||||
|
||||
import com.megboyzz.devmenu.domain.repository.SvmwRepository
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
class GetSvmwFilePropsUseCase @Inject constructor(
|
||||
private val svmwRepository: SvmwRepository
|
||||
) {
|
||||
suspend operator fun invoke(file: File) = svmwRepository.getInfoAboutSvmw(file)
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.svmw
|
||||
|
||||
import com.megboyzz.devmenu.domain.repository.SvmwRepository
|
||||
import javax.inject.Inject
|
||||
|
||||
class GetSvmwPropsUseCase @Inject constructor(
|
||||
private val svmwRepository: SvmwRepository
|
||||
) {
|
||||
suspend operator fun invoke() = svmwRepository.getInfoAboutLoadedSvmw()
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package com.megboyzz.devmenu.domain.usecases.svmw
|
||||
|
||||
import com.megboyzz.devmenu.domain.repository.SvmwRepository
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
class LoadSvmwUseCase @Inject constructor(
|
||||
private val svmwRepository: SvmwRepository
|
||||
) {
|
||||
suspend operator fun invoke(file: File) = if(file.exists()) svmwRepository.loadSvmw(file) else false
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
import com.megboyzz.devmenu.domain.repository.FilesRepository
|
||||
import com.megboyzz.devmenu.domain.repository.ReplacementRepository
|
||||
import com.megboyzz.devmenu.domain.repository.SaveRepository
|
||||
import com.megboyzz.devmenu.domain.repository.SettingsRepository
|
||||
import com.megboyzz.devmenu.domain.repository.SvmwRepository
|
||||
import org.mockito.Mockito.mock
|
||||
import org.mockito.Mockito.`when`
|
||||
import java.io.File
|
||||
import kotlin.coroutines.coroutineContext
|
||||
|
||||
class UseCaseTest {
|
||||
|
||||
private val filesRepository = mock(FilesRepository::class.java)
|
||||
private val replacementRepository = mock(ReplacementRepository::class.java)
|
||||
private val saveRepository = mock(SaveRepository::class.java)
|
||||
private val settingsRepository = mock(SettingsRepository::class.java)
|
||||
private val svmwRepository = mock(SvmwRepository::class.java)
|
||||
|
||||
private val externalFile = File("D:\\NFSMW Online\\com.ea.games.nfs13_na")
|
||||
private val internalFile = File("D:\\NFSMW Online")
|
||||
|
||||
init {
|
||||
|
||||
`when`(filesRepository.externalRoot).thenReturn(externalFile)
|
||||
`when`(filesRepository.internalRoot).thenReturn(internalFile)
|
||||
|
||||
|
||||
//`when`(replacementRepository.getAllReplacements()).thenReturn()
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user