From 29114ae8a7bf91e41567b5ece7e6288263874899 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 22 Feb 2023 20:08:58 +0200 Subject: [PATCH] Sync logger --- app/build.gradle | 6 +++--- .../koitharu/kotatsu/core/logs/FileLogger.kt | 6 ++++++ .../org/koitharu/kotatsu/core/logs/Loggers.kt | 4 ++++ .../kotatsu/core/logs/LoggersModule.kt | 9 +++++++++ .../koitharu/kotatsu/sync/ui/SyncProvider.kt | 20 ++++++++++++++----- 5 files changed, 37 insertions(+), 8 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8ec252442..306555035 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -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' } diff --git a/app/src/main/java/org/koitharu/kotatsu/core/logs/FileLogger.kt b/app/src/main/java/org/koitharu/kotatsu/core/logs/FileLogger.kt index 3f92e1988..4ade0b3a6 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/logs/FileLogger.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/logs/FileLogger.kt @@ -68,6 +68,12 @@ class FileLogger( postFlush() } + inline fun log(messageProducer: () -> String) { + if (isEnabled) { + log(messageProducer()) + } + } + suspend fun flush() { if (!isEnabled) { return diff --git a/app/src/main/java/org/koitharu/kotatsu/core/logs/Loggers.kt b/app/src/main/java/org/koitharu/kotatsu/core/logs/Loggers.kt index 7fe974d18..008ca7d92 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/logs/Loggers.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/logs/Loggers.kt @@ -5,3 +5,7 @@ import javax.inject.Qualifier @Qualifier @Retention(AnnotationRetention.BINARY) annotation class TrackerLogger + +@Qualifier +@Retention(AnnotationRetention.BINARY) +annotation class SyncLogger diff --git a/app/src/main/java/org/koitharu/kotatsu/core/logs/LoggersModule.kt b/app/src/main/java/org/koitharu/kotatsu/core/logs/LoggersModule.kt index 547e874a0..8253044d8 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/logs/LoggersModule.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/logs/LoggersModule.kt @@ -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, ) } diff --git a/app/src/main/java/org/koitharu/kotatsu/sync/ui/SyncProvider.kt b/app/src/main/java/org/koitharu/kotatsu/sync/ui/SyncProvider.kt index 33faa46f4..225a0e07b 100644 --- a/app/src/main/java/org/koitharu/kotatsu/sync/ui/SyncProvider.kt +++ b/app/src/main/java/org/koitharu/kotatsu/sync/ui/SyncProvider.kt @@ -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?): 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 } }