.class public Lcom/singular/sdk/internal/OfflineEventsMigrator; .super Ljava/lang/Object; .source "SourceFile" # static fields .field public static final logger:Lcom/singular/sdk/internal/SingularLog; # instance fields .field public aifa:Ljava/lang/String; .field public andi:Ljava/lang/String; .field public apiKey:Ljava/lang/String; .field public apid:Ljava/lang/String; .field public bmac:Ljava/lang/String; .field public canonicalDeviceId:Ljava/lang/String; .field public canonicalKeyspace:Ljava/lang/String; .field public ctx:Landroid/content/Context; .field public database:Landroid/database/sqlite/SQLiteDatabase; .field public databaseName:Ljava/lang/String; .field public imei:Ljava/lang/String; .field public mac1:Ljava/lang/String; # direct methods .method static constructor ()V .locals 1 const-string v0, "OfflineEventsMigrator" .line 18 invoke-static {v0}, Lcom/singular/sdk/internal/SingularLog;->getLogger(Ljava/lang/String;)Lcom/singular/sdk/internal/SingularLog; move-result-object v0 sput-object v0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->logger:Lcom/singular/sdk/internal/SingularLog; return-void .end method .method public constructor (Landroid/content/Context;)V .locals 4 .line 32 invoke-direct {p0}, Ljava/lang/Object;->()V const-string v0, "" iput-object v0, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->databaseName:Ljava/lang/String; iput-object p1, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->ctx:Landroid/content/Context; const-string v1, "ApsalarAppPrefs" const/4 v2, 0x0 .line 35 invoke-virtual {p1, v1, v2}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences; move-result-object v1 :try_start_0 const-string v3, "HASH" .line 37 invoke-interface {v1, v3, v0}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; move-result-object v0 .line 38 new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1}, Ljava/lang/StringBuilder;->()V const-string v3, "Apsalar.sqlite_" invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-virtual {p1, v0}, Landroid/content/Context;->getDatabasePath(Ljava/lang/String;)Ljava/io/File; move-result-object p1 .line 39 invoke-virtual {p1}, Ljava/io/File;->exists()Z move-result v0 if-eqz v0, :cond_0 .line 40 invoke-virtual {p1}, Ljava/io/File;->getPath()Ljava/lang/String; move-result-object p1 iput-object p1, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->databaseName:Ljava/lang/String; const/4 v0, 0x0 .line 41 invoke-static {p1, v0, v2}, Landroid/database/sqlite/SQLiteDatabase;->openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)Landroid/database/sqlite/SQLiteDatabase; move-result-object p1 iput-object p1, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->database:Landroid/database/sqlite/SQLiteDatabase; :try_end_0 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 goto :goto_0 :catch_0 move-exception p1 sget-object v0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->logger:Lcom/singular/sdk/internal/SingularLog; const-string v1, "Error in OfflineEventsMigrator" .line 44 invoke-virtual {v0, v1, p1}, Lcom/singular/sdk/internal/SingularLog;->error(Ljava/lang/String;Ljava/lang/Throwable;)I :cond_0 :goto_0 return-void .end method # virtual methods .method public deleteDatabase()V .locals 2 iget-object v0, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->database:Landroid/database/sqlite/SQLiteDatabase; if-eqz v0, :cond_0 iget-object v0, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->ctx:Landroid/content/Context; iget-object v1, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->databaseName:Ljava/lang/String; .line 50 invoke-virtual {v0, v1}, Landroid/content/Context;->deleteDatabase(Ljava/lang/String;)Z :cond_0 return-void .end method .method public migrate()V .locals 12 iget-object v0, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->database:Landroid/database/sqlite/SQLiteDatabase; if-nez v0, :cond_0 sget-object v0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->logger:Lcom/singular/sdk/internal/SingularLog; const-string v1, "No database found; skipping." .line 56 invoke-virtual {v0, v1}, Lcom/singular/sdk/internal/SingularLog;->debug(Ljava/lang/String;)I return-void :cond_0 const-string v1, "SELECT * FROM config" const/4 v2, 0x0 .line 62 invoke-virtual {v0, v1, v2}, Landroid/database/sqlite/SQLiteDatabase;->rawQuery(Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor; move-result-object v0 if-eqz v0, :cond_b .line 63 invoke-interface {v0}, Landroid/database/Cursor;->getCount()I move-result v1 if-nez v1, :cond_1 goto/16 :goto_6 .line 67 :cond_1 :goto_0 invoke-interface {v0}, Landroid/database/Cursor;->moveToNext()Z move-result v1 const/4 v3, 0x5 const/4 v4, 0x0 if-eqz v1, :cond_2 .line 68 invoke-interface {v0, v4}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; move-result-object v1 iput-object v1, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->apiKey:Ljava/lang/String; .line 69 invoke-interface {v0, v3}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; move-result-object v1 iput-object v1, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->andi:Ljava/lang/String; const/4 v1, 0x6 .line 70 invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; move-result-object v1 iput-object v1, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->aifa:Ljava/lang/String; const/4 v1, 0x7 .line 71 invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; move-result-object v1 iput-object v1, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->imei:Ljava/lang/String; const/16 v1, 0xa .line 72 invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; move-result-object v1 iput-object v1, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->apid:Ljava/lang/String; const/16 v1, 0xc .line 73 invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; move-result-object v1 iput-object v1, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->canonicalDeviceId:Ljava/lang/String; const/16 v1, 0xb .line 74 invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; move-result-object v1 iput-object v1, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->canonicalKeyspace:Ljava/lang/String; const/16 v1, 0x8 .line 75 invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; move-result-object v1 iput-object v1, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->mac1:Ljava/lang/String; const/16 v1, 0x9 .line 76 invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; move-result-object v1 iput-object v1, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->bmac:Ljava/lang/String; goto :goto_0 .line 78 :cond_2 invoke-interface {v0}, Landroid/database/Cursor;->close()V const-string v0, "SELECT * FROM events" iget-object v1, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->database:Landroid/database/sqlite/SQLiteDatabase; .line 83 invoke-virtual {v1, v0, v2}, Landroid/database/sqlite/SQLiteDatabase;->rawQuery(Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor; move-result-object v0 if-eqz v0, :cond_b .line 84 invoke-interface {v0}, Landroid/database/Cursor;->getCount()I move-result v1 if-nez v1, :cond_3 goto/16 :goto_6 :cond_3 move v1, v4 .line 89 :goto_1 invoke-interface {v0}, Landroid/database/Cursor;->moveToNext()Z move-result v5 if-eqz v5, :cond_a .line 92 :try_start_0 new-instance v5, Ljava/util/HashMap; invoke-direct {v5}, Ljava/util/HashMap;->()V const-string v6, "__TIMESTAMP__" const/4 v7, 0x1 .line 93 invoke-interface {v0, v7}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; move-result-object v8 invoke-interface {v5, v6, v8}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; const/4 v6, 0x4 .line 94 invoke-interface {v0, v6}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; move-result-object v6 .line 95 invoke-static {v6}, Lcom/singular/sdk/internal/Utils;->isEmptyOrNull(Ljava/lang/String;)Z move-result v8 :try_end_0 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 const-string v9, "n" if-nez v8, :cond_4 .line 96 :try_start_1 invoke-interface {v5, v9, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; goto :goto_2 :catch_0 move-exception v5 goto/16 :goto_5 .line 98 :cond_4 :goto_2 invoke-interface {v0, v3}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; move-result-object v6 .line 99 invoke-static {v6}, Lcom/singular/sdk/internal/Utils;->isEmptyOrNull(Ljava/lang/String;)Z move-result v8 if-nez v8, :cond_5 const-string v8, "e" .line 100 invoke-interface {v5, v8, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .line 102 :cond_5 new-instance v6, Lorg/json/JSONObject; const/4 v8, 0x2 invoke-interface {v0, v8}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; move-result-object v8 invoke-direct {v6, v8}, Lorg/json/JSONObject;->(Ljava/lang/String;)V const/4 v8, 0x3 .line 103 invoke-interface {v0, v8}, Landroid/database/Cursor;->getInt(I)I move-result v10 :try_end_1 .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0 const-string v11, "__TYPE__" if-ne v10, v7, :cond_6 :try_start_2 const-string v7, "SESSION_START" .line 105 invoke-interface {v5, v11, v7}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; const-string v7, "appName" .line 106 invoke-virtual {v6, v7}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; move-result-object v7 invoke-interface {v5, v9, v7}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; goto :goto_3 :cond_6 if-ne v10, v8, :cond_7 const-string v7, "EVENT" .line 108 invoke-interface {v5, v11, v7}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; goto :goto_3 :cond_7 if-ne v10, v3, :cond_8 const-string v7, "RESOLVE" .line 110 invoke-interface {v5, v11, v7}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; :cond_8 :goto_3 const-string v7, "s" const-string v8, "sessionId" .line 112 invoke-virtual {v6, v8}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; move-result-object v8 invoke-interface {v5, v7, v8}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; const-string v7, "a" const-string v8, "apiKey" .line 113 invoke-virtual {v6, v8}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; move-result-object v8 invoke-interface {v5, v7, v8}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; const-string v7, "ab" const-string v8, "abi" .line 114 invoke-virtual {v6, v8}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; move-result-object v8 invoke-interface {v5, v7, v8}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; const-string v7, "p" const-string v8, "platform" .line 115 invoke-virtual {v6, v8}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; move-result-object v8 invoke-interface {v5, v7, v8}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; const-string v7, "i" const-string v8, "clsPackage" .line 116 invoke-virtual {v6, v8}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; move-result-object v8 invoke-interface {v5, v7, v8}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; const-string v7, "av" const-string v8, "appVersion" .line 117 invoke-virtual {v6, v8}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; move-result-object v8 invoke-interface {v5, v7, v8}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; const-string v7, "sdk" const-string v8, "sdkVersion" .line 118 invoke-virtual {v6, v8}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; move-result-object v8 invoke-interface {v5, v7, v8}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; const-string v7, "ma" const-string v8, "manufacturer" .line 119 invoke-virtual {v6, v8}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; move-result-object v8 invoke-interface {v5, v7, v8}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; const-string v7, "br" const-string v8, "brand" .line 120 invoke-virtual {v6, v8}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; move-result-object v8 invoke-interface {v5, v7, v8}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; const-string v7, "mo" const-string v8, "model" .line 121 invoke-virtual {v6, v8}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; move-result-object v8 invoke-interface {v5, v7, v8}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; const-string v7, "v" const-string v8, "osVersion" .line 122 invoke-virtual {v6, v8}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; move-result-object v8 invoke-interface {v5, v7, v8}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; const-string v7, "c" const-string v8, "connType" .line 123 invoke-virtual {v6, v8}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; move-result-object v8 invoke-interface {v5, v7, v8}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; const-string v7, "pr" const-string v8, "product" .line 124 invoke-virtual {v6, v8}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; move-result-object v8 invoke-interface {v5, v7, v8}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; const-string v7, "de" const-string v8, "device" .line 125 invoke-virtual {v6, v8}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; move-result-object v6 invoke-interface {v5, v7, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; iget-object v6, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->aifa:Ljava/lang/String; .line 127 invoke-static {v6}, Lcom/singular/sdk/internal/Utils;->isEmptyOrNull(Ljava/lang/String;)Z move-result v6 :try_end_2 .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_0 const-string v7, "u" const-string v8, "k" if-nez v6, :cond_9 :try_start_3 const-string v6, "aifa" iget-object v9, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->aifa:Ljava/lang/String; .line 128 invoke-interface {v5, v6, v9}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; const-string v6, "AIFA" .line 129 invoke-interface {v5, v8, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; iget-object v6, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->canonicalDeviceId:Ljava/lang/String; .line 130 invoke-interface {v5, v7, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; goto :goto_4 :cond_9 const-string v6, "ANDI" .line 132 invoke-interface {v5, v8, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; iget-object v6, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->andi:Ljava/lang/String; .line 133 invoke-interface {v5, v7, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; :try_end_3 .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_0 .line 138 :goto_4 :try_start_4 new-instance v6, Lorg/json/JSONObject; invoke-direct {v6, v5}, Lorg/json/JSONObject;->(Ljava/util/Map;)V .line 139 invoke-virtual {v6}, Lorg/json/JSONObject;->toString()Ljava/lang/String; move-result-object v5 invoke-static {v5}, Lcom/singular/sdk/internal/BaseApi;->from(Ljava/lang/String;)Lcom/singular/sdk/internal/BaseApi; move-result-object v5 .line 142 invoke-static {}, Lcom/singular/sdk/internal/SingularInstance;->getInstance()Lcom/singular/sdk/internal/SingularInstance; move-result-object v6 invoke-virtual {v6}, Lcom/singular/sdk/internal/SingularInstance;->getApiManager()Lcom/singular/sdk/internal/ApiManager; move-result-object v6 invoke-virtual {v6, v5}, Lcom/singular/sdk/internal/ApiManager;->enqueue(Lcom/singular/sdk/internal/BaseApi;)V iget-object v5, p0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->database:Landroid/database/sqlite/SQLiteDatabase; const-string v6, "events" .line 144 new-instance v7, Ljava/lang/StringBuilder; invoke-direct {v7}, Ljava/lang/StringBuilder;->()V const-string v8, "id=" invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-interface {v0, v4}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; move-result-object v8 invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v7 invoke-virtual {v5, v6, v7, v2}, Landroid/database/sqlite/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I :try_end_4 .catch Ljava/io/IOException; {:try_start_4 .. :try_end_4} :catch_1 .catch Ljava/lang/Exception; {:try_start_4 .. :try_end_4} :catch_0 add-int/lit8 v1, v1, 0x1 goto/16 :goto_1 :catch_1 move-exception v5 :try_start_5 sget-object v6, Lcom/singular/sdk/internal/OfflineEventsMigrator;->logger:Lcom/singular/sdk/internal/SingularLog; const-string v7, "Error in JSON serialization" .line 148 invoke-virtual {v6, v7, v5}, Lcom/singular/sdk/internal/SingularLog;->error(Ljava/lang/String;Ljava/lang/Throwable;)I :try_end_5 .catch Ljava/lang/Exception; {:try_start_5 .. :try_end_5} :catch_0 goto/16 :goto_1 :goto_5 sget-object v6, Lcom/singular/sdk/internal/OfflineEventsMigrator;->logger:Lcom/singular/sdk/internal/SingularLog; .line 151 invoke-virtual {v5}, Ljava/lang/Throwable;->getMessage()Ljava/lang/String; move-result-object v5 invoke-virtual {v6, v5}, Lcom/singular/sdk/internal/SingularLog;->debug(Ljava/lang/String;)I goto/16 :goto_1 .line 156 :cond_a invoke-interface {v0}, Landroid/database/Cursor;->close()V .line 159 invoke-virtual {p0}, Lcom/singular/sdk/internal/OfflineEventsMigrator;->deleteDatabase()V sget-object v0, Lcom/singular/sdk/internal/OfflineEventsMigrator;->logger:Lcom/singular/sdk/internal/SingularLog; .line 161 new-instance v2, Ljava/lang/StringBuilder; invoke-direct {v2}, Ljava/lang/StringBuilder;->()V const-string v3, "Migrated " invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; const-string v1, " events!" invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Lcom/singular/sdk/internal/SingularLog;->debug(Ljava/lang/String;)I :cond_b :goto_6 return-void .end method