l.smali
.class public final Landroidx/room/l;
.super Ljava/lang/Object;
.source "SourceFile"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Landroidx/room/l$b;,
Landroidx/room/l$c;,
Landroidx/room/l$d;
}
.end annotation
# static fields
.field public static final m:[Ljava/lang/String;
# instance fields
.field public final a:Ljava/util/HashMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/HashMap<",
"Ljava/lang/String;",
"Ljava/lang/Integer;",
">;"
}
.end annotation
.end field
.field public final b:[Ljava/lang/String;
.field public c:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/util/Set<",
"Ljava/lang/String;",
">;>;"
}
.end annotation
.end field
.field public final d:Landroidx/room/c0;
.field public e:Ljava/util/concurrent/atomic/AtomicBoolean;
.field public volatile f:Z
.field public volatile g:Landroidx/sqlite/db/e;
.field public final h:Landroidx/room/l$b;
.field public final i:Landroidx/arch/core/internal/b;
.annotation build Landroid/annotation/SuppressLint;
value = {
"RestrictedApi"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroidx/arch/core/internal/b<",
"Landroidx/room/l$c;",
"Landroidx/room/l$d;",
">;"
}
.end annotation
.end field
.field public j:Landroidx/room/m;
.field public final k:Ljava/lang/Object;
.field public l:Landroidx/room/l$a;
# direct methods
.method public static constructor <clinit>()V
.registers 3
const-string v0, "UPDATE"
const-string v1, "DELETE"
const-string v2, "INSERT"
filled-new-array {v0, v1, v2}, [Ljava/lang/String;
move-result-object v0
sput-object v0, Landroidx/room/l;->m:[Ljava/lang/String;
return-void
.end method
.method public varargs constructor <init>(Landroidx/room/c0;Ljava/util/Map;Ljava/util/Map;[Ljava/lang/String;)V
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Landroidx/room/c0;",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/util/Set<",
"Ljava/lang/String;",
">;>;[",
"Ljava/lang/String;",
")V"
}
.end annotation
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean;
const/4 v1, 0x0
invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>(Z)V
iput-object v0, p0, Landroidx/room/l;->e:Ljava/util/concurrent/atomic/AtomicBoolean;
.line 3
iput-boolean v1, p0, Landroidx/room/l;->f:Z
.line 4
new-instance v0, Landroidx/arch/core/internal/b;
invoke-direct {v0}, Landroidx/arch/core/internal/b;-><init>()V
iput-object v0, p0, Landroidx/room/l;->i:Landroidx/arch/core/internal/b;
.line 5
new-instance v0, Ljava/lang/Object;
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
iput-object v0, p0, Landroidx/room/l;->k:Ljava/lang/Object;
.line 6
new-instance v0, Landroidx/room/l$a;
invoke-direct {v0, p0}, Landroidx/room/l$a;-><init>(Landroidx/room/l;)V
iput-object v0, p0, Landroidx/room/l;->l:Landroidx/room/l$a;
.line 7
iput-object p1, p0, Landroidx/room/l;->d:Landroidx/room/c0;
.line 8
new-instance p1, Landroidx/room/l$b;
array-length v0, p4
invoke-direct {p1, v0}, Landroidx/room/l$b;-><init>(I)V
iput-object p1, p0, Landroidx/room/l;->h:Landroidx/room/l$b;
.line 9
new-instance p1, Ljava/util/HashMap;
invoke-direct {p1}, Ljava/util/HashMap;-><init>()V
iput-object p1, p0, Landroidx/room/l;->a:Ljava/util/HashMap;
.line 10
iput-object p3, p0, Landroidx/room/l;->c:Ljava/util/Map;
.line 11
new-instance p1, Ljava/util/IdentityHashMap;
invoke-direct {p1}, Ljava/util/IdentityHashMap;-><init>()V
.line 12
invoke-static {p1}, Ljava/util/Collections;->newSetFromMap(Ljava/util/Map;)Ljava/util/Set;
.line 13
array-length p1, p4
.line 14
new-array p3, p1, [Ljava/lang/String;
iput-object p3, p0, Landroidx/room/l;->b:[Ljava/lang/String;
:goto_42
if-ge v1, p1, :cond_6f
.line 15
aget-object p3, p4, v1
sget-object v0, Ljava/util/Locale;->US:Ljava/util/Locale;
invoke-virtual {p3, v0}, Ljava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String;
move-result-object p3
.line 16
iget-object v2, p0, Landroidx/room/l;->a:Ljava/util/HashMap;
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v3
invoke-virtual {v2, p3, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 17
aget-object v2, p4, v1
invoke-interface {p2, v2}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/lang/String;
if-eqz v2, :cond_68
.line 18
iget-object p3, p0, Landroidx/room/l;->b:[Ljava/lang/String;
invoke-virtual {v2, v0}, Ljava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String;
move-result-object v0
aput-object v0, p3, v1
goto :goto_6c
.line 19
:cond_68
iget-object v0, p0, Landroidx/room/l;->b:[Ljava/lang/String;
aput-object p3, v0, v1
:goto_6c
add-int/lit8 v1, v1, 0x1
goto :goto_42
.line 20
:cond_6f
invoke-interface {p2}, Ljava/util/Map;->entrySet()Ljava/util/Set;
move-result-object p1
invoke-interface {p1}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object p1
:cond_77
:goto_77
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result p2
if-eqz p2, :cond_ad
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object p2
check-cast p2, Ljava/util/Map$Entry;
.line 21
invoke-interface {p2}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
move-result-object p3
check-cast p3, Ljava/lang/String;
sget-object p4, Ljava/util/Locale;->US:Ljava/util/Locale;
invoke-virtual {p3, p4}, Ljava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String;
move-result-object p3
.line 22
iget-object v0, p0, Landroidx/room/l;->a:Ljava/util/HashMap;
invoke-virtual {v0, p3}, Ljava/util/HashMap;->containsKey(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_77
.line 23
invoke-interface {p2}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
move-result-object p2
check-cast p2, Ljava/lang/String;
invoke-virtual {p2, p4}, Ljava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String;
move-result-object p2
.line 24
iget-object p4, p0, Landroidx/room/l;->a:Ljava/util/HashMap;
invoke-virtual {p4, p3}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p3
check-cast p3, Ljava/lang/Integer;
invoke-virtual {p4, p2, p3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_77
:cond_ad
return-void
.end method
.method public static a(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V
.registers 6
const-string v0, "`"
const-string v1, "room_table_modification_trigger_"
const-string v2, "_"
.line 1
invoke-static {p0, v0, v1, p1, v2}, Landroidx/appcompat/b;->f(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
.line 2
invoke-virtual {p0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3
invoke-virtual {p0, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
return-void
.end method
# virtual methods
.method public final b()Z
.registers 3
.line 1
iget-object v0, p0, Landroidx/room/l;->d:Landroidx/room/c0;
invoke-virtual {v0}, Landroidx/room/c0;->isOpen()Z
move-result v0
const/4 v1, 0x0
if-nez v0, :cond_a
return v1
.line 2
:cond_a
iget-boolean v0, p0, Landroidx/room/l;->f:Z
if-nez v0, :cond_17
.line 3
iget-object v0, p0, Landroidx/room/l;->d:Landroidx/room/c0;
invoke-virtual {v0}, Landroidx/room/c0;->getOpenHelper()Landroidx/sqlite/db/b;
move-result-object v0
invoke-interface {v0}, Landroidx/sqlite/db/b;->getWritableDatabase()Landroidx/sqlite/db/a;
.line 4
:cond_17
iget-boolean v0, p0, Landroidx/room/l;->f:Z
if-nez v0, :cond_1c
return v1
:cond_1c
const/4 v0, 0x1
return v0
.end method
.method public final c(Landroidx/room/l$c;)V
.registers 14
.annotation build Landroid/annotation/SuppressLint;
value = {
"RestrictedApi"
}
.end annotation
.line 1
iget-object v0, p0, Landroidx/room/l;->i:Landroidx/arch/core/internal/b;
monitor-enter v0
.line 2
:try_start_3
iget-object v1, p0, Landroidx/room/l;->i:Landroidx/arch/core/internal/b;
invoke-virtual {v1, p1}, Landroidx/arch/core/internal/b;->e(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
check-cast p1, Landroidx/room/l$d;
.line 3
monitor-exit v0
:try_end_c
.catchall {:try_start_3 .. :try_end_c} :catchall_3a
if-eqz p1, :cond_39
.line 4
iget-object v0, p0, Landroidx/room/l;->h:Landroidx/room/l$b;
iget-object p1, p1, Landroidx/room/l$d;->a:[I
.line 5
monitor-enter v0
.line 6
:try_start_13
array-length v1, p1
const/4 v2, 0x0
const/4 v3, 0x0
:goto_16
if-ge v2, v1, :cond_2f
aget v4, p1, v2
.line 7
iget-object v5, v0, Landroidx/room/l$b;->a:[J
aget-wide v6, v5, v4
const-wide/16 v8, 0x1
sub-long v10, v6, v8
.line 8
aput-wide v10, v5, v4
const/4 v4, 0x1
cmp-long v5, v6, v8
if-nez v5, :cond_2c
.line 9
iput-boolean v4, v0, Landroidx/room/l$b;->d:Z
const/4 v3, 0x1
:cond_2c
add-int/lit8 v2, v2, 0x1
goto :goto_16
.line 10
:cond_2f
monitor-exit v0
:try_end_30
.catchall {:try_start_13 .. :try_end_30} :catchall_36
if-eqz v3, :cond_39
.line 11
invoke-virtual {p0}, Landroidx/room/l;->e()V
goto :goto_39
:catchall_36
move-exception p1
.line 12
:try_start_37
monitor-exit v0
:try_end_38
.catchall {:try_start_37 .. :try_end_38} :catchall_36
throw p1
:cond_39
:goto_39
return-void
:catchall_3a
move-exception p1
.line 13
:try_start_3b
monitor-exit v0
:try_end_3c
.catchall {:try_start_3b .. :try_end_3c} :catchall_3a
throw p1
.end method
.method public final d(Landroidx/sqlite/db/a;I)V
.registers 12
.line 1
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "INSERT OR IGNORE INTO room_table_modification_log VALUES("
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v1, ", 0)"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-interface {p1, v0}, Landroidx/sqlite/db/a;->Y(Ljava/lang/String;)V
.line 2
iget-object v0, p0, Landroidx/room/l;->b:[Ljava/lang/String;
aget-object v0, v0, p2
.line 3
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
.line 4
sget-object v2, Landroidx/room/l;->m:[Ljava/lang/String;
const/4 v3, 0x0
const/4 v4, 0x0
:goto_26
const/4 v5, 0x3
if-ge v4, v5, :cond_7b
aget-object v5, v2, v4
.line 5
invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->setLength(I)V
const-string v6, "CREATE TEMP TRIGGER IF NOT EXISTS "
.line 6
invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 7
invoke-static {v1, v0, v5}, Landroidx/room/l;->a(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V
const-string v6, " AFTER "
.line 8
invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 9
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v5, " ON `"
.line 10
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v5, "` BEGIN UPDATE "
const-string v6, "room_table_modification_log"
const-string v7, " SET "
.line 11
invoke-static {v1, v0, v5, v6, v7}, Landroidx/appcompat/b;->f(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
const-string v5, "invalidated"
const-string v6, " = 1"
const-string v7, " WHERE "
const-string v8, "table_id"
.line 12
invoke-static {v1, v5, v6, v7, v8}, Landroidx/appcompat/b;->f(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
const-string v6, " = "
.line 13
invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v6, " AND "
.line 14
invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v5, " = 0"
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v5, "; END"
.line 15
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 16
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
invoke-interface {p1, v5}, Landroidx/sqlite/db/a;->Y(Ljava/lang/String;)V
add-int/lit8 v4, v4, 0x1
goto :goto_26
:cond_7b
return-void
.end method
.method public final e()V
.registers 2
.line 1
iget-object v0, p0, Landroidx/room/l;->d:Landroidx/room/c0;
invoke-virtual {v0}, Landroidx/room/c0;->isOpen()Z
move-result v0
if-nez v0, :cond_9
return-void
.line 2
:cond_9
iget-object v0, p0, Landroidx/room/l;->d:Landroidx/room/c0;
invoke-virtual {v0}, Landroidx/room/c0;->getOpenHelper()Landroidx/sqlite/db/b;
move-result-object v0
invoke-interface {v0}, Landroidx/sqlite/db/b;->getWritableDatabase()Landroidx/sqlite/db/a;
move-result-object v0
invoke-virtual {p0, v0}, Landroidx/room/l;->f(Landroidx/sqlite/db/a;)V
return-void
.end method
.method public final f(Landroidx/sqlite/db/a;)V
.registers 14
.line 1
invoke-interface {p1}, Landroidx/sqlite/db/a;->P0()Z
move-result v0
if-eqz v0, :cond_7
return-void
.line 2
:cond_7
:try_start_7
iget-object v0, p0, Landroidx/room/l;->d:Landroidx/room/c0;
invoke-virtual {v0}, Landroidx/room/c0;->getCloseLock()Ljava/util/concurrent/locks/Lock;
move-result-object v0
.line 3
invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->lock()V
:try_end_10
.catch Ljava/lang/IllegalStateException; {:try_start_7 .. :try_end_10} :catch_80
.catch Landroid/database/sqlite/SQLiteException; {:try_start_7 .. :try_end_10} :catch_80
.line 4
:try_start_10
iget-object v1, p0, Landroidx/room/l;->k:Ljava/lang/Object;
monitor-enter v1
:try_end_13
.catchall {:try_start_10 .. :try_end_13} :catchall_7b
.line 5
:try_start_13
iget-object v2, p0, Landroidx/room/l;->h:Landroidx/room/l$b;
invoke-virtual {v2}, Landroidx/room/l$b;->a()[I
move-result-object v2
if-nez v2, :cond_20
.line 6
monitor-exit v1
:try_end_1c
.catchall {:try_start_13 .. :try_end_1c} :catchall_78
.line 7
:try_start_1c
invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V
:try_end_1f
.catch Ljava/lang/IllegalStateException; {:try_start_1c .. :try_end_1f} :catch_80
.catch Landroid/database/sqlite/SQLiteException; {:try_start_1c .. :try_end_1f} :catch_80
return-void
.line 8
:cond_20
:try_start_20
array-length v3, v2
.line 9
invoke-interface {p1}, Landroidx/sqlite/db/a;->S0()Z
move-result v4
if-eqz v4, :cond_2b
.line 10
invoke-interface {p1}, Landroidx/sqlite/db/a;->m()V
goto :goto_2e
.line 11
:cond_2b
invoke-interface {p1}, Landroidx/sqlite/db/a;->d()V
:try_end_2e
.catchall {:try_start_20 .. :try_end_2e} :catchall_78
:goto_2e
const/4 v4, 0x0
const/4 v5, 0x0
:goto_30
if-ge v5, v3, :cond_69
.line 12
:try_start_32
aget v6, v2, v5
const/4 v7, 0x1
if-eq v6, v7, :cond_63
const/4 v7, 0x2
if-eq v6, v7, :cond_3b
goto :goto_66
.line 13
:cond_3b
iget-object v6, p0, Landroidx/room/l;->b:[Ljava/lang/String;
aget-object v6, v6, v5
.line 14
new-instance v7, Ljava/lang/StringBuilder;
invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
.line 15
sget-object v8, Landroidx/room/l;->m:[Ljava/lang/String;
const/4 v9, 0x0
:goto_47
const/4 v10, 0x3
if-ge v9, v10, :cond_66
aget-object v10, v8, v9
.line 16
invoke-virtual {v7, v4}, Ljava/lang/StringBuilder;->setLength(I)V
const-string v11, "DROP TRIGGER IF EXISTS "
.line 17
invoke-virtual {v7, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 18
invoke-static {v7, v6, v10}, Landroidx/room/l;->a(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V
.line 19
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v10
invoke-interface {p1, v10}, Landroidx/sqlite/db/a;->Y(Ljava/lang/String;)V
add-int/lit8 v9, v9, 0x1
goto :goto_47
:catchall_61
move-exception v2
goto :goto_74
.line 20
:cond_63
invoke-virtual {p0, p1, v5}, Landroidx/room/l;->d(Landroidx/sqlite/db/a;I)V
:cond_66
:goto_66
add-int/lit8 v5, v5, 0x1
goto :goto_30
.line 21
:cond_69
invoke-interface {p1}, Landroidx/sqlite/db/a;->k0()V
:try_end_6c
.catchall {:try_start_32 .. :try_end_6c} :catchall_61
.line 22
:try_start_6c
invoke-interface {p1}, Landroidx/sqlite/db/a;->o0()V
.line 23
monitor-exit v1
:try_end_70
.catchall {:try_start_6c .. :try_end_70} :catchall_78
.line 24
:try_start_70
invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V
:try_end_73
.catch Ljava/lang/IllegalStateException; {:try_start_70 .. :try_end_73} :catch_80
.catch Landroid/database/sqlite/SQLiteException; {:try_start_70 .. :try_end_73} :catch_80
goto :goto_80
.line 25
:goto_74
:try_start_74
invoke-interface {p1}, Landroidx/sqlite/db/a;->o0()V
.line 26
throw v2
:catchall_78
move-exception p1
.line 27
monitor-exit v1
:try_end_7a
.catchall {:try_start_74 .. :try_end_7a} :catchall_78
:try_start_7a
throw p1
:try_end_7b
.catchall {:try_start_7a .. :try_end_7b} :catchall_7b
:catchall_7b
move-exception p1
.line 28
:try_start_7c
invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V
.line 29
throw p1
:try_end_80
.catch Ljava/lang/IllegalStateException; {:try_start_7c .. :try_end_80} :catch_80
.catch Landroid/database/sqlite/SQLiteException; {:try_start_7c .. :try_end_80} :catch_80
:catch_80
:goto_80
return-void
.end method