Sync logger
This commit is contained in:
@@ -15,8 +15,8 @@ android {
|
||||
applicationId 'org.koitharu.kotatsu'
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 33
|
||||
versionCode 516
|
||||
versionName '4.4'
|
||||
versionCode 517
|
||||
versionName '4.4.1'
|
||||
generatedDensities = []
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
@@ -87,7 +87,7 @@ afterEvaluate {
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
implementation('com.github.KotatsuApp:kotatsu-parsers:cf345d2d0c') {
|
||||
implementation('com.github.KotatsuApp:kotatsu-parsers:f4c47b5b84') {
|
||||
exclude group: 'org.json', module: 'json'
|
||||
}
|
||||
|
||||
|
||||
@@ -68,6 +68,12 @@ class FileLogger(
|
||||
postFlush()
|
||||
}
|
||||
|
||||
inline fun log(messageProducer: () -> String) {
|
||||
if (isEnabled) {
|
||||
log(messageProducer())
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun flush() {
|
||||
if (!isEnabled) {
|
||||
return
|
||||
|
||||
@@ -5,3 +5,7 @@ import javax.inject.Qualifier
|
||||
@Qualifier
|
||||
@Retention(AnnotationRetention.BINARY)
|
||||
annotation class TrackerLogger
|
||||
|
||||
@Qualifier
|
||||
@Retention(AnnotationRetention.BINARY)
|
||||
annotation class SyncLogger
|
||||
|
||||
@@ -21,11 +21,20 @@ object LoggersModule {
|
||||
settings: AppSettings,
|
||||
) = FileLogger(context, settings, "tracker")
|
||||
|
||||
@Provides
|
||||
@SyncLogger
|
||||
fun provideSyncLogger(
|
||||
@ApplicationContext context: Context,
|
||||
settings: AppSettings,
|
||||
) = FileLogger(context, settings, "sync")
|
||||
|
||||
@Provides
|
||||
@ElementsIntoSet
|
||||
fun provideAllLoggers(
|
||||
@TrackerLogger trackerLogger: FileLogger,
|
||||
@SyncLogger syncLogger: FileLogger,
|
||||
): Set<@JvmSuppressWildcards FileLogger> = arraySetOf(
|
||||
trackerLogger,
|
||||
syncLogger,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -14,15 +14,17 @@ import dagger.hilt.InstallIn
|
||||
import dagger.hilt.android.EntryPointAccessors
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import org.koitharu.kotatsu.core.db.*
|
||||
import org.koitharu.kotatsu.core.logs.FileLogger
|
||||
import org.koitharu.kotatsu.core.logs.SyncLogger
|
||||
import java.util.concurrent.Callable
|
||||
|
||||
abstract class SyncProvider : ContentProvider() {
|
||||
|
||||
private val database by lazy {
|
||||
val appContext = checkNotNull(context?.applicationContext)
|
||||
val entryPoint = EntryPointAccessors.fromApplication(appContext, SyncProviderEntryPoint::class.java)
|
||||
entryPoint.database()
|
||||
private val entryPoint by lazy {
|
||||
EntryPointAccessors.fromApplication(checkNotNull(context), SyncProviderEntryPoint::class.java)
|
||||
}
|
||||
private val database by lazy { entryPoint.database }
|
||||
private val logger by lazy { entryPoint.logger }
|
||||
|
||||
private val supportedTables = setOf(
|
||||
TABLE_FAVOURITES,
|
||||
@@ -50,6 +52,7 @@ abstract class SyncProvider : ContentProvider() {
|
||||
.selection(selection, selectionArgs)
|
||||
.orderBy(sortOrder)
|
||||
.create()
|
||||
logger.log("query: ${sqlQuery.sql}")
|
||||
return database.openHelper.readableDatabase.query(sqlQuery)
|
||||
}
|
||||
|
||||
@@ -62,6 +65,7 @@ abstract class SyncProvider : ContentProvider() {
|
||||
if (values == null || table == null) {
|
||||
return null
|
||||
}
|
||||
logger.log { "insert: $table [$values]" }
|
||||
val db = database.openHelper.writableDatabase
|
||||
if (db.insert(table, SQLiteDatabase.CONFLICT_IGNORE, values) < 0) {
|
||||
db.update(table, values)
|
||||
@@ -71,6 +75,7 @@ abstract class SyncProvider : ContentProvider() {
|
||||
|
||||
override fun delete(uri: Uri, selection: String?, selectionArgs: Array<out String>?): Int {
|
||||
val table = getTableName(uri) ?: return 0
|
||||
logger.log { "delete: $table ($selection) : ($selectionArgs)" }
|
||||
return database.openHelper.writableDatabase.delete(table, selection, selectionArgs)
|
||||
}
|
||||
|
||||
@@ -79,6 +84,7 @@ abstract class SyncProvider : ContentProvider() {
|
||||
if (values == null || table == null) {
|
||||
return 0
|
||||
}
|
||||
logger.log { "update: $table ($selection) : ($selectionArgs) [$values]" }
|
||||
return database.openHelper.writableDatabase
|
||||
.update(table, SQLiteDatabase.CONFLICT_IGNORE, values, selection, selectionArgs)
|
||||
}
|
||||
@@ -119,6 +125,10 @@ abstract class SyncProvider : ContentProvider() {
|
||||
@EntryPoint
|
||||
@InstallIn(SingletonComponent::class)
|
||||
interface SyncProviderEntryPoint {
|
||||
fun database(): MangaDatabase
|
||||
|
||||
val database: MangaDatabase
|
||||
|
||||
@get:SyncLogger
|
||||
val logger: FileLogger
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user