refactor(analyzer): sort pages in extractors instead of analyzer

This commit is contained in:
Gauthier Roebroeck 2020-04-09 15:52:14 +08:00
parent b724a21256
commit c5d9f10e92
3 changed files with 11 additions and 7 deletions

View file

@ -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<String> = 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
)
}

View file

@ -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<String> = CaseInsensitiveSimpleNaturalComparator.getInstance()
override fun mediaTypes(): List<String> = listOf("application/x-rar-compressed")
override fun getEntries(path: Path): List<MediaContainerEntry> =
@ -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 =

View file

@ -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<String> = CaseInsensitiveSimpleNaturalComparator.getInstance()
override fun mediaTypes(): List<String> = listOf("application/zip")
override fun getEntries(path: Path): List<MediaContainerEntry> =
@ -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 =