From c5d9f10e9291e856cc9ed9db91b56b57a47ea3f2 Mon Sep 17 00:00:00 2001 From: Gauthier Roebroeck Date: Thu, 9 Apr 2020 15:52:14 +0800 Subject: [PATCH] refactor(analyzer): sort pages in extractors instead of analyzer --- .../org/gotson/komga/domain/service/BookAnalyzer.kt | 8 +------- .../komga/infrastructure/mediacontainer/RarExtractor.kt | 5 +++++ .../komga/infrastructure/mediacontainer/ZipExtractor.kt | 5 +++++ 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/komga/src/main/kotlin/org/gotson/komga/domain/service/BookAnalyzer.kt b/komga/src/main/kotlin/org/gotson/komga/domain/service/BookAnalyzer.kt index 7b602b339..eec5ac401 100644 --- a/komga/src/main/kotlin/org/gotson/komga/domain/service/BookAnalyzer.kt +++ b/komga/src/main/kotlin/org/gotson/komga/domain/service/BookAnalyzer.kt @@ -1,7 +1,6 @@ package org.gotson.komga.domain.service import mu.KotlinLogging -import net.greypanther.natsort.CaseInsensitiveSimpleNaturalComparator import org.gotson.komga.domain.model.Book import org.gotson.komga.domain.model.BookPage import org.gotson.komga.domain.model.Media @@ -10,7 +9,6 @@ import org.gotson.komga.infrastructure.image.ImageConverter import org.gotson.komga.infrastructure.mediacontainer.ContentDetector import org.gotson.komga.infrastructure.mediacontainer.MediaContainerExtractor import org.springframework.stereotype.Service -import java.util.* private val logger = KotlinLogging.logger {} @@ -25,8 +23,6 @@ class BookAnalyzer( .flatMap { e -> e.mediaTypes().map { it to e } } .toMap() - private val natSortComparator: Comparator = CaseInsensitiveSimpleNaturalComparator.getInstance() - private val thumbnailSize = 300 private val thumbnailFormat = "jpeg" @@ -50,9 +46,7 @@ class BookAnalyzer( entry.mediaType?.let { contentDetector.isImage(it) } ?: false }.let { (images, others) -> Pair( - images - .map { BookPage(it.name, it.mediaType!!) } - .sortedWith(compareBy(natSortComparator) { it.fileName }), + images.map { BookPage(it.name, it.mediaType!!) }, others ) } diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/mediacontainer/RarExtractor.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/mediacontainer/RarExtractor.kt index a99205733..dd44e9e74 100644 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/mediacontainer/RarExtractor.kt +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/mediacontainer/RarExtractor.kt @@ -2,10 +2,12 @@ package org.gotson.komga.infrastructure.mediacontainer import com.github.junrar.Archive import mu.KotlinLogging +import net.greypanther.natsort.CaseInsensitiveSimpleNaturalComparator import org.gotson.komga.domain.model.MediaContainerEntry import org.springframework.stereotype.Service import java.nio.file.Files import java.nio.file.Path +import java.util.* private val logger = KotlinLogging.logger {} @@ -14,6 +16,8 @@ class RarExtractor( private val contentDetector: ContentDetector ) : MediaContainerExtractor { + private val natSortComparator: Comparator = CaseInsensitiveSimpleNaturalComparator.getInstance() + override fun mediaTypes(): List = listOf("application/x-rar-compressed") override fun getEntries(path: Path): List = @@ -28,6 +32,7 @@ class RarExtractor( MediaContainerEntry(name = it.fileNameString, comment = e.message) } } + .sortedWith(compareBy(natSortComparator) { it.name }) } override fun getEntryStream(path: Path, entryName: String): ByteArray = diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/mediacontainer/ZipExtractor.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/mediacontainer/ZipExtractor.kt index 81a561b1e..274fc9481 100644 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/mediacontainer/ZipExtractor.kt +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/mediacontainer/ZipExtractor.kt @@ -1,10 +1,12 @@ package org.gotson.komga.infrastructure.mediacontainer import mu.KotlinLogging +import net.greypanther.natsort.CaseInsensitiveSimpleNaturalComparator import org.apache.commons.compress.archivers.zip.ZipFile import org.gotson.komga.domain.model.MediaContainerEntry import org.springframework.stereotype.Service import java.nio.file.Path +import java.util.* private val logger = KotlinLogging.logger {} @@ -13,6 +15,8 @@ class ZipExtractor( private val contentDetector: ContentDetector ) : MediaContainerExtractor { + private val natSortComparator: Comparator = CaseInsensitiveSimpleNaturalComparator.getInstance() + override fun mediaTypes(): List = listOf("application/zip") override fun getEntries(path: Path): List = @@ -27,6 +31,7 @@ class ZipExtractor( MediaContainerEntry(name = it.name, comment = e.message) } } + .sortedWith(compareBy(natSortComparator) { it.name }) } override fun getEntryStream(path: Path, entryName: String): ByteArray =