av.smali

.class public final Lcom/imo/android/imoim/util/av;
.super Landroid/database/sqlite/SQLiteOpenHelper;
.source "SourceFile"


# static fields
.field static final a:[Ljava/lang/String;

.field private static b:Lcom/imo/android/imoim/util/av;


# direct methods
.method static constructor <clinit>()V
    .registers 49

    const-string v0, "friends"

    const-string v1, "phone_numbers"

    const-string v2, "chats_new"

    const-string v3, "calls_only"

    const-string v4, "video_messages"

    const-string v5, "messages"

    const-string v6, "cached_uploads"

    const-string v7, "stories"

    const-string v8, "blist"

    const-string v9, "call_timestamps"

    const-string v10, "friend_settings"

    const-string v11, "album"

    const-string v12, "file_transfer"

    const-string v13, "channel"

    const-string v14, "post"

    const-string v15, "my_files"

    const-string v16, "account_type"

    const-string v17, "big_group"

    const-string v18, "big_group_message"

    const-string v19, "hd_video"

    const-string v20, "forum"

    const-string v21, "deeplink_push"

    const-string v22, "relationship"

    const-string v23, "relationship_message"

    const-string v24, "bubble_info"

    const-string v25, "bg_preference"

    const-string v26, "user_stay_stat"

    const-string v27, "story_send_draft"

    const-string v28, "imo_phonebook"

    const-string v29, "call_out_history"

    const-string v30, "nearby_post_info"

    const-string v31, "nearby_topic"

    const-string v32, "nearby_post_not_interested"

    const-string v33, "call_intercept_record"

    const-string v34, "channel_salat"

    const-string v35, "stories_inter"

    const-string v36, "hd_video2"

    const-string v37, "channel_profile_page"

    const-string v38, "stickers_pack"

    const-string v39, "sticker"

    const-string v40, "favorite_expression"

    const-string v41, "community"

    const-string v42, "community_recently"

    const-string v43, "community_notice"

    const-string v44, "channel_post_cache"

    const-string v45, "channel_post_detail"

    const-string v46, "imo_live"

    const-string v47, "channel_cert_info"

    const-string v48, "friend_ringback"

    .line 16
    filled-new-array/range {v0 .. v48}, [Ljava/lang/String;

    move-result-object v0

    sput-object v0, Lcom/imo/android/imoim/util/av;->a:[Ljava/lang/String;

    return-void
.end method

.method private constructor <init>()V
    .registers 4

    .line 47
    invoke-static {}, Lcom/imo/android/imoim/IMO;->a()Lcom/imo/android/imoim/IMO;

    move-result-object v0

    const/4 v1, 0x0

    const/16 v2, 0xb6

    invoke-direct {p0, v0, v1, v1, v2}, Landroid/database/sqlite/SQLiteOpenHelper;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)V

    return-void
.end method

.method public static declared-synchronized a()Lcom/imo/android/imoim/util/av;
    .registers 2

    const-class v0, Lcom/imo/android/imoim/util/av;

    monitor-enter v0

    .line 40
    :try_start_3
    sget-object v1, Lcom/imo/android/imoim/util/av;->b:Lcom/imo/android/imoim/util/av;

    if-nez v1, :cond_e

    .line 41
    new-instance v1, Lcom/imo/android/imoim/util/av;

    invoke-direct {v1}, Lcom/imo/android/imoim/util/av;-><init>()V

    sput-object v1, Lcom/imo/android/imoim/util/av;->b:Lcom/imo/android/imoim/util/av;

    .line 43
    :cond_e
    sget-object v1, Lcom/imo/android/imoim/util/av;->b:Lcom/imo/android/imoim/util/av;
    :try_end_10
    .catchall {:try_start_3 .. :try_end_10} :catchall_12

    monitor-exit v0

    return-object v1

    :catchall_12
    move-exception v1

    monitor-exit v0

    throw v1
.end method

.method private static a(Lcom/imo/android/imoim/util/aq;Ljava/lang/String;Ljava/lang/StringBuilder;)Z
    .registers 6

    .line 104
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "SELECT * FROM "

    invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string p1, " LIMIT 1"

    invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p1

    const/4 v0, 0x0

    invoke-interface {p0, p1, v0}, Lcom/imo/android/imoim/util/aq;->a(Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor;

    move-result-object p0

    const/4 p1, 0x0

    if-nez p0, :cond_1c

    return p1

    .line 109
    :cond_1c
    invoke-interface {p0}, Landroid/database/Cursor;->getColumnNames()[Ljava/lang/String;

    move-result-object v0

    if-eqz v0, :cond_48

    .line 110
    array-length v1, v0

    if-nez v1, :cond_26

    goto :goto_48

    .line 115
    :cond_26
    invoke-virtual {p2, p1}, Ljava/lang/StringBuilder;->setLength(I)V

    .line 116
    :goto_29
    array-length v1, v0

    const/4 v2, 0x1

    if-ge p1, v1, :cond_44

    .line 117
    array-length v1, v0

    sub-int/2addr v1, v2

    if-ne p1, v1, :cond_37

    .line 118
    aget-object p1, v0, p1

    invoke-virtual {p2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    goto :goto_44

    .line 121
    :cond_37
    aget-object v1, v0, p1

    invoke-virtual {p2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v1, ","

    invoke-virtual {p2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    add-int/lit8 p1, p1, 0x1

    goto :goto_29

    .line 124
    :cond_44
    :goto_44
    invoke-static {p0}, Lcom/imo/android/imoim/util/ao;->b(Landroid/database/Cursor;)V

    return v2

    .line 111
    :cond_48
    :goto_48
    invoke-static {p0}, Lcom/imo/android/imoim/util/ao;->b(Landroid/database/Cursor;)V

    return p1
.end method


# virtual methods
.method public final onCreate(Landroid/database/sqlite/SQLiteDatabase;)V
    .registers 2

    .line 52
    invoke-static {p1}, Lcom/imo/android/imoim/util/au;->a(Landroid/database/sqlite/SQLiteDatabase;)V

    return-void
.end method

.method public final onDowngrade(Landroid/database/sqlite/SQLiteDatabase;II)V
    .registers 4

    return-void
.end method

.method public final onOpen(Landroid/database/sqlite/SQLiteDatabase;)V
    .registers 18

    move-object/from16 v1, p1

    const-string v2, " exception: "

    const-string v3, "DbHelperMem"

    .line 1023
    invoke-static {}, Lcom/imo/android/imoim/util/b/a$a;->a()Lcom/imo/android/imoim/util/b/a;

    move-result-object v0

    const/4 v4, 0x1

    .line 1041
    iput-boolean v4, v0, Lcom/imo/android/imoim/util/b/a;->b:Z

    .line 2023
    invoke-static {}, Lcom/imo/android/imoim/util/b/a$a;->a()Lcom/imo/android/imoim/util/b/a;

    move-result-object v0

    const-string v5, "init"

    .line 58
    invoke-virtual {v0, v5}, Lcom/imo/android/imoim/util/b/a;->a(Ljava/lang/String;)V

    .line 60
    invoke-static {}, Lcom/imo/android/imoim/util/at;->e()Lcom/imo/android/imoim/util/aq;

    move-result-object v6

    .line 62
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v7, "ATTACH DATABASE \'"

    invoke-direct {v0, v7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-static {}, Lcom/imo/android/imoim/IMO;->a()Lcom/imo/android/imoim/IMO;

    move-result-object v7

    const-string v8, "imofriends.db"

    invoke-virtual {v7, v8}, Lcom/imo/android/imoim/IMO;->getDatabasePath(Ljava/lang/String;)Ljava/io/File;

    move-result-object v7

    invoke-virtual {v7}, Ljava/io/File;->toString()Ljava/lang/String;

    move-result-object v7

    invoke-virtual {v0, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v7, "\' AS tempDb"

    invoke-virtual {v0, v7}, 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-virtual {v1, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V

    .line 64
    new-instance v7, Ljava/lang/StringBuilder;

    const/16 v0, 0x100

    invoke-direct {v7, v0}, Ljava/lang/StringBuilder;-><init>(I)V

    .line 65
    sget-object v8, Lcom/imo/android/imoim/util/av;->a:[Ljava/lang/String;

    array-length v9, v8

    const/4 v11, 0x0

    :goto_49
    if-ge v11, v9, :cond_153

    aget-object v12, v8, v11

    .line 3023
    invoke-static {}, Lcom/imo/android/imoim/util/b/a$a;->a()Lcom/imo/android/imoim/util/b/a;

    move-result-object v0

    .line 66
    invoke-virtual {v0, v12}, Lcom/imo/android/imoim/util/b/a;->a(Ljava/lang/String;)V

    .line 68
    invoke-static {v6, v12, v7}, Lcom/imo/android/imoim/util/av;->a(Lcom/imo/android/imoim/util/aq;Ljava/lang/String;Ljava/lang/StringBuilder;)Z

    move-result v0

    const/4 v13, 0x0

    if-nez v0, :cond_66

    .line 4023
    invoke-static {}, Lcom/imo/android/imoim/util/b/a$a;->a()Lcom/imo/android/imoim/util/b/a;

    move-result-object v0

    const-string v14, "columns is empty"

    .line 69
    invoke-virtual {v0, v12, v14, v13}, Lcom/imo/android/imoim/util/b/a;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

    goto/16 :goto_145

    .line 73
    :cond_66
    invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    .line 77
    :try_start_6a
    invoke-virtual/range {p1 .. p1}, Landroid/database/sqlite/SQLiteDatabase;->beginTransaction()V

    .line 78
    new-instance v14, Ljava/lang/StringBuilder;

    const-string v15, "INSERT INTO "

    invoke-direct {v14, v15}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v14, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v15, " ("

    invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v14, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v15, ") SELECT "

    invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v14, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v0, " FROM tempDb."

    invoke-virtual {v14, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v14, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v14}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v1, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V

    .line 5023
    invoke-static {}, Lcom/imo/android/imoim/util/b/a$a;->a()Lcom/imo/android/imoim/util/b/a;

    move-result-object v0

    .line 5070
    invoke-virtual {v0}, Lcom/imo/android/imoim/util/b/a;->a()Z

    move-result v14

    if-eqz v14, :cond_a5

    .line 5072
    iget v14, v0, Lcom/imo/android/imoim/util/b/a;->d:I

    add-int/2addr v14, v4

    iput v14, v0, Lcom/imo/android/imoim/util/b/a;->d:I
    :try_end_a5
    .catch Ljava/lang/Exception; {:try_start_6a .. :try_end_a5} :catch_b9
    .catchall {:try_start_6a .. :try_end_a5} :catchall_b6

    .line 82
    :cond_a5
    :try_start_a5
    invoke-virtual/range {p1 .. p1}, Landroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V
    :try_end_a8
    .catch Ljava/lang/Exception; {:try_start_a5 .. :try_end_a8} :catch_b3
    .catchall {:try_start_a5 .. :try_end_a8} :catchall_b6

    .line 88
    invoke-virtual/range {p1 .. p1}, Landroid/database/sqlite/SQLiteDatabase;->inTransaction()Z

    move-result v0

    if-eqz v0, :cond_b1

    .line 89
    invoke-virtual/range {p1 .. p1}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V

    :cond_b1
    const/4 v14, 0x1

    goto :goto_ea

    :catch_b3
    move-exception v0

    const/4 v14, 0x1

    goto :goto_bb

    :catchall_b6
    move-exception v0

    goto/16 :goto_149

    :catch_b9
    move-exception v0

    const/4 v14, 0x0

    .line 84
    :goto_bb
    :try_start_bb
    invoke-virtual {v0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;

    move-result-object v15

    .line 6023
    invoke-static {}, Lcom/imo/android/imoim/util/b/a$a;->a()Lcom/imo/android/imoim/util/b/a;

    move-result-object v10

    .line 85
    invoke-static {v0}, Landroid/util/Log;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v10, v12, v15, v0}, Lcom/imo/android/imoim/util/b/a;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

    .line 86
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v10, "(opt enabled) failed to copy table "

    invoke-direct {v0, v10}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v0, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    .line 6079
    invoke-static {v3, v0, v4}, Lcom/imo/android/imoim/util/bt;->a(Ljava/lang/String;Ljava/lang/String;Z)V
    :try_end_e1
    .catchall {:try_start_bb .. :try_end_e1} :catchall_b6

    .line 88
    invoke-virtual/range {p1 .. p1}, Landroid/database/sqlite/SQLiteDatabase;->inTransaction()Z

    move-result v0

    if-eqz v0, :cond_ea

    .line 89
    invoke-virtual/range {p1 .. p1}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V

    .line 7023
    :cond_ea
    :goto_ea
    invoke-static {}, Lcom/imo/android/imoim/util/b/a$a;->a()Lcom/imo/android/imoim/util/b/a;

    move-result-object v0

    .line 93
    invoke-virtual {v0, v12}, Lcom/imo/android/imoim/util/b/a;->b(Ljava/lang/String;)V

    if-nez v14, :cond_145

    .line 8023
    invoke-static {}, Lcom/imo/android/imoim/util/b/a$a;->a()Lcom/imo/android/imoim/util/b/a;

    move-result-object v0

    .line 7130
    invoke-virtual {v0, v12}, Lcom/imo/android/imoim/util/b/a;->a(Ljava/lang/String;)V

    .line 7132
    invoke-static {v12}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v0

    const-string v10, "SELECT * FROM "

    invoke-virtual {v10, v0}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    invoke-interface {v6, v0, v13}, Lcom/imo/android/imoim/util/aq;->a(Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor;

    move-result-object v0

    .line 7135
    :try_start_108
    invoke-static {v0, v1, v12}, Lcom/imo/android/imoim/util/au;->a(Landroid/database/Cursor;Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)V
    :try_end_10b
    .catch Ljava/lang/Exception; {:try_start_108 .. :try_end_10b} :catch_10c

    goto :goto_13e

    :catch_10c
    move-exception v0

    move-object v10, v0

    .line 7137
    invoke-virtual {v10}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;

    move-result-object v0

    .line 9023
    invoke-static {}, Lcom/imo/android/imoim/util/b/a$a;->a()Lcom/imo/android/imoim/util/b/a;

    move-result-object v13

    .line 7138
    invoke-static {v0}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v0

    const-string v14, "old_move:"

    invoke-virtual {v14, v0}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    invoke-static {v10}, Landroid/util/Log;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String;

    move-result-object v14

    invoke-virtual {v13, v12, v0, v14}, Lcom/imo/android/imoim/util/b/a;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

    .line 7141
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v13, "failed to copy table "

    invoke-direct {v0, v13}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v0, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    .line 9079
    invoke-static {v3, v0, v4}, Lcom/imo/android/imoim/util/bt;->a(Ljava/lang/String;Ljava/lang/String;Z)V

    .line 10023
    :goto_13e
    invoke-static {}, Lcom/imo/android/imoim/util/b/a$a;->a()Lcom/imo/android/imoim/util/b/a;

    move-result-object v0

    .line 7144
    invoke-virtual {v0, v12}, Lcom/imo/android/imoim/util/b/a;->b(Ljava/lang/String;)V

    :cond_145
    :goto_145
    add-int/lit8 v11, v11, 0x1

    goto/16 :goto_49

    .line 88
    :goto_149
    invoke-virtual/range {p1 .. p1}, Landroid/database/sqlite/SQLiteDatabase;->inTransaction()Z

    move-result v2

    if-eqz v2, :cond_152

    .line 89
    invoke-virtual/range {p1 .. p1}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V

    :cond_152
    throw v0

    :cond_153
    const-string v0, "DETACH tempDb"

    .line 99
    invoke-virtual {v1, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V

    .line 11023
    invoke-static {}, Lcom/imo/android/imoim/util/b/a$a;->a()Lcom/imo/android/imoim/util/b/a;

    move-result-object v0

    .line 100
    invoke-virtual {v0, v5}, Lcom/imo/android/imoim/util/b/a;->b(Ljava/lang/String;)V

    return-void
.end method

.method public final onUpgrade(Landroid/database/sqlite/SQLiteDatabase;II)V
    .registers 5

    .line 150
    new-instance p1, Ljava/lang/StringBuilder;

    const-string v0, "Upgrading database from version "

    invoke-direct {p1, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string p2, " to "

    invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p1, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p1

    const-string p2, "DbHelperMem"

    .line 11075
    invoke-static {p2, p1}, Lcom/imo/android/imoim/util/bt;->e(Ljava/lang/String;Ljava/lang/String;)V

    return-void
.end method