SQLiteDatabase.smali
.class public Lim/tpelyyftgw/sqlite/SQLiteDatabase;
.super Ljava/lang/Object;
.source "SQLiteDatabase.java"
# instance fields
.field private inTransaction:Z
.field private isOpen:Z
.field private final sqliteHandle:J
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Ljava/lang/String;)V
.registers 4
.param p1, "fileName" # Ljava/lang/String;
.annotation system Ldalvik/annotation/Throws;
value = {
Lim/tpelyyftgw/sqlite/SQLiteException;
}
.end annotation
.line 18
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 19
invoke-static {}, Lim/tpelyyftgw/messenger/ApplicationLoader;->getFilesDirFixed()Ljava/io/File;
move-result-object v0
invoke-virtual {v0}, Ljava/io/File;->getPath()Ljava/lang/String;
move-result-object v0
invoke-virtual {p0, p1, v0}, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->opendb(Ljava/lang/String;Ljava/lang/String;)J
move-result-wide v0
iput-wide v0, p0, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->sqliteHandle:J
.line 20
const/4 v0, 0x1
iput-boolean v0, p0, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->isOpen:Z
.line 21
return-void
.end method
# virtual methods
.method public beginTransaction()V
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Lim/tpelyyftgw/sqlite/SQLiteException;
}
.end annotation
.line 91
iget-boolean v0, p0, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->inTransaction:Z
if-nez v0, :cond_d
.line 94
const/4 v0, 0x1
iput-boolean v0, p0, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->inTransaction:Z
.line 95
iget-wide v0, p0, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->sqliteHandle:J
invoke-virtual {p0, v0, v1}, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->beginTransaction(J)V
.line 96
return-void
.line 92
:cond_d
new-instance v0, Lim/tpelyyftgw/sqlite/SQLiteException;
const-string v1, "database already in transaction"
invoke-direct {v0, v1}, Lim/tpelyyftgw/sqlite/SQLiteException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method native beginTransaction(J)V
.end method
.method checkOpened()V
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Lim/tpelyyftgw/sqlite/SQLiteException;
}
.end annotation
.line 80
iget-boolean v0, p0, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->isOpen:Z
if-eqz v0, :cond_5
.line 83
return-void
.line 81
:cond_5
new-instance v0, Lim/tpelyyftgw/sqlite/SQLiteException;
const-string v1, "Database closed"
invoke-direct {v0, v1}, Lim/tpelyyftgw/sqlite/SQLiteException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public close()V
.registers 3
.line 66
iget-boolean v0, p0, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->isOpen:Z
if-eqz v0, :cond_1c
.line 68
:try_start_4
invoke-virtual {p0}, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->commitTransaction()V
.line 69
iget-wide v0, p0, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->sqliteHandle:J
invoke-virtual {p0, v0, v1}, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->closedb(J)V
:try_end_c
.catch Lim/tpelyyftgw/sqlite/SQLiteException; {:try_start_4 .. :try_end_c} :catch_d
.line 74
goto :goto_19
.line 70
:catch_d
move-exception v0
.line 71
.local v0, "e":Lim/tpelyyftgw/sqlite/SQLiteException;
sget-boolean v1, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z
if-eqz v1, :cond_19
.line 72
invoke-virtual {v0}, Lim/tpelyyftgw/sqlite/SQLiteException;->getMessage()Ljava/lang/String;
move-result-object v1
invoke-static {v1, v0}, Lim/tpelyyftgw/messenger/FileLog;->e(Ljava/lang/String;Ljava/lang/Throwable;)V
.line 75
.end local v0 # "e":Lim/tpelyyftgw/sqlite/SQLiteException;
:cond_19
:goto_19
const/4 v0, 0x0
iput-boolean v0, p0, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->isOpen:Z
.line 77
:cond_1c
return-void
.end method
.method native closedb(J)V
.annotation system Ldalvik/annotation/Throws;
value = {
Lim/tpelyyftgw/sqlite/SQLiteException;
}
.end annotation
.end method
.method public commitTransaction()V
.registers 3
.line 99
iget-boolean v0, p0, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->inTransaction:Z
if-nez v0, :cond_5
.line 100
return-void
.line 102
:cond_5
const/4 v0, 0x0
iput-boolean v0, p0, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->inTransaction:Z
.line 103
iget-wide v0, p0, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->sqliteHandle:J
invoke-virtual {p0, v0, v1}, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->commitTransaction(J)V
.line 104
return-void
.end method
.method native commitTransaction(J)V
.end method
.method public executeFast(Ljava/lang/String;)Lim/tpelyyftgw/sqlite/SQLitePreparedStatement;
.registers 4
.param p1, "sql" # Ljava/lang/String;
.annotation system Ldalvik/annotation/Throws;
value = {
Lim/tpelyyftgw/sqlite/SQLiteException;
}
.end annotation
.line 30
new-instance v0, Lim/tpelyyftgw/sqlite/SQLitePreparedStatement;
const/4 v1, 0x1
invoke-direct {v0, p0, p1, v1}, Lim/tpelyyftgw/sqlite/SQLitePreparedStatement;-><init>(Lim/tpelyyftgw/sqlite/SQLiteDatabase;Ljava/lang/String;Z)V
return-object v0
.end method
.method public varargs executeInt(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Integer;
.registers 5
.param p1, "sql" # Ljava/lang/String;
.param p2, "args" # [Ljava/lang/Object;
.annotation system Ldalvik/annotation/Throws;
value = {
Lim/tpelyyftgw/sqlite/SQLiteException;
}
.end annotation
.line 34
invoke-virtual {p0}, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->checkOpened()V
.line 35
invoke-virtual {p0, p1, p2}, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->queryFinalized(Ljava/lang/String;[Ljava/lang/Object;)Lim/tpelyyftgw/sqlite/SQLiteCursor;
move-result-object v0
.line 37
.local v0, "cursor":Lim/tpelyyftgw/sqlite/SQLiteCursor;
:try_start_7
invoke-virtual {v0}, Lim/tpelyyftgw/sqlite/SQLiteCursor;->next()Z
move-result v1
:try_end_b
.catchall {:try_start_7 .. :try_end_b} :catchall_1f
if-nez v1, :cond_12
.line 38
const/4 v1, 0x0
.line 42
invoke-virtual {v0}, Lim/tpelyyftgw/sqlite/SQLiteCursor;->dispose()V
.line 38
return-object v1
.line 40
:cond_12
const/4 v1, 0x0
:try_start_13
invoke-virtual {v0, v1}, Lim/tpelyyftgw/sqlite/SQLiteCursor;->intValue(I)I
move-result v1
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v1
:try_end_1b
.catchall {:try_start_13 .. :try_end_1b} :catchall_1f
.line 42
invoke-virtual {v0}, Lim/tpelyyftgw/sqlite/SQLiteCursor;->dispose()V
.line 40
return-object v1
.line 42
:catchall_1f
move-exception v1
invoke-virtual {v0}, Lim/tpelyyftgw/sqlite/SQLiteCursor;->dispose()V
.line 43
throw v1
.end method
.method public varargs explainQuery(Ljava/lang/String;[Ljava/lang/Object;)V
.registers 9
.param p1, "sql" # Ljava/lang/String;
.param p2, "args" # [Ljava/lang/Object;
.annotation system Ldalvik/annotation/Throws;
value = {
Lim/tpelyyftgw/sqlite/SQLiteException;
}
.end annotation
.line 47
invoke-virtual {p0}, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->checkOpened()V
.line 48
new-instance v0, Lim/tpelyyftgw/sqlite/SQLitePreparedStatement;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "EXPLAIN QUERY PLAN "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
const/4 v3, 0x1
invoke-direct {v0, p0, v1, v3}, Lim/tpelyyftgw/sqlite/SQLitePreparedStatement;-><init>(Lim/tpelyyftgw/sqlite/SQLiteDatabase;Ljava/lang/String;Z)V
invoke-virtual {v0, p2}, Lim/tpelyyftgw/sqlite/SQLitePreparedStatement;->query([Ljava/lang/Object;)Lim/tpelyyftgw/sqlite/SQLiteCursor;
move-result-object v0
.line 49
.local v0, "cursor":Lim/tpelyyftgw/sqlite/SQLiteCursor;
:goto_1e
invoke-virtual {v0}, Lim/tpelyyftgw/sqlite/SQLiteCursor;->next()Z
move-result v1
if-eqz v1, :cond_56
.line 50
invoke-virtual {v0}, Lim/tpelyyftgw/sqlite/SQLiteCursor;->getColumnCount()I
move-result v1
.line 51
.local v1, "count":I
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
.line 52
.local v3, "builder":Ljava/lang/StringBuilder;
const/4 v4, 0x0
.local v4, "a":I
:goto_2e
if-ge v4, v1, :cond_3f
.line 53
invoke-virtual {v0, v4}, Lim/tpelyyftgw/sqlite/SQLiteCursor;->stringValue(I)Ljava/lang/String;
move-result-object v5
invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v5, ", "
invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 52
add-int/lit8 v4, v4, 0x1
goto :goto_2e
.line 55
.end local v4 # "a":I
:cond_3f
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
invoke-static {v4}, Lim/tpelyyftgw/messenger/FileLog;->d(Ljava/lang/String;)V
.line 56
.end local v1 # "count":I
.end local v3 # "builder":Ljava/lang/StringBuilder;
goto :goto_1e
.line 57
:cond_56
invoke-virtual {v0}, Lim/tpelyyftgw/sqlite/SQLiteCursor;->dispose()V
.line 58
return-void
.end method
.method public finalize()V
.registers 1
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Throwable;
}
.end annotation
.line 86
invoke-super {p0}, Ljava/lang/Object;->finalize()V
.line 87
invoke-virtual {p0}, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->close()V
.line 88
return-void
.end method
.method public getSQLiteHandle()J
.registers 3
.line 15
iget-wide v0, p0, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->sqliteHandle:J
return-wide v0
.end method
.method native opendb(Ljava/lang/String;Ljava/lang/String;)J
.annotation system Ldalvik/annotation/Throws;
value = {
Lim/tpelyyftgw/sqlite/SQLiteException;
}
.end annotation
.end method
.method public varargs queryFinalized(Ljava/lang/String;[Ljava/lang/Object;)Lim/tpelyyftgw/sqlite/SQLiteCursor;
.registers 5
.param p1, "sql" # Ljava/lang/String;
.param p2, "args" # [Ljava/lang/Object;
.annotation system Ldalvik/annotation/Throws;
value = {
Lim/tpelyyftgw/sqlite/SQLiteException;
}
.end annotation
.line 61
invoke-virtual {p0}, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->checkOpened()V
.line 62
new-instance v0, Lim/tpelyyftgw/sqlite/SQLitePreparedStatement;
const/4 v1, 0x1
invoke-direct {v0, p0, p1, v1}, Lim/tpelyyftgw/sqlite/SQLitePreparedStatement;-><init>(Lim/tpelyyftgw/sqlite/SQLiteDatabase;Ljava/lang/String;Z)V
invoke-virtual {v0, p2}, Lim/tpelyyftgw/sqlite/SQLitePreparedStatement;->query([Ljava/lang/Object;)Lim/tpelyyftgw/sqlite/SQLiteCursor;
move-result-object v0
return-object v0
.end method
.method public tableExists(Ljava/lang/String;)Z
.registers 6
.param p1, "tableName" # Ljava/lang/String;
.annotation system Ldalvik/annotation/Throws;
value = {
Lim/tpelyyftgw/sqlite/SQLiteException;
}
.end annotation
.line 24
invoke-virtual {p0}, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->checkOpened()V
.line 25
const-string v0, "SELECT rowid FROM sqlite_master WHERE type=\'table\' AND name=?;"
.line 26
.local v0, "s":Ljava/lang/String;
const/4 v1, 0x1
new-array v2, v1, [Ljava/lang/Object;
const/4 v3, 0x0
aput-object p1, v2, v3
invoke-virtual {p0, v0, v2}, Lim/tpelyyftgw/sqlite/SQLiteDatabase;->executeInt(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Integer;
move-result-object v2
if-eqz v2, :cond_12
goto :goto_13
:cond_12
const/4 v1, 0x0
:goto_13
return v1
.end method