From a8633778089c0a96ac26ca0f51a629a042dab49c Mon Sep 17 00:00:00 2001 From: Menna Srour Date: Thu, 15 May 2025 13:54:46 +0300 Subject: [PATCH] use validateId.kt --- src/main/kotlin/di/useCaseModule.kt | 2 +- .../usecase/audit_system/GetAuditLogsByProjectIdUseCase.kt | 6 +++--- .../usecase/audit_system/GetAuditLogsByTaskIdUseCase.kt | 4 ++-- .../usecase/audit_system/GetAuditLogsByUserIdUseCase.kt | 6 +++--- .../domain/usecase/auth_service/GetUserByIDUseCase.kt | 6 +++--- .../kotlin/domain/usecase/project/DeleteProjectUseCase.kt | 7 +++---- .../kotlin/domain/usecase/project/GetProjectByIdUseCase.kt | 6 +++--- .../kotlin/domain/usecase/task/ChangeTaskStateUseCase.kt | 6 +++--- src/main/kotlin/domain/usecase/task/DeleteTaskUseCase.kt | 4 ++-- src/main/kotlin/domain/usecase/task/GetTaskByIdUseCase.kt | 6 +++--- .../kotlin/domain/usecase/task/GetTasksByProjectUseCase.kt | 6 +++--- .../domain/usecase/task_state/DeleteTaskStateUseCase.kt | 6 +++--- .../task_state/GetAllTaskStatesByProjectIdUseCase.kt | 6 +++--- .../domain/usecase/task_state/GetTaskStateByIdUseCase.kt | 6 +++--- .../usecase/task_state/GetTaskStateByTaskIdUseCase.kt | 6 ++---- .../usecase/task_state/GetTasksByTaskStateIdUseCase.kt | 4 ++-- src/main/kotlin/domain/usecase/utils/validateId.kt | 4 ++++ .../usecase/task_state/GetTaskStateByTaskIdUseCaseTest.kt | 2 +- 18 files changed, 47 insertions(+), 46 deletions(-) create mode 100644 src/main/kotlin/domain/usecase/utils/validateId.kt diff --git a/src/main/kotlin/di/useCaseModule.kt b/src/main/kotlin/di/useCaseModule.kt index f2b42a5..829ddff 100644 --- a/src/main/kotlin/di/useCaseModule.kt +++ b/src/main/kotlin/di/useCaseModule.kt @@ -53,7 +53,7 @@ val useCaseModule = module { single { DeleteTaskStateUseCase(get()) } single { GetAllTaskStatesByProjectIdUseCase(get(), get()) } single { GetTaskStateByIdUseCase(get()) } - single { GetTaskStateByTaskIdUseCase(get(), get()) } + single { GetTaskStateByTaskIdUseCase(get()) } single { GetTasksByTaskStateIdUseCase(get()) } single { UpdateTaskStateUseCase(get()) } single { GetAllTaskStatesUseCase(get()) } diff --git a/src/main/kotlin/domain/usecase/audit_system/GetAuditLogsByProjectIdUseCase.kt b/src/main/kotlin/domain/usecase/audit_system/GetAuditLogsByProjectIdUseCase.kt index be710be..92a428d 100644 --- a/src/main/kotlin/domain/usecase/audit_system/GetAuditLogsByProjectIdUseCase.kt +++ b/src/main/kotlin/domain/usecase/audit_system/GetAuditLogsByProjectIdUseCase.kt @@ -3,6 +3,7 @@ package com.berlin.domain.usecase.audit_system import com.berlin.domain.exception.InvalidProjectIdException import com.berlin.domain.model.AuditLog import com.berlin.domain.repository.AuditRepository +import com.berlin.domain.usecase.utils.isIDValid class GetAuditLogsByProjectIdUseCase( private val auditRepository: AuditRepository @@ -10,12 +11,11 @@ class GetAuditLogsByProjectIdUseCase( operator fun invoke(projectId: String): List { - if (!validateProjectId(projectId)) + if (isIDValid(projectId).not()) throw InvalidProjectIdException("Project ID must not be empty, blank, or purely numeric") return auditRepository.getAuditLogsByProjectId(projectId) } - private fun validateProjectId(projectId: String): Boolean = - projectId.isNotBlank() && !(projectId.all { it.isDigit() }) + } \ No newline at end of file diff --git a/src/main/kotlin/domain/usecase/audit_system/GetAuditLogsByTaskIdUseCase.kt b/src/main/kotlin/domain/usecase/audit_system/GetAuditLogsByTaskIdUseCase.kt index 22b209e..bf4277f 100644 --- a/src/main/kotlin/domain/usecase/audit_system/GetAuditLogsByTaskIdUseCase.kt +++ b/src/main/kotlin/domain/usecase/audit_system/GetAuditLogsByTaskIdUseCase.kt @@ -3,6 +3,7 @@ package com.berlin.domain.usecase.audit_system import com.berlin.domain.exception.InvalidTaskIdException import com.berlin.domain.model.AuditLog import com.berlin.domain.repository.AuditRepository +import com.berlin.domain.usecase.utils.isIDValid class GetAuditLogsByTaskIdUseCase( private val auditRepository: AuditRepository, @@ -10,10 +11,9 @@ class GetAuditLogsByTaskIdUseCase( operator fun invoke(taskId: String): List { - if (!validateTaskId(taskId)) throw InvalidTaskIdException("Task ID must not be empty, blank, or purely numeric") + if (isIDValid(taskId).not()) throw InvalidTaskIdException("Task ID must not be empty, blank, or purely numeric") return auditRepository.getAuditLogsByTaskId(taskId) } - private fun validateTaskId(projectId: String): Boolean = projectId.isNotBlank() && !(projectId.all { it.isDigit() }) } \ No newline at end of file diff --git a/src/main/kotlin/domain/usecase/audit_system/GetAuditLogsByUserIdUseCase.kt b/src/main/kotlin/domain/usecase/audit_system/GetAuditLogsByUserIdUseCase.kt index 92508c7..c934da6 100644 --- a/src/main/kotlin/domain/usecase/audit_system/GetAuditLogsByUserIdUseCase.kt +++ b/src/main/kotlin/domain/usecase/audit_system/GetAuditLogsByUserIdUseCase.kt @@ -3,6 +3,7 @@ package com.berlin.domain.usecase.audit_system import com.berlin.domain.exception.InvalidUserIdException import com.berlin.domain.model.AuditLog import com.berlin.domain.repository.AuditRepository +import com.berlin.domain.usecase.utils.isIDValid class GetAuditLogsByUserIdUseCase( private val auditRepository: AuditRepository @@ -10,13 +11,12 @@ class GetAuditLogsByUserIdUseCase( operator fun invoke(userId:String): List{ - if (!validateUserId(userId)) + if (isIDValid(userId).not()) throw InvalidUserIdException("User ID must not be empty, blank, or purely numeric") return auditRepository.getAuditLogsByUserId(userId) } - private fun validateUserId(projectId: String): Boolean = - projectId.isNotBlank() && !(projectId.all { it.isDigit() }) + } \ No newline at end of file diff --git a/src/main/kotlin/domain/usecase/auth_service/GetUserByIDUseCase.kt b/src/main/kotlin/domain/usecase/auth_service/GetUserByIDUseCase.kt index 8308c85..d9d5806 100644 --- a/src/main/kotlin/domain/usecase/auth_service/GetUserByIDUseCase.kt +++ b/src/main/kotlin/domain/usecase/auth_service/GetUserByIDUseCase.kt @@ -3,15 +3,15 @@ package com.berlin.domain.usecase.authService import com.berlin.domain.exception.InvalidUserIdException import com.berlin.domain.model.user.User import com.berlin.domain.repository.AuthenticationRepository +import com.berlin.domain.usecase.utils.isIDValid class GetUserByIDUseCase( private val repository: AuthenticationRepository, ) { operator fun invoke(id: String): User { - if (!isIDValid(id)) + if (isIDValid(id).not()) throw InvalidUserIdException("User ID can't be empty or just digits") return repository.getUserById(id) } - private fun isIDValid(id: String): Boolean = - id.isNotBlank() && !id.all { it.isDigit() } + } \ No newline at end of file diff --git a/src/main/kotlin/domain/usecase/project/DeleteProjectUseCase.kt b/src/main/kotlin/domain/usecase/project/DeleteProjectUseCase.kt index e7f1833..3eaa58b 100644 --- a/src/main/kotlin/domain/usecase/project/DeleteProjectUseCase.kt +++ b/src/main/kotlin/domain/usecase/project/DeleteProjectUseCase.kt @@ -1,10 +1,10 @@ package com.berlin.domain.usecase.project import com.berlin.domain.exception.InvalidProjectIdException -import com.berlin.domain.exception.ProjectNotFoundException import com.berlin.domain.model.AuditLog import com.berlin.domain.repository.ProjectRepository import com.berlin.domain.usecase.audit_system.AddAuditLogUseCase +import com.berlin.domain.usecase.utils.isIDValid import data.UserCache class DeleteProjectUseCase( @@ -14,7 +14,7 @@ class DeleteProjectUseCase( ) { operator fun invoke(projectId: String): String { - if (!validateProjectId(projectId)) { + if (isIDValid(projectId).not()) { throw InvalidProjectIdException("Project ID must not be empty or blank") } @@ -30,7 +30,6 @@ class DeleteProjectUseCase( return deletedProject } - private fun validateProjectId(projectId: String): Boolean = - projectId.isNotBlank() && !(projectId.all { it.isDigit() }) + } \ No newline at end of file diff --git a/src/main/kotlin/domain/usecase/project/GetProjectByIdUseCase.kt b/src/main/kotlin/domain/usecase/project/GetProjectByIdUseCase.kt index 75255d3..4692a1c 100644 --- a/src/main/kotlin/domain/usecase/project/GetProjectByIdUseCase.kt +++ b/src/main/kotlin/domain/usecase/project/GetProjectByIdUseCase.kt @@ -3,19 +3,19 @@ package com.berlin.domain.usecase.project import com.berlin.domain.exception.InvalidProjectIdException import com.berlin.domain.repository.ProjectRepository import com.berlin.domain.model.Project +import com.berlin.domain.usecase.utils.isIDValid class GetProjectByIdUseCase ( private val projectRepository: ProjectRepository ) { operator fun invoke(projectId: String): Project { - if(!validateProjectId(projectId)) + if(isIDValid(projectId).not()) throw InvalidProjectIdException("project id must not be empty, blank, or purely numeric") return projectRepository.getProjectById(projectId) } - private fun validateProjectId(projectId: String): Boolean = - projectId.isNotBlank() && !(projectId.all { it.isDigit() }) + } \ No newline at end of file diff --git a/src/main/kotlin/domain/usecase/task/ChangeTaskStateUseCase.kt b/src/main/kotlin/domain/usecase/task/ChangeTaskStateUseCase.kt index 76349fc..54d2966 100644 --- a/src/main/kotlin/domain/usecase/task/ChangeTaskStateUseCase.kt +++ b/src/main/kotlin/domain/usecase/task/ChangeTaskStateUseCase.kt @@ -5,6 +5,7 @@ import com.berlin.domain.model.AuditLog import com.berlin.domain.model.Task import com.berlin.domain.repository.TaskRepository import com.berlin.domain.usecase.audit_system.AddAuditLogUseCase +import com.berlin.domain.usecase.utils.isIDValid import data.UserCache class ChangeTaskStateUseCase( @@ -17,7 +18,7 @@ class ChangeTaskStateUseCase( val original = taskRepository.getTaskById(taskId) - if (!validateStateId(newStateId)) { + if (isIDValid(newStateId).not()) { throw InvalidTaskStateException("State id must not be empty, blank, or purely numeric") } @@ -34,6 +35,5 @@ class ChangeTaskStateUseCase( return updatedTask } - private fun validateStateId(stateId: String): Boolean = - stateId.isNotBlank() && !stateId.all { it.isDigit() } + } diff --git a/src/main/kotlin/domain/usecase/task/DeleteTaskUseCase.kt b/src/main/kotlin/domain/usecase/task/DeleteTaskUseCase.kt index 2e8658d..f7ce2c8 100644 --- a/src/main/kotlin/domain/usecase/task/DeleteTaskUseCase.kt +++ b/src/main/kotlin/domain/usecase/task/DeleteTaskUseCase.kt @@ -3,6 +3,7 @@ package com.berlin.domain.usecase.task import com.berlin.domain.model.AuditLog import com.berlin.domain.repository.TaskRepository import com.berlin.domain.usecase.audit_system.AddAuditLogUseCase +import com.berlin.domain.usecase.utils.isIDValid import data.UserCache class DeleteTaskUseCase( @@ -11,7 +12,7 @@ class DeleteTaskUseCase( private val cashedUser: UserCache, ) { operator fun invoke(taskId: String) : String { - if (!validateTaskId(taskId)) { + if (isIDValid(taskId).not()) { throw Exception("Project ID must not be empty or blank") } taskRepository.deleteTask(taskId) @@ -26,5 +27,4 @@ class DeleteTaskUseCase( return "Deleted." } - private fun validateTaskId(taskId: String): Boolean = taskId.isNotBlank() && !(taskId.all { it.isDigit() }) } diff --git a/src/main/kotlin/domain/usecase/task/GetTaskByIdUseCase.kt b/src/main/kotlin/domain/usecase/task/GetTaskByIdUseCase.kt index 97e6080..fdcaa36 100644 --- a/src/main/kotlin/domain/usecase/task/GetTaskByIdUseCase.kt +++ b/src/main/kotlin/domain/usecase/task/GetTaskByIdUseCase.kt @@ -3,6 +3,7 @@ package com.berlin.domain.usecase.task import com.berlin.domain.exception.InvalidTaskIdException import com.berlin.domain.model.Task import com.berlin.domain.repository.TaskRepository +import com.berlin.domain.usecase.utils.isIDValid class GetTaskByIdUseCase( private val taskRepository: TaskRepository, @@ -10,13 +11,12 @@ class GetTaskByIdUseCase( operator fun invoke(taskId: String): Task { - if (!validateTaskId(taskId)) { + if (isIDValid(taskId).not()) { throw InvalidTaskIdException("Task id must not be empty, blank, or purely numeric") } return taskRepository.getTaskById(taskId) } - private fun validateTaskId(id: String): Boolean = - id.isNotBlank() && !id.all { it.isDigit() } + } diff --git a/src/main/kotlin/domain/usecase/task/GetTasksByProjectUseCase.kt b/src/main/kotlin/domain/usecase/task/GetTasksByProjectUseCase.kt index 8ab6b7b..4751cc9 100644 --- a/src/main/kotlin/domain/usecase/task/GetTasksByProjectUseCase.kt +++ b/src/main/kotlin/domain/usecase/task/GetTasksByProjectUseCase.kt @@ -3,6 +3,7 @@ package com.berlin.domain.usecase.task import com.berlin.domain.exception.InvalidProjectIdException import com.berlin.domain.model.Task import com.berlin.domain.repository.TaskRepository +import com.berlin.domain.usecase.utils.isIDValid class GetTasksByProjectUseCase( private val taskRepository: TaskRepository @@ -10,12 +11,11 @@ class GetTasksByProjectUseCase( operator fun invoke(projectId: String): List { - if (!validateProjectId(projectId)) { + if (isIDValid(projectId).not()) { throw InvalidProjectIdException("Project id must not be empty, blank, or purely numeric") } return taskRepository.getTasksByProjectId(projectId) } - private fun validateProjectId(id: String): Boolean = - id.isNotBlank() && !id.all { it.isDigit() } + } \ No newline at end of file diff --git a/src/main/kotlin/domain/usecase/task_state/DeleteTaskStateUseCase.kt b/src/main/kotlin/domain/usecase/task_state/DeleteTaskStateUseCase.kt index 0c62942..233dc80 100644 --- a/src/main/kotlin/domain/usecase/task_state/DeleteTaskStateUseCase.kt +++ b/src/main/kotlin/domain/usecase/task_state/DeleteTaskStateUseCase.kt @@ -2,6 +2,7 @@ package com.berlin.domain.usecase.task_state import com.berlin.domain.exception.InvalidStateIdException import com.berlin.domain.repository.TaskStateRepository +import com.berlin.domain.usecase.utils.isIDValid class DeleteTaskStateUseCase( private val taskStateRepository: TaskStateRepository @@ -9,12 +10,11 @@ class DeleteTaskStateUseCase( operator fun invoke(stateId: String): String { - if(!validateStateId(stateId)) + if(isIDValid(stateId).not()) throw InvalidStateIdException("State ID must not be empty or blank") return taskStateRepository.deleteState(stateId) } - private fun validateStateId(stateId: String): Boolean = - stateId.isNotBlank() && !(stateId.all { it.isDigit() }) + } \ No newline at end of file diff --git a/src/main/kotlin/domain/usecase/task_state/GetAllTaskStatesByProjectIdUseCase.kt b/src/main/kotlin/domain/usecase/task_state/GetAllTaskStatesByProjectIdUseCase.kt index 6770dc9..406b0fb 100644 --- a/src/main/kotlin/domain/usecase/task_state/GetAllTaskStatesByProjectIdUseCase.kt +++ b/src/main/kotlin/domain/usecase/task_state/GetAllTaskStatesByProjectIdUseCase.kt @@ -5,6 +5,7 @@ import com.berlin.domain.exception.InvalidProjectIdException import com.berlin.domain.model.TaskState import com.berlin.domain.repository.ProjectRepository import com.berlin.domain.repository.TaskStateRepository +import com.berlin.domain.usecase.utils.isIDValid class GetAllTaskStatesByProjectIdUseCase( private val taskStateRepository: TaskStateRepository, @@ -13,7 +14,7 @@ class GetAllTaskStatesByProjectIdUseCase( operator fun invoke(projectId: String): List { - return if (!validateProjectId(projectId)) { + return if (isIDValid(projectId).not()) { throw InvalidProjectIdException("Project ID must not be empty or blank") } else { @@ -22,7 +23,6 @@ class GetAllTaskStatesByProjectIdUseCase( } } - private fun validateProjectId(projectId: String): Boolean = - projectId.isNotBlank() && !(projectId.all { it.isDigit() }) + } \ No newline at end of file diff --git a/src/main/kotlin/domain/usecase/task_state/GetTaskStateByIdUseCase.kt b/src/main/kotlin/domain/usecase/task_state/GetTaskStateByIdUseCase.kt index 5ba37fa..0e4fe7e 100644 --- a/src/main/kotlin/domain/usecase/task_state/GetTaskStateByIdUseCase.kt +++ b/src/main/kotlin/domain/usecase/task_state/GetTaskStateByIdUseCase.kt @@ -3,19 +3,19 @@ package com.berlin.domain.usecase.task_state import com.berlin.domain.exception.InvalidStateIdException import com.berlin.domain.model.TaskState import com.berlin.domain.repository.TaskStateRepository +import com.berlin.domain.usecase.utils.isIDValid class GetTaskStateByIdUseCase( private val taskStateRepository: TaskStateRepository ) { operator fun invoke(stateId: String): TaskState { - if(!validateStateId(stateId)) + if(isIDValid(stateId).not()) throw InvalidStateIdException("State id must not be empty, blank, or purely numeric") return taskStateRepository.getStateById(stateId) } - private fun validateStateId(stateId: String): Boolean = - stateId.isNotBlank() && !(stateId.all { it.isDigit() }) + } \ No newline at end of file diff --git a/src/main/kotlin/domain/usecase/task_state/GetTaskStateByTaskIdUseCase.kt b/src/main/kotlin/domain/usecase/task_state/GetTaskStateByTaskIdUseCase.kt index 2bf1541..bb2ec72 100644 --- a/src/main/kotlin/domain/usecase/task_state/GetTaskStateByTaskIdUseCase.kt +++ b/src/main/kotlin/domain/usecase/task_state/GetTaskStateByTaskIdUseCase.kt @@ -3,15 +3,14 @@ package com.berlin.domain.usecase.task_state import com.berlin.domain.exception.InvalidTaskIdException import com.berlin.domain.model.TaskState import com.berlin.domain.repository.TaskStateRepository -import com.berlin.domain.repository.TaskRepository +import com.berlin.domain.usecase.utils.isIDValid class GetTaskStateByTaskIdUseCase( private val taskStateRepository: TaskStateRepository, - private val taskRepository: TaskRepository ) { operator fun invoke(taskId: String): TaskState? { - if (!validateTaskId(taskId)) { + if (isIDValid(taskId).not()) { throw InvalidTaskIdException("Task ID must not be empty or blank") } else { @@ -19,6 +18,5 @@ class GetTaskStateByTaskIdUseCase( } } - private fun validateTaskId(taskId: String): Boolean = taskId.isNotBlank() && !(taskId.all { it.isDigit() }) } \ No newline at end of file diff --git a/src/main/kotlin/domain/usecase/task_state/GetTasksByTaskStateIdUseCase.kt b/src/main/kotlin/domain/usecase/task_state/GetTasksByTaskStateIdUseCase.kt index e3c909b..67a4f3a 100644 --- a/src/main/kotlin/domain/usecase/task_state/GetTasksByTaskStateIdUseCase.kt +++ b/src/main/kotlin/domain/usecase/task_state/GetTasksByTaskStateIdUseCase.kt @@ -4,13 +4,14 @@ import com.berlin.domain.exception.InvalidStateIdException import com.berlin.domain.exception.TaskNotFoundException import com.berlin.domain.model.Task import com.berlin.domain.repository.TaskStateRepository +import com.berlin.domain.usecase.utils.isIDValid class GetTasksByTaskStateIdUseCase( private val taskStateRepository: TaskStateRepository, ) { operator fun invoke(stateId: String): List { - if (!validateStateId(stateId)) { + if (isIDValid(stateId).not()) { throw InvalidStateIdException("State ID must not be empty or blank") } else { return taskStateRepository.getTasksByStateId(stateId) @@ -18,5 +19,4 @@ class GetTasksByTaskStateIdUseCase( } } - private fun validateStateId(stateId: String): Boolean = stateId.isNotBlank() && !(stateId.all { it.isDigit() }) } \ No newline at end of file diff --git a/src/main/kotlin/domain/usecase/utils/validateId.kt b/src/main/kotlin/domain/usecase/utils/validateId.kt new file mode 100644 index 0000000..d960e97 --- /dev/null +++ b/src/main/kotlin/domain/usecase/utils/validateId.kt @@ -0,0 +1,4 @@ +package com.berlin.domain.usecase.utils + + fun isIDValid(id: String): Boolean = + id.isNotBlank() && !id.all { it.isDigit() } diff --git a/src/test/kotlin/domain/usecase/task_state/GetTaskStateByTaskIdUseCaseTest.kt b/src/test/kotlin/domain/usecase/task_state/GetTaskStateByTaskIdUseCaseTest.kt index a126b11..c4f53a4 100644 --- a/src/test/kotlin/domain/usecase/task_state/GetTaskStateByTaskIdUseCaseTest.kt +++ b/src/test/kotlin/domain/usecase/task_state/GetTaskStateByTaskIdUseCaseTest.kt @@ -20,7 +20,7 @@ class GetTaskStateByTaskIdUseCaseTest { @BeforeEach fun setup() { - getTaskStateByTaskIdUseCase = GetTaskStateByTaskIdUseCase(taskStateRepository, taskRepository) + getTaskStateByTaskIdUseCase = GetTaskStateByTaskIdUseCase(taskStateRepository) } @Test