Skip to content

Commit 6cc2f1e

Browse files
authored
배치 개선 (#482)
1 parent ab2bf77 commit 6cc2f1e

File tree

11 files changed

+604
-129
lines changed

11 files changed

+604
-129
lines changed

batch/src/main/kotlin/pre2025category/api/GoogleDocsApi.kt

Lines changed: 0 additions & 42 deletions
This file was deleted.

batch/src/main/kotlin/pre2025category/repository/CategoryPre2025Repository.kt

Lines changed: 0 additions & 39 deletions
This file was deleted.

batch/src/main/kotlin/pre2025category/service/CategoryPre2025FetchService.kt

Lines changed: 0 additions & 38 deletions
This file was deleted.

batch/src/main/kotlin/sugangsnu/common/service/SugangSnuFetchService.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ package com.wafflestudio.snutt.sugangsnu.common.service
22

33
import com.wafflestudio.snutt.common.enums.Semester
44
import com.wafflestudio.snutt.lectures.data.Lecture
5-
import com.wafflestudio.snutt.pre2025category.service.CategoryPre2025FetchService
65
import com.wafflestudio.snutt.sugangsnu.common.SugangSnuRepository
76
import com.wafflestudio.snutt.sugangsnu.common.utils.SugangSnuClassTimeUtils
87
import org.apache.poi.hssf.usermodel.HSSFWorkbook
98
import org.apache.poi.ss.usermodel.Cell
109
import org.slf4j.LoggerFactory
10+
import org.springframework.core.io.ResourceLoader
1111
import org.springframework.stereotype.Service
1212

1313
interface SugangSnuFetchService {
@@ -20,16 +20,27 @@ interface SugangSnuFetchService {
2020
@Service
2121
class SugangSnuFetchServiceImpl(
2222
private val sugangSnuRepository: SugangSnuRepository,
23-
private val categoryPre2025FetchService: CategoryPre2025FetchService,
23+
private val resourceLoader: ResourceLoader,
2424
) : SugangSnuFetchService {
2525
private val log = LoggerFactory.getLogger(javaClass)
2626
private val quotaRegex = """(?<quota>\d+)(\s*\((?<quotaForCurrentStudent>\d+)\))?""".toRegex()
27+
private val courseNumberCategoryPre2025Map: Map<String, String> by lazy {
28+
resourceLoader
29+
.getResource("classpath:categoryPre2025.txt")
30+
.inputStream
31+
.bufferedReader()
32+
.lineSequence()
33+
.filter { it.contains(":") }
34+
.associate { line ->
35+
val (courseNumber, category) = line.split(":", limit = 2)
36+
courseNumber to category
37+
}
38+
}
2739

2840
override suspend fun getSugangSnuLectures(
2941
year: Int,
3042
semester: Semester,
3143
): List<Lecture> {
32-
val courseNumberCategoryPre2025Map = categoryPre2025FetchService.getCategoriesPre2025()
3344
val koreanLectureXlsx = sugangSnuRepository.getSugangSnuLectures(year, semester, "ko")
3445
val englishLectureXlsx = sugangSnuRepository.getSugangSnuLectures(year, semester, "en")
3546
val koreanSheet = HSSFWorkbook(koreanLectureXlsx.asInputStream()).getSheetAt(0)

batch/src/main/kotlin/sugangsnu/job/sync/service/SugangSnuSyncService.kt

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.wafflestudio.snutt.sugangsnu.job.sync.service
22

33
import com.wafflestudio.snutt.bookmark.repository.BookmarkRepository
4+
import com.wafflestudio.snutt.common.exception.CoursebookRecentThanSugangSnuException
45
import com.wafflestudio.snutt.coursebook.data.Coursebook
56
import com.wafflestudio.snutt.coursebook.repository.CoursebookRepository
67
import com.wafflestudio.snutt.lecturebuildings.data.Campus
@@ -133,7 +134,7 @@ class SugangSnuSyncServiceImpl(
133134
old,
134135
new,
135136
Lecture::class.memberProperties.filter {
136-
it != Lecture::id && it.get(old) != it.get(new)
137+
it != Lecture::id && it != Lecture::evInfo && it.get(old) != it.get(new)
137138
},
138139
)
139140
}
@@ -211,7 +212,10 @@ class SugangSnuSyncServiceImpl(
211212
private suspend fun syncLectures(compareResult: SugangSnuLectureCompareResult) {
212213
val updatedLectures =
213214
compareResult.updatedLectureList.map { diff ->
214-
diff.newData.apply { id = diff.oldData.id }
215+
diff.newData.apply {
216+
id = diff.oldData.id
217+
evInfo = diff.oldData.evInfo
218+
}
215219
}
216220

217221
lectureService.upsertLectures(compareResult.createdLectureList)
@@ -412,8 +416,18 @@ class SugangSnuSyncServiceImpl(
412416
}
413417
}
414418

415-
private fun Coursebook.isSyncedToSugangSnu(sugangSnuCoursebookCondition: SugangSnuCoursebookCondition): Boolean =
416-
this.year == sugangSnuCoursebookCondition.latestYear && this.semester == sugangSnuCoursebookCondition.latestSemester
419+
private fun Coursebook.isSyncedToSugangSnu(sugangSnuCoursebookCondition: SugangSnuCoursebookCondition): Boolean {
420+
val sugangSnuCoursebook =
421+
Coursebook(
422+
year = sugangSnuCoursebookCondition.latestYear,
423+
semester = sugangSnuCoursebookCondition.latestSemester,
424+
)
425+
return when {
426+
sugangSnuCoursebook > this -> false
427+
sugangSnuCoursebook < this -> throw CoursebookRecentThanSugangSnuException
428+
else -> true
429+
}
430+
}
417431
}
418432

419433
data class ParsedTags(

batch/src/main/resources/META-INF/native-image/resource-config.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
"resources": {
33
"includes": [
44
{ "pattern": "org/apache/xmlbeans/.*\\.properties" },
5-
{ "pattern": "org/apache/.*\\.xsb" }
5+
{ "pattern": "org/apache/.*\\.xsb" },
6+
{ "pattern": "categoryPre2025.txt" }
67
]
78
}
89
}

0 commit comments

Comments
 (0)