AbstractModifyFileTask.smali
.class abstract Lnet/lingala/zip4j/tasks/AbstractModifyFileTask;
.super Lnet/lingala/zip4j/tasks/AsyncZipTask;
# annotations
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">",
"Lnet/lingala/zip4j/tasks/AsyncZipTask<",
"TT;>;"
}
.end annotation
# direct methods
.method constructor <init>(Lnet/lingala/zip4j/tasks/AsyncZipTask$AsyncTaskParameters;)V
.registers 2
.line 1
invoke-direct {p0, p1}, Lnet/lingala/zip4j/tasks/AsyncZipTask;-><init>(Lnet/lingala/zip4j/tasks/AsyncZipTask$AsyncTaskParameters;)V
return-void
.end method
.method private getIndexOfFileHeader(Ljava/util/List;Lnet/lingala/zip4j/model/FileHeader;)I
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List<",
"Lnet/lingala/zip4j/model/FileHeader;",
">;",
"Lnet/lingala/zip4j/model/FileHeader;",
")I"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Lnet/lingala/zip4j/exception/ZipException;
}
.end annotation
const/4 v0, 0x0
.line 1
:goto_1
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v1
if-ge v0, v1, :cond_17
.line 2
invoke-interface {p1, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lnet/lingala/zip4j/model/FileHeader;
.line 3
invoke-virtual {v1, p2}, Lnet/lingala/zip4j/model/FileHeader;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_14
return v0
:cond_14
add-int/lit8 v0, v0, 0x1
goto :goto_1
.line 8
:cond_17
new-instance p1, Lnet/lingala/zip4j/exception/ZipException;
const-string p2, "Could not find file header in list of central directory file headers"
invoke-direct {p1, p2}, Lnet/lingala/zip4j/exception/ZipException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method private restoreFileName(Ljava/io/File;Ljava/io/File;)V
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Lnet/lingala/zip4j/exception/ZipException;
}
.end annotation
.line 1
invoke-virtual {p1}, Ljava/io/File;->delete()Z
move-result v0
if-eqz v0, :cond_15
.line 2
invoke-virtual {p2, p1}, Ljava/io/File;->renameTo(Ljava/io/File;)Z
move-result p1
if-eqz p1, :cond_d
return-void
.line 3
:cond_d
new-instance p1, Lnet/lingala/zip4j/exception/ZipException;
const-string p2, "cannot rename modified zip file"
invoke-direct {p1, p2}, Lnet/lingala/zip4j/exception/ZipException;-><init>(Ljava/lang/String;)V
throw p1
.line 6
:cond_15
new-instance p1, Lnet/lingala/zip4j/exception/ZipException;
const-string p2, "cannot delete old zip file"
invoke-direct {p1, p2}, Lnet/lingala/zip4j/exception/ZipException;-><init>(Ljava/lang/String;)V
throw p1
.end method
# virtual methods
.method cleanupFile(ZLjava/io/File;Ljava/io/File;)V
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Lnet/lingala/zip4j/exception/ZipException;
}
.end annotation
if-eqz p1, :cond_6
.line 1
invoke-direct {p0, p2, p3}, Lnet/lingala/zip4j/tasks/AbstractModifyFileTask;->restoreFileName(Ljava/io/File;Ljava/io/File;)V
goto :goto_c
.line 3
:cond_6
invoke-virtual {p3}, Ljava/io/File;->delete()Z
move-result p1
if-eqz p1, :cond_d
:goto_c
return-void
.line 4
:cond_d
new-instance p1, Lnet/lingala/zip4j/exception/ZipException;
const-string p2, "Could not delete temporary file"
invoke-direct {p1, p2}, Lnet/lingala/zip4j/exception/ZipException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method cloneAndSortFileHeadersByOffset(Ljava/util/List;)Ljava/util/List;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List<",
"Lnet/lingala/zip4j/model/FileHeader;",
">;)",
"Ljava/util/List<",
"Lnet/lingala/zip4j/model/FileHeader;",
">;"
}
.end annotation
.line 1
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0, p1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
.line 3
new-instance p1, Lnet/lingala/zip4j/tasks/AbstractModifyFileTask$1;
invoke-direct {p1, p0}, Lnet/lingala/zip4j/tasks/AbstractModifyFileTask$1;-><init>(Lnet/lingala/zip4j/tasks/AbstractModifyFileTask;)V
invoke-static {v0, p1}, Ljava/util/Collections;->sort(Ljava/util/List;Ljava/util/Comparator;)V
return-object v0
.end method
.method copyFile(Ljava/io/RandomAccessFile;Ljava/io/OutputStream;JJLnet/lingala/zip4j/progress/ProgressMonitor;I)J
.registers 17
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
add-long v4, p3, p5
move-object v0, p1
move-object v1, p2
move-wide v2, p3
move-object v6, p7
move/from16 v7, p8
.line 1
invoke-static/range {v0 .. v7}, Lnet/lingala/zip4j/util/FileUtils;->copyFile(Ljava/io/RandomAccessFile;Ljava/io/OutputStream;JJLnet/lingala/zip4j/progress/ProgressMonitor;I)V
return-wide p5
.end method
.method getOffsetOfNextEntry(Ljava/util/List;Lnet/lingala/zip4j/model/FileHeader;Lnet/lingala/zip4j/model/ZipModel;)J
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List<",
"Lnet/lingala/zip4j/model/FileHeader;",
">;",
"Lnet/lingala/zip4j/model/FileHeader;",
"Lnet/lingala/zip4j/model/ZipModel;",
")J"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Lnet/lingala/zip4j/exception/ZipException;
}
.end annotation
.line 1
invoke-direct {p0, p1, p2}, Lnet/lingala/zip4j/tasks/AbstractModifyFileTask;->getIndexOfFileHeader(Ljava/util/List;Lnet/lingala/zip4j/model/FileHeader;)I
move-result p2
.line 3
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v0
add-int/lit8 v0, v0, -0x1
if-ne p2, v0, :cond_11
.line 4
invoke-static {p3}, Lnet/lingala/zip4j/headers/HeaderUtil;->getOffsetStartOfCentralDirectory(Lnet/lingala/zip4j/model/ZipModel;)J
move-result-wide p1
return-wide p1
:cond_11
add-int/lit8 p2, p2, 0x1
.line 6
invoke-interface {p1, p2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object p1
check-cast p1, Lnet/lingala/zip4j/model/FileHeader;
invoke-virtual {p1}, Lnet/lingala/zip4j/model/FileHeader;->getOffsetLocalHeader()J
move-result-wide p1
return-wide p1
.end method
.method getTemporaryFile(Ljava/lang/String;)Ljava/io/File;
.registers 7
.line 1
new-instance v0, Ljava/security/SecureRandom;
invoke-direct {v0}, Ljava/security/SecureRandom;-><init>()V
.line 2
new-instance v1, Ljava/io/File;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const/16 v3, 0x2710
invoke-virtual {v0, v3}, Ljava/security/SecureRandom;->nextInt(I)I
move-result v4
invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2}, Ljava/io/File;-><init>(Ljava/lang/String;)V
.line 4
:goto_1f
invoke-virtual {v1}, Ljava/io/File;->exists()Z
move-result v2
if-eqz v2, :cond_3e
.line 5
new-instance v1, Ljava/io/File;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, v3}, Ljava/security/SecureRandom;->nextInt(I)I
move-result v4
invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2}, Ljava/io/File;-><init>(Ljava/lang/String;)V
goto :goto_1f
:cond_3e
return-object v1
.end method
.method updateOffsetsForAllSubsequentFileHeaders(Ljava/util/List;Lnet/lingala/zip4j/model/ZipModel;Lnet/lingala/zip4j/model/FileHeader;J)V
.registers 11
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List<",
"Lnet/lingala/zip4j/model/FileHeader;",
">;",
"Lnet/lingala/zip4j/model/ZipModel;",
"Lnet/lingala/zip4j/model/FileHeader;",
"J)V"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Lnet/lingala/zip4j/exception/ZipException;
}
.end annotation
.line 1
invoke-direct {p0, p1, p3}, Lnet/lingala/zip4j/tasks/AbstractModifyFileTask;->getIndexOfFileHeader(Ljava/util/List;Lnet/lingala/zip4j/model/FileHeader;)I
move-result p3
const/4 v0, -0x1
if-eq p3, v0, :cond_49
:cond_7
:goto_7
add-int/lit8 p3, p3, 0x1
.line 7
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v0
if-ge p3, v0, :cond_48
.line 8
invoke-interface {p1, p3}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lnet/lingala/zip4j/model/FileHeader;
.line 9
invoke-virtual {v0}, Lnet/lingala/zip4j/model/FileHeader;->getOffsetLocalHeader()J
move-result-wide v1
add-long/2addr v1, p4
invoke-virtual {v0, v1, v2}, Lnet/lingala/zip4j/model/FileHeader;->setOffsetLocalHeader(J)V
.line 11
invoke-virtual {p2}, Lnet/lingala/zip4j/model/ZipModel;->isZip64Format()Z
move-result v1
if-eqz v1, :cond_7
.line 12
invoke-virtual {v0}, Lnet/lingala/zip4j/model/AbstractFileHeader;->getZip64ExtendedInfo()Lnet/lingala/zip4j/model/Zip64ExtendedInfo;
move-result-object v1
if-eqz v1, :cond_7
.line 13
invoke-virtual {v0}, Lnet/lingala/zip4j/model/AbstractFileHeader;->getZip64ExtendedInfo()Lnet/lingala/zip4j/model/Zip64ExtendedInfo;
move-result-object v1
invoke-virtual {v1}, Lnet/lingala/zip4j/model/Zip64ExtendedInfo;->getOffsetLocalHeader()J
move-result-wide v1
const-wide/16 v3, -0x1
cmp-long v1, v1, v3
if-eqz v1, :cond_7
.line 15
invoke-virtual {v0}, Lnet/lingala/zip4j/model/AbstractFileHeader;->getZip64ExtendedInfo()Lnet/lingala/zip4j/model/Zip64ExtendedInfo;
move-result-object v1
.line 16
invoke-virtual {v0}, Lnet/lingala/zip4j/model/AbstractFileHeader;->getZip64ExtendedInfo()Lnet/lingala/zip4j/model/Zip64ExtendedInfo;
move-result-object v0
invoke-virtual {v0}, Lnet/lingala/zip4j/model/Zip64ExtendedInfo;->getOffsetLocalHeader()J
move-result-wide v2
add-long/2addr v2, p4
.line 17
invoke-virtual {v1, v2, v3}, Lnet/lingala/zip4j/model/Zip64ExtendedInfo;->setOffsetLocalHeader(J)V
goto :goto_7
:cond_48
return-void
.line 18
:cond_49
new-instance p1, Lnet/lingala/zip4j/exception/ZipException;
const-string p2, "Could not locate modified file header in zipModel"
invoke-direct {p1, p2}, Lnet/lingala/zip4j/exception/ZipException;-><init>(Ljava/lang/String;)V
throw p1
.end method