Skip to content

Commit 37e578b

Browse files
committed
REFACTOR: Domain 모듈 내 WriteRoutine관련하여 날자/시간 클래스를 LocalDate, LocalTime을 사용하도록 수정
1 parent 6f82d71 commit 37e578b

File tree

8 files changed

+62
-66
lines changed

8 files changed

+62
-66
lines changed

data/src/main/java/com/threegap/bitnagil/data/writeroutine/repositoryImpl/WriteRoutineRepositoryImpl.kt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ package com.threegap.bitnagil.data.writeroutine.repositoryImpl
33
import com.threegap.bitnagil.data.writeroutine.datasource.WriteRoutineDataSource
44
import com.threegap.bitnagil.data.writeroutine.model.request.EditRoutineRequest
55
import com.threegap.bitnagil.data.writeroutine.model.request.RegisterRoutineRequest
6-
import com.threegap.bitnagil.domain.writeroutine.model.Date
76
import com.threegap.bitnagil.domain.writeroutine.model.RepeatDay
87
import com.threegap.bitnagil.domain.writeroutine.model.RoutineUpdateType
9-
import com.threegap.bitnagil.domain.writeroutine.model.Time
108
import com.threegap.bitnagil.domain.writeroutine.model.WriteRoutineEvent
119
import com.threegap.bitnagil.domain.writeroutine.repository.WriteRoutineRepository
1210
import kotlinx.coroutines.flow.Flow
1311
import kotlinx.coroutines.flow.MutableSharedFlow
1412
import kotlinx.coroutines.flow.asSharedFlow
13+
import java.time.LocalDate
14+
import java.time.LocalTime
1515
import javax.inject.Inject
1616

1717
class WriteRoutineRepositoryImpl @Inject constructor(
@@ -20,18 +20,18 @@ class WriteRoutineRepositoryImpl @Inject constructor(
2020
override suspend fun registerRoutine(
2121
name: String,
2222
repeatDay: List<RepeatDay>,
23-
startTime: Time,
24-
startDate: Date,
25-
endDate: Date,
23+
startTime: LocalTime,
24+
startDate: LocalDate,
25+
endDate: LocalDate,
2626
subRoutines: List<String>,
2727
recommendedRoutineType: String?,
2828
): Result<Unit> {
2929
val request = RegisterRoutineRequest(
3030
routineName = name,
3131
repeatDay = repeatDay.map { it.fullName },
32-
executionTime = startTime.toFormattedString(),
33-
routineStartDate = startDate.toFormattedString(),
34-
routineEndDate = endDate.toFormattedString(),
32+
executionTime = startTime.toString(),
33+
routineStartDate = startDate.toString(),
34+
routineEndDate = endDate.toString(),
3535
subRoutineName = subRoutines,
3636
recommendedRoutineType = recommendedRoutineType,
3737
)
@@ -47,19 +47,19 @@ class WriteRoutineRepositoryImpl @Inject constructor(
4747
routineUpdateType: RoutineUpdateType,
4848
name: String,
4949
repeatDay: List<RepeatDay>,
50-
startTime: Time,
51-
startDate: Date,
52-
endDate: Date,
50+
startTime: LocalTime,
51+
startDate: LocalDate,
52+
endDate: LocalDate,
5353
subRoutines: List<String>,
5454
): Result<Unit> {
5555
val request = EditRoutineRequest(
5656
routineId = routineId,
5757
updateApplyDate = routineUpdateType.value,
5858
routineName = name,
5959
repeatDay = repeatDay.map { it.fullName },
60-
executionTime = startTime.toFormattedString(),
61-
routineStartDate = startDate.toFormattedString(),
62-
routineEndDate = endDate.toFormattedString(),
60+
executionTime = startTime.toString(),
61+
routineStartDate = startDate.toString(),
62+
routineEndDate = endDate.toString(),
6363
subRoutineName = subRoutines,
6464
)
6565

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package com.threegap.bitnagil.domain.writeroutine.model
22

3+
import java.time.LocalDate
4+
import java.time.LocalTime
5+
36
data class Routine(
47
val id: String,
58
val name: String,
69
val subRoutines: List<SubRoutine>,
710
val repeatDays: List<RepeatDay>,
8-
val endDate: Date,
9-
val startTime: Time,
11+
val endDate: LocalDate,
12+
val startTime: LocalTime,
1013
)

domain/src/main/java/com/threegap/bitnagil/domain/writeroutine/repository/WriteRoutineRepository.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
package com.threegap.bitnagil.domain.writeroutine.repository
22

3-
import com.threegap.bitnagil.domain.writeroutine.model.Date
43
import com.threegap.bitnagil.domain.writeroutine.model.RepeatDay
54
import com.threegap.bitnagil.domain.writeroutine.model.RoutineUpdateType
6-
import com.threegap.bitnagil.domain.writeroutine.model.Time
75
import com.threegap.bitnagil.domain.writeroutine.model.WriteRoutineEvent
86
import kotlinx.coroutines.flow.Flow
7+
import java.time.LocalDate
8+
import java.time.LocalTime
99

1010
interface WriteRoutineRepository {
1111
suspend fun registerRoutine(
1212
name: String,
1313
repeatDay: List<RepeatDay>,
14-
startTime: Time,
15-
startDate: Date,
16-
endDate: Date,
14+
startTime: LocalTime,
15+
startDate: LocalDate,
16+
endDate: LocalDate,
1717
subRoutines: List<String>,
1818
recommendedRoutineType: String?,
1919
): Result<Unit>
@@ -23,9 +23,9 @@ interface WriteRoutineRepository {
2323
routineUpdateType: RoutineUpdateType,
2424
name: String,
2525
repeatDay: List<RepeatDay>,
26-
startTime: Time,
27-
startDate: Date,
28-
endDate: Date,
26+
startTime: LocalTime,
27+
startDate: LocalDate,
28+
endDate: LocalDate,
2929
subRoutines: List<String>,
3030
): Result<Unit>
3131

domain/src/main/java/com/threegap/bitnagil/domain/writeroutine/usecase/EditRoutineUseCase.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.threegap.bitnagil.domain.writeroutine.usecase
22

3-
import com.threegap.bitnagil.domain.writeroutine.model.Date
43
import com.threegap.bitnagil.domain.writeroutine.model.RepeatDay
54
import com.threegap.bitnagil.domain.writeroutine.model.RoutineUpdateType
6-
import com.threegap.bitnagil.domain.writeroutine.model.Time
75
import com.threegap.bitnagil.domain.writeroutine.repository.WriteRoutineRepository
6+
import java.time.LocalDate
7+
import java.time.LocalTime
88
import javax.inject.Inject
99

1010
class EditRoutineUseCase @Inject constructor(
@@ -15,9 +15,9 @@ class EditRoutineUseCase @Inject constructor(
1515
routineUpdateType: RoutineUpdateType,
1616
name: String,
1717
repeatDay: List<RepeatDay>,
18-
startTime: Time,
19-
startDate: Date,
20-
endDate: Date,
18+
startTime: LocalTime,
19+
startDate: LocalDate,
20+
endDate: LocalDate,
2121
subRoutines: List<String>,
2222
): Result<Unit> {
2323
return writeRoutineRepository.editRoutine(

domain/src/main/java/com/threegap/bitnagil/domain/writeroutine/usecase/RegisterRoutineUseCase.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.threegap.bitnagil.domain.writeroutine.usecase
22

3-
import com.threegap.bitnagil.domain.writeroutine.model.Date
43
import com.threegap.bitnagil.domain.writeroutine.model.RepeatDay
5-
import com.threegap.bitnagil.domain.writeroutine.model.Time
64
import com.threegap.bitnagil.domain.writeroutine.repository.WriteRoutineRepository
5+
import java.time.LocalDate
6+
import java.time.LocalTime
77
import javax.inject.Inject
88

99
class RegisterRoutineUseCase @Inject constructor(
@@ -12,9 +12,9 @@ class RegisterRoutineUseCase @Inject constructor(
1212
suspend operator fun invoke(
1313
name: String,
1414
repeatDay: List<RepeatDay>,
15-
startTime: Time,
16-
startDate: Date,
17-
endDate: Date,
15+
startTime: LocalTime,
16+
startDate: LocalDate,
17+
endDate: LocalDate,
1818
subRoutines: List<String>,
1919
recommendedRoutineType: String?,
2020
): Result<Unit> {

presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/WriteRoutineViewModel.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ class WriteRoutineViewModel @AssistedInject constructor(
105105
routineName = routine.name,
106106
repeatDays = repeatDays,
107107
repeatType = repeatType,
108-
startTime = Time.fromDomainTimeString(routine.executionTime),
108+
startTime = Time.fromString(routine.executionTime),
109109
startDate = Date.fromString(routine.startDate),
110110
endDate = Date.fromString(routine.endDate),
111111
subRoutineNames = listOf(
@@ -137,7 +137,7 @@ class WriteRoutineViewModel @AssistedInject constructor(
137137
routineName = routine.name,
138138
repeatDays = SelectableDay.defaultList,
139139
repeatType = null,
140-
startTime = Time.fromDomainTimeString(routine.executionTime),
140+
startTime = Time.fromString(routine.executionTime),
141141
startDate = Date.now(),
142142
endDate = Date.now(),
143143
subRoutineNames = listOf(
@@ -372,9 +372,9 @@ class WriteRoutineViewModel @AssistedInject constructor(
372372
val registerRoutineResult = registerRoutineUseCase(
373373
name = currentState.routineName,
374374
repeatDay = repeatDay,
375-
startTime = startTime.toDomainTime(),
376-
startDate = if (noRepeatRoutine) Date.now().toDomainDate() else currentState.startDate.toDomainDate(),
377-
endDate = if (noRepeatRoutine) Date.now().toDomainDate() else currentState.endDate.toDomainDate(),
375+
startTime = startTime.toLocalTime(),
376+
startDate = if (noRepeatRoutine) Date.now().toLocalDate() else currentState.startDate.toLocalDate(),
377+
endDate = if (noRepeatRoutine) Date.now().toLocalDate() else currentState.endDate.toLocalDate(),
378378
subRoutines = subRoutines,
379379
recommendedRoutineType = currentState.recommendedRoutineType,
380380
)
@@ -409,9 +409,9 @@ class WriteRoutineViewModel @AssistedInject constructor(
409409
routineUpdateType = routineUpdateType,
410410
name = currentState.routineName,
411411
repeatDay = repeatDay,
412-
startTime = startTime.toDomainTime(),
413-
startDate = currentState.startDate.toDomainDate(),
414-
endDate = currentState.endDate.toDomainDate(),
412+
startTime = startTime.toLocalTime(),
413+
startDate = currentState.startDate.toLocalDate(),
414+
endDate = currentState.endDate.toLocalDate(),
415415
subRoutines = subRoutines,
416416
)
417417

presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/model/Date.kt

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package com.threegap.bitnagil.presentation.writeroutine.model
22

33
import android.os.Parcelable
44
import kotlinx.parcelize.Parcelize
5-
import com.threegap.bitnagil.domain.writeroutine.model.Date as DomainDate
5+
import java.time.LocalDate
66

77
@Parcelize
88
data class Date(
@@ -12,9 +12,9 @@ data class Date(
1212
) : Parcelable {
1313
companion object {
1414
fun now() = Date(
15-
year = java.time.LocalDate.now().year,
16-
month = java.time.LocalDate.now().monthValue,
17-
day = java.time.LocalDate.now().dayOfMonth,
15+
year = LocalDate.now().year,
16+
month = LocalDate.now().monthValue,
17+
day = LocalDate.now().dayOfMonth,
1818
)
1919

2020
fun min(d1: Date, d2: Date): Date {
@@ -51,21 +51,14 @@ data class Date(
5151
fun toYearShrinkageFormattedString(): String = "%02d.%02d.%02d".format((year % 100), month, day)
5252

5353
fun checkInRange(startDate: Date?, endDate: Date?): Boolean {
54-
val appliedStartDate = startDate ?: Date(year = 2000, month = 1, day = 1)
55-
val appliedEndDate = endDate ?: Date(year = 2999, month = 12, day = 31)
54+
val current = toLocalDate()
55+
val start = startDate?.toLocalDate() ?: LocalDate.of(2000, 1, 1)
56+
val end = endDate?.toLocalDate() ?: LocalDate.of(2999, 12, 31)
5657

57-
val startValue = appliedStartDate.year * 10000 + appliedStartDate.month * 100 + appliedStartDate.day
58-
val endValue = appliedEndDate.year * 10000 + appliedEndDate.month * 100 + appliedEndDate.day
59-
val targetValue = year * 10000 + month * 100 + day
60-
61-
return targetValue in startValue..endValue
58+
return !current.isBefore(start) && !current.isAfter(end)
6259
}
6360

64-
fun toDomainDate(): DomainDate {
65-
return DomainDate(
66-
year = year,
67-
month = month,
68-
day = day,
69-
)
61+
fun toLocalDate(): LocalDate {
62+
return LocalDate.of(year, month, day,)
7063
}
7164
}

presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/model/Time.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ package com.threegap.bitnagil.presentation.writeroutine.model
22

33
import android.os.Parcelable
44
import kotlinx.parcelize.Parcelize
5+
import java.time.LocalTime
56
import kotlin.text.format
6-
import com.threegap.bitnagil.domain.writeroutine.model.Time as DomainTime
77

88
@Parcelize
99
data class Time(
@@ -19,18 +19,18 @@ data class Time(
1919
val Init = Time(hour = 12, minute = 0)
2020
val AllDay = Time(hour = 0, minute = 0)
2121

22-
fun fromDomainTimeString(timeString: String): Time {
23-
try {
22+
fun fromString(timeString: String): Time {
23+
return try {
2424
val (hour, minute) = timeString.split(":").map { it.toInt() }
25-
return Time(hour = hour, minute = minute)
25+
Time(hour = hour, minute = minute)
2626
} catch (_: Exception) {
27-
return Time(hour = 12, minute = 0)
27+
Init
2828
}
2929
}
3030
}
3131

32-
fun toDomainTime(): DomainTime {
33-
return DomainTime(hour = hour, minute = minute)
32+
fun toLocalTime(): LocalTime {
33+
return LocalTime.of(hour, minute)
3434
}
3535

3636
fun toAmPmFormattedString(): String {

0 commit comments

Comments
 (0)