MD5PathConvert.smali
.class public Lcom/cleanmaster/junk/util/MD5PathConvert;
.super Ljava/lang/Object;
.source "MD5PathConvert.java"
# static fields
.field private static mInstance:Lcom/cleanmaster/junk/util/MD5PathConvert;
# instance fields
.field mExternalStoragePaths:Ljava/util/ArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayList",
"<",
"Ljava/lang/String;",
">;"
}
.end annotation
.end field
.field private mRefKeyList:Ljava/lang/ref/SoftReference;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/ref/SoftReference",
"<",
"Ljava/util/HashSet",
"<",
"Ljava/lang/String;",
">;>;"
}
.end annotation
.end field
.field private mRefMd5PathMap:Ljava/lang/ref/SoftReference;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/ref/SoftReference",
"<",
"Ljava/util/HashMap",
"<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;>;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 55
new-instance v0, Lcom/cleanmaster/junk/util/MD5PathConvert;
invoke-direct {v0}, Lcom/cleanmaster/junk/util/MD5PathConvert;-><init>()V
sput-object v0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mInstance:Lcom/cleanmaster/junk/util/MD5PathConvert;
return-void
.end method
.method protected constructor <init>()V
.registers 3
.prologue
const/4 v0, 0x0
.line 39
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 23
iput-object v0, p0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mRefMd5PathMap:Ljava/lang/ref/SoftReference;
.line 24
iput-object v0, p0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mRefKeyList:Ljava/lang/ref/SoftReference;
.line 26
iput-object v0, p0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mExternalStoragePaths:Ljava/util/ArrayList;
.line 40
new-instance v0, Ljava/lang/ref/SoftReference;
new-instance v1, Ljava/util/HashMap;
invoke-direct {v1}, Ljava/util/HashMap;-><init>()V
invoke-direct {v0, v1}, Ljava/lang/ref/SoftReference;-><init>(Ljava/lang/Object;)V
iput-object v0, p0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mRefMd5PathMap:Ljava/lang/ref/SoftReference;
.line 41
new-instance v0, Ljava/lang/ref/SoftReference;
new-instance v1, Ljava/util/HashSet;
invoke-direct {v1}, Ljava/util/HashSet;-><init>()V
invoke-direct {v0, v1}, Ljava/lang/ref/SoftReference;-><init>(Ljava/lang/Object;)V
iput-object v0, p0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mRefKeyList:Ljava/lang/ref/SoftReference;
.line 44
new-instance v0, Lcom/cleanmaster/junk/util/StorageList;
invoke-direct {v0}, Lcom/cleanmaster/junk/util/StorageList;-><init>()V
.line 45
invoke-virtual {v0}, Lcom/cleanmaster/junk/util/StorageList;->getMountedVolumePaths()Ljava/util/ArrayList;
move-result-object v0
iput-object v0, p0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mExternalStoragePaths:Ljava/util/ArrayList;
.line 46
iget-object v0, p0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mExternalStoragePaths:Ljava/util/ArrayList;
if-eqz v0, :cond_39
iget-object v0, p0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mExternalStoragePaths:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->isEmpty()Z
move-result v0
if-eqz v0, :cond_45
.line 47
:cond_39
invoke-static {}, Landroid/os/Environment;->getExternalStorageState()Ljava/lang/String;
move-result-object v0
const-string v1, "mounted"
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_46
.line 54
:cond_45
:goto_45
return-void
.line 51
:cond_46
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mExternalStoragePaths:Ljava/util/ArrayList;
.line 52
iget-object v0, p0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mExternalStoragePaths:Ljava/util/ArrayList;
invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File;
move-result-object v1
invoke-virtual {v1}, Ljava/io/File;->getPath()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
goto :goto_45
.end method
.method public static getInstance()Lcom/cleanmaster/junk/util/MD5PathConvert;
.registers 1
.prologue
.line 57
sget-object v0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mInstance:Lcom/cleanmaster/junk/util/MD5PathConvert;
return-object v0
.end method
.method private getSubDirMap(Ljava/lang/String;Ljava/lang/String;Ljava/util/HashMap;Ljava/util/HashSet;[J)Ljava/util/HashMap;
.registers 18
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"Ljava/lang/String;",
"Ljava/util/HashMap",
"<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;",
"Ljava/util/HashSet",
"<",
"Ljava/lang/String;",
">;[J)",
"Ljava/util/HashMap",
"<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;"
}
.end annotation
.prologue
.line 61
monitor-enter p0
.line 62
:try_start_1
move-object/from16 v0, p4
invoke-virtual {v0, p1}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_b
.line 63
monitor-exit p0
.line 99
:cond_a
return-object p3
.line 65
:cond_b
move-object/from16 v0, p4
invoke-virtual {v0, p1}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
.line 66
invoke-virtual {p3, p2, p1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 67
monitor-exit p0
:try_end_14
.catchall {:try_start_1 .. :try_end_14} :catchall_49
.line 69
iget-object v1, p0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mExternalStoragePaths:Ljava/util/ArrayList;
invoke-virtual {v1}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object v4
:cond_1a
:goto_1a
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_a
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/String;
.line 70
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
.line 71
move-object/from16 v0, p5
invoke-static {v5, v0}, Lcom/cleanmaster/util/EnableCacheListDir;->listDir(Ljava/lang/String;[J)Lcom/cm/plugincluster/junkengine/util/path/IFilesAndFoldersStringList;
move-result-object v6
.line 72
if-eqz v6, :cond_1a
.line 75
invoke-interface {v6}, Lcom/cm/plugincluster/junkengine/util/path/IFilesAndFoldersStringList;->getFolderNameList()Lcom/cm/plugincluster/junkengine/util/path/IKStringList;
move-result-object v7
.line 76
if-nez v7, :cond_4c
.line 77
invoke-interface {v6}, Lcom/cm/plugincluster/junkengine/util/path/IFilesAndFoldersStringList;->release()V
goto :goto_1a
.line 67
:catchall_49
move-exception v1
:try_start_4a
monitor-exit p0
:try_end_4b
.catchall {:try_start_4a .. :try_end_4b} :catchall_49
throw v1
.line 81
:cond_4c
invoke-interface {v7}, Lcom/cm/plugincluster/junkengine/util/path/IKStringList;->size()I
move-result v8
.line 83
const/4 v2, 0x0
move v3, v2
:goto_52
if-ge v3, v8, :cond_ab
.line 84
new-instance v9, Ljava/io/File;
invoke-interface {v7, v3}, Lcom/cm/plugincluster/junkengine/util/path/IKStringList;->get(I)Ljava/lang/String;
move-result-object v2
invoke-direct {v9, v5, v2}, Ljava/io/File;-><init>(Ljava/lang/String;Ljava/lang/String;)V
.line 85
invoke-virtual {v9}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
move-result-object v10
.line 87
invoke-virtual {p2}, Ljava/lang/String;->length()I
move-result v2
if-lez v2, :cond_b3
.line 88
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v2, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
const-string v11, "+"
invoke-virtual {v2, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
.line 90
:goto_7a
new-instance v11, Ljava/lang/StringBuilder;
invoke-direct {v11}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v11, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v9}, Ljava/io/File;->getName()Ljava/lang/String;
move-result-object v9
invoke-static {v9}, Lcom/cleanmaster/commons/Md5Util;->getFilePathMd5(Ljava/lang/String;)Ljava/lang/String;
move-result-object v9
invoke-virtual {v2, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
.line 91
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v9
invoke-virtual {v10}, Ljava/lang/String;->length()I
move-result v11
invoke-virtual {v10, v9, v11}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v9
.line 92
monitor-enter p0
.line 93
:try_start_a0
invoke-virtual {p3, v2, v9}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 94
monitor-exit p0
.line 83
add-int/lit8 v2, v3, 0x1
move v3, v2
goto :goto_52
.line 94
:catchall_a8
move-exception v1
monitor-exit p0
:try_end_aa
.catchall {:try_start_a0 .. :try_end_aa} :catchall_a8
throw v1
.line 96
:cond_ab
invoke-interface {v7}, Lcom/cm/plugincluster/junkengine/util/path/IKStringList;->release()V
.line 97
invoke-interface {v6}, Lcom/cm/plugincluster/junkengine/util/path/IFilesAndFoldersStringList;->release()V
goto/16 :goto_1a
:cond_b3
move-object v2, p2
goto :goto_7a
.end method
# virtual methods
.method public clearSubDirMap()V
.registers 2
.prologue
.line 29
monitor-enter p0
.line 30
:try_start_1
iget-object v0, p0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mRefMd5PathMap:Ljava/lang/ref/SoftReference;
invoke-virtual {v0}, Ljava/lang/ref/SoftReference;->get()Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_14
.line 31
iget-object v0, p0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mRefMd5PathMap:Ljava/lang/ref/SoftReference;
invoke-virtual {v0}, Ljava/lang/ref/SoftReference;->get()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/util/HashMap;
invoke-virtual {v0}, Ljava/util/HashMap;->clear()V
.line 33
:cond_14
iget-object v0, p0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mRefKeyList:Ljava/lang/ref/SoftReference;
invoke-virtual {v0}, Ljava/lang/ref/SoftReference;->get()Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_27
.line 34
iget-object v0, p0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mRefKeyList:Ljava/lang/ref/SoftReference;
invoke-virtual {v0}, Ljava/lang/ref/SoftReference;->get()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/util/HashSet;
invoke-virtual {v0}, Ljava/util/HashSet;->clear()V
.line 36
:cond_27
monitor-exit p0
.line 37
return-void
.line 36
:catchall_29
move-exception v0
monitor-exit p0
:try_end_2b
.catchall {:try_start_1 .. :try_end_2b} :catchall_29
throw v0
.end method
.method public getFilePathByMd5(Ljava/lang/String;[J)Ljava/lang/String;
.registers 19
.prologue
.line 109
if-eqz p1, :cond_12
invoke-virtual/range {p1 .. p1}, Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/String;->length()I
move-result v2
if-eqz v2, :cond_12
move-object/from16 v0, p0
iget-object v2, v0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mExternalStoragePaths:Ljava/util/ArrayList;
if-nez v2, :cond_14
.line 110
:cond_12
const/4 v2, 0x0
.line 176
:cond_13
:goto_13
return-object v2
.line 114
:cond_14
move-object/from16 v0, p0
iget-object v2, v0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mRefMd5PathMap:Ljava/lang/ref/SoftReference;
invoke-virtual {v2}, Ljava/lang/ref/SoftReference;->get()Ljava/lang/Object;
move-result-object v2
if-eqz v2, :cond_28
move-object/from16 v0, p0
iget-object v2, v0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mRefKeyList:Ljava/lang/ref/SoftReference;
invoke-virtual {v2}, Ljava/lang/ref/SoftReference;->get()Ljava/lang/Object;
move-result-object v2
if-nez v2, :cond_44
.line 115
:cond_28
new-instance v2, Ljava/lang/ref/SoftReference;
new-instance v3, Ljava/util/HashMap;
invoke-direct {v3}, Ljava/util/HashMap;-><init>()V
invoke-direct {v2, v3}, Ljava/lang/ref/SoftReference;-><init>(Ljava/lang/Object;)V
move-object/from16 v0, p0
iput-object v2, v0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mRefMd5PathMap:Ljava/lang/ref/SoftReference;
.line 116
new-instance v2, Ljava/lang/ref/SoftReference;
new-instance v3, Ljava/util/HashSet;
invoke-direct {v3}, Ljava/util/HashSet;-><init>()V
invoke-direct {v2, v3}, Ljava/lang/ref/SoftReference;-><init>(Ljava/lang/Object;)V
move-object/from16 v0, p0
iput-object v2, v0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mRefKeyList:Ljava/lang/ref/SoftReference;
.line 118
:cond_44
move-object/from16 v0, p0
iget-object v2, v0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mRefMd5PathMap:Ljava/lang/ref/SoftReference;
invoke-virtual {v2}, Ljava/lang/ref/SoftReference;->get()Ljava/lang/Object;
move-result-object v5
check-cast v5, Ljava/util/HashMap;
.line 119
move-object/from16 v0, p0
iget-object v2, v0, Lcom/cleanmaster/junk/util/MD5PathConvert;->mRefKeyList:Ljava/lang/ref/SoftReference;
invoke-virtual {v2}, Ljava/lang/ref/SoftReference;->get()Ljava/lang/Object;
move-result-object v6
check-cast v6, Ljava/util/HashSet;
.line 121
monitor-enter p0
.line 122
:try_start_59
move-object/from16 v0, p1
invoke-virtual {v5, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/lang/String;
.line 123
invoke-static {v2}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v3
if-nez v3, :cond_6c
.line 124
monitor-exit p0
goto :goto_13
.line 126
:catchall_69
move-exception v2
monitor-exit p0
:try_end_6b
.catchall {:try_start_59 .. :try_end_6b} :catchall_69
throw v2
:cond_6c
:try_start_6c
monitor-exit p0
:try_end_6d
.catchall {:try_start_6c .. :try_end_6d} :catchall_69
.line 128
const-string v2, "\\+"
move-object/from16 v0, p1
invoke-virtual {v0, v2}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object v10
.line 130
const-string v7, "/"
.line 131
const-string v4, ""
.line 132
array-length v2, v10
add-int/lit8 v11, v2, -0x1
.line 134
const-string v3, ""
.line 135
const/4 v2, 0x0
move v9, v2
move-object v2, v3
move-object v3, v7
:goto_82
if-gt v9, v11, :cond_e9
.line 137
aget-object v7, v10, v9
invoke-static {v7}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v7
if-nez v7, :cond_e7
.line 139
if-nez v9, :cond_bb
.line 140
aget-object v8, v10, v9
.line 147
:goto_90
const/4 v7, 0x0
.line 148
if-eqz p2, :cond_9d
.line 149
move-object/from16 v0, p2
array-length v2, v0
new-array v7, v2, [J
.line 150
const-wide/16 v12, 0x0
invoke-static {v7, v12, v13}, Ljava/util/Arrays;->fill([JJ)V
:cond_9d
move-object/from16 v2, p0
.line 152
invoke-direct/range {v2 .. v7}, Lcom/cleanmaster/junk/util/MD5PathConvert;->getSubDirMap(Ljava/lang/String;Ljava/lang/String;Ljava/util/HashMap;Ljava/util/HashSet;[J)Ljava/util/HashMap;
move-result-object v2
invoke-virtual {v2, v8}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/lang/String;
.line 154
if-eqz p2, :cond_d5
.line 155
const/4 v3, 0x0
:goto_ac
move-object/from16 v0, p2
array-length v4, v0
if-ge v3, v4, :cond_d5
.line 156
aget-wide v12, p2, v3
aget-wide v14, v7, v3
add-long/2addr v12, v14
aput-wide v12, p2, v3
.line 155
add-int/lit8 v3, v3, 0x1
goto :goto_ac
.line 142
:cond_bb
new-instance v7, Ljava/lang/StringBuilder;
invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v7, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
const-string v7, "+"
invoke-virtual {v2, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
aget-object v7, v10, v9
invoke-virtual {v2, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v8
goto :goto_90
.line 161
:cond_d5
invoke-static {v2}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v3
if-eqz v3, :cond_de
.line 162
const/4 v2, 0x0
goto/16 :goto_13
.line 166
:cond_de
if-eq v9, v11, :cond_13
move-object v3, v2
move-object v2, v8
.line 135
:goto_e2
add-int/lit8 v4, v9, 0x1
move v9, v4
move-object v4, v8
goto :goto_82
:cond_e7
move-object v8, v4
goto :goto_e2
:cond_e9
move-object v2, v3
goto/16 :goto_13
.end method