JavaZipFile.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Fri, 25 Jul 2014 01:52:23 +0100
changeset 3176 243dcc6b3220
child 3324 a58245c0e83a
permissions -rw-r--r--
Optimized java.util.zip.ZipFile#getNextEntry() Optimized sequential access to zip entries by keeping an array of those in JavaZipFile (a custom subclass of ZipArchive). When we could access entry directly by it's index, not having to walk through linked list of ZipMembers
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3176
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
 New code and modifications done at SWING Research Group [1]:
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
                            SWING Research Group, Czech Technical University in Prague
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
 This software is furnished under a license and may be used
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
 only in accordance with the terms of that license and with the
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
 inclusion of the above copyright notice.   This software may not
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
 be provided or otherwise made available to, or used by, any
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
 other person.  No title to or ownership of the software is
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
 hereby transferred.
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
 [1] Code written at SWING Research Group contains a signature
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
     of one of the above copright owners. For exact set of such code,
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
     see the differences between this version and version stx:libjava
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
     as of 1.9.2010
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
"
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
"{ Package: 'stx:libjava' }"
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
ZipArchive subclass:#JavaZipFile
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
	instanceVariableNames:'members'
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
	classVariableNames:''
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	poolDictionaries:''
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	category:'Languages-Java-Support-Native'
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
!
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
!JavaZipFile class methodsFor:'documentation'!
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
copyright
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
"
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
 New code and modifications done at SWING Research Group [1]:
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
                            SWING Research Group, Czech Technical University in Prague
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
 This software is furnished under a license and may be used
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
 only in accordance with the terms of that license and with the
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
 inclusion of the above copyright notice.   This software may not
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
 be provided or otherwise made available to, or used by, any
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
 other person.  No title to or ownership of the software is
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
 hereby transferred.
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
 [1] Code written at SWING Research Group contains a signature
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
     of one of the above copright owners. For exact set of such code,
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
     see the differences between this version and version stx:libjava
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
     as of 1.9.2010
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
"
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
! !
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
!JavaZipFile methodsFor:'accessing'!
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
members
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    ^ members
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
! !
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
!JavaZipFile methodsFor:'private - directory stuff'!
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
readDirectory
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
    "read the zip directory into a linked-list of zipMembers"
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    | i member |
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    super readDirectory.
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    members := Array new: centralDirectory centralDirectoryTotalNoOfEntries.
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    i := 1.
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
    member := firstEntry.
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    [ member notNil ] whileTrue:[
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
        members at: i put: member.
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
        i := i + 1.
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
        member := member next.
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
    ].
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    "Created: / 25-07-2014 / 00:53:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
! !
243dcc6b3220 Optimized java.util.zip.ZipFile#getNextEntry()
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81