refactor: express BookMetadataPatchCapability as a set instead of list

This commit is contained in:
Gauthier Roebroeck 2021-12-28 16:53:14 +08:00
parent 5a464fd13e
commit 6d3fe6922c
10 changed files with 21 additions and 21 deletions

View file

@ -33,7 +33,7 @@ sealed class Task(priority: Int = DEFAULT_PRIORITY) : Serializable {
override fun toString(): String = "GenerateBookThumbnail(bookId='$bookId', priority='$priority')"
}
class RefreshBookMetadata(val bookId: String, val capabilities: List<BookMetadataPatchCapability>, priority: Int = DEFAULT_PRIORITY) : Task(priority) {
class RefreshBookMetadata(val bookId: String, val capabilities: Set<BookMetadataPatchCapability>, priority: Int = DEFAULT_PRIORITY) : Task(priority) {
override fun uniqueId() = "REFRESH_BOOK_METADATA_$bookId"
override fun toString(): String = "RefreshBookMetadata(bookId='$bookId', capabilities=$capabilities, priority='$priority')"
}

View file

@ -91,7 +91,7 @@ class TaskReceiver(
fun refreshBookMetadata(
bookId: String,
capabilities: List<BookMetadataPatchCapability> = BookMetadataPatchCapability.values().toList(),
capabilities: Set<BookMetadataPatchCapability> = BookMetadataPatchCapability.values().toSet(),
priority: Int = DEFAULT_PRIORITY,
) {
submitTask(Task.RefreshBookMetadata(bookId, capabilities, priority))

View file

@ -32,7 +32,7 @@ class BookMetadataLifecycle(
private val eventPublisher: EventPublisher,
) {
fun refreshMetadata(book: Book, capabilities: List<BookMetadataPatchCapability>) {
fun refreshMetadata(book: Book, capabilities: Set<BookMetadataPatchCapability>) {
logger.info { "Refresh metadata for book: $book with capabilities: $capabilities" }
val media = mediaRepository.findById(book.id)
@ -89,7 +89,7 @@ class BookMetadataLifecycle(
existing.bookIds.lastKey() + 1
} else {
logger.debug { "Adding book '${book.name}' to existing read list '${existing.name}'" }
readList.number ?: existing.bookIds.lastKey() + 1
readList.number ?: (existing.bookIds.lastKey() + 1)
}
map[key] = book.id
readListLifecycle.updateReadList(

View file

@ -336,7 +336,7 @@ class LibraryContentLifecycle(
title = if (deleted.titleLock) deleted.title else newlyAdded.title,
)
)
if (!deleted.titleLock) taskReceiver.refreshBookMetadata(bookToAdd.id, listOf(BookMetadataPatchCapability.TITLE))
if (!deleted.titleLock) taskReceiver.refreshBookMetadata(bookToAdd.id, setOf(BookMetadataPatchCapability.TITLE))
}
// copy read progress

View file

@ -103,7 +103,7 @@ class SeriesLifecycle(
oldToNew.forEach { (old, new) ->
if (old.number != new.number || old.numberSort != new.numberSort) {
logger.debug { "Metadata numbering has changed, refreshing metadata for book ${new.bookId} " }
taskReceiver.refreshBookMetadata(new.bookId, listOf(BookMetadataPatchCapability.NUMBER, BookMetadataPatchCapability.NUMBER_SORT))
taskReceiver.refreshBookMetadata(new.bookId, setOf(BookMetadataPatchCapability.NUMBER, BookMetadataPatchCapability.NUMBER_SORT))
}
}

View file

@ -5,6 +5,6 @@ import org.gotson.komga.domain.model.BookMetadataPatchCapability
import org.gotson.komga.domain.model.BookWithMedia
interface BookMetadataProvider {
fun getCapabilities(): List<BookMetadataPatchCapability>
fun getCapabilities(): Set<BookMetadataPatchCapability>
fun getBookMetadataFromBook(book: BookWithMedia): BookMetadataPatch?
}

View file

@ -33,8 +33,8 @@ class IsbnBarcodeProvider(
DecodeHintType.TRY_HARDER to true
)
override fun getCapabilities(): List<BookMetadataPatchCapability> =
listOf(BookMetadataPatchCapability.ISBN)
override fun getCapabilities(): Set<BookMetadataPatchCapability> =
setOf(BookMetadataPatchCapability.ISBN)
override fun getBookMetadataFromBook(book: BookWithMedia): BookMetadataPatch? {
val pagesToTry = (1..book.media.pages.size).toList().let {

View file

@ -27,11 +27,11 @@ private const val COMIC_INFO = "ComicInfo.xml"
@Service
class ComicInfoProvider(
@Autowired(required = false) private val mapper: XmlMapper = XmlMapper(),
private val bookAnalyzer: BookAnalyzer
private val bookAnalyzer: BookAnalyzer,
) : BookMetadataProvider, SeriesMetadataFromBookProvider {
override fun getCapabilities(): List<BookMetadataPatchCapability> =
listOf(
override fun getCapabilities(): Set<BookMetadataPatchCapability> =
setOf(
BookMetadataPatchCapability.TITLE,
BookMetadataPatchCapability.SUMMARY,
BookMetadataPatchCapability.NUMBER,
@ -63,8 +63,8 @@ class ComicInfoProvider(
readLists.add(
BookMetadataPatch.ReadListEntry(
comicInfo.alternateSeries!!,
comicInfo.alternateNumber?.toIntOrNull()
)
comicInfo.alternateNumber?.toIntOrNull(),
),
)
}
@ -130,7 +130,7 @@ class ComicInfoProvider(
language = if (comicInfo.languageISO != null && BCP47TagValidator.isValid(comicInfo.languageISO!!)) comicInfo.languageISO else null,
genres = if (!genres.isNullOrEmpty()) genres.toSet() else null,
totalBookCount = comicInfo.count,
collections = listOfNotNull(comicInfo.seriesGroup?.ifBlank { null })
collections = listOfNotNull(comicInfo.seriesGroup?.ifBlank { null }),
)
}
return null

View file

@ -34,8 +34,8 @@ class EpubMetadataProvider(
"trl" to "translator",
)
override fun getCapabilities(): List<BookMetadataPatchCapability> =
listOf(
override fun getCapabilities(): Set<BookMetadataPatchCapability> =
setOf(
BookMetadataPatchCapability.TITLE,
BookMetadataPatchCapability.SUMMARY,
BookMetadataPatchCapability.RELEASE_DATE,

View file

@ -771,7 +771,7 @@ class LibraryContentLifecycleTest(
// then
verify(exactly = 1) { mockHasher.computeHash(any()) }
verify(exactly = 0) { mockTaskReceiver.refreshBookMetadata(bookRenamed.id, listOf(BookMetadataPatchCapability.TITLE)) }
verify(exactly = 0) { mockTaskReceiver.refreshBookMetadata(bookRenamed.id, setOf(BookMetadataPatchCapability.TITLE)) }
val allSeries = seriesRepository.findAll()
val allBooks = bookRepository.findAll().sortedBy { it.number }
@ -815,7 +815,7 @@ class LibraryContentLifecycleTest(
// then
verify(exactly = 1) { mockHasher.computeHash(any()) }
verify(exactly = 1) { mockTaskReceiver.refreshBookMetadata(bookRenamed.id, listOf(BookMetadataPatchCapability.TITLE)) }
verify(exactly = 1) { mockTaskReceiver.refreshBookMetadata(bookRenamed.id, setOf(BookMetadataPatchCapability.TITLE)) }
val allSeries = seriesRepository.findAll()
val allBooks = bookRepository.findAll().sortedBy { it.number }
@ -1140,7 +1140,7 @@ class LibraryContentLifecycleTest(
libraryContentLifecycle.scanRootFolder(library) // rename
// then
verify(exactly = 0) { mockTaskReceiver.refreshBookMetadata(book2Moved.id, listOf(BookMetadataPatchCapability.TITLE)) }
verify(exactly = 0) { mockTaskReceiver.refreshBookMetadata(book2Moved.id, setOf(BookMetadataPatchCapability.TITLE)) }
val allSeries = seriesRepository.findAll()
val allBooks = bookRepository.findAll().sortedBy { it.number }
@ -1198,7 +1198,7 @@ class LibraryContentLifecycleTest(
libraryContentLifecycle.scanRootFolder(library) // rename
// then
verify(exactly = 1) { mockTaskReceiver.refreshBookMetadata(book2Moved.id, listOf(BookMetadataPatchCapability.TITLE)) }
verify(exactly = 1) { mockTaskReceiver.refreshBookMetadata(book2Moved.id, setOf(BookMetadataPatchCapability.TITLE)) }
val allSeries = seriesRepository.findAll()
val allBooks = bookRepository.findAll().sortedBy { it.number }