Remote Systems
v6.4.1

com.ibm.etools.systems.core.archiveutils
Class SystemZipHandler

java.lang.Object
  extended bycom.ibm.etools.systems.core.archiveutils.SystemZipHandler
All Implemented Interfaces:
ISystemArchiveHandler
Direct Known Subclasses:
SystemJarHandler

public class SystemZipHandler
extends Object
implements ISystemArchiveHandler


Field Summary
protected  boolean _exists
           
protected  File _file
           
protected  long _vfsLastModified
           
protected  HashMap _virtualFS
           
protected  ZipFile _zipfile
           
 
Constructor Summary
SystemZipHandler(File file)
          Creates a new SystemZipHandler and associates it with file.
 
Method Summary
 boolean add(File[] files, String virtualPath, String[] names)
          A generalization of the add method.
 boolean add(File[] files, String virtualPath, String[] names, String[] encodings, boolean[] isText)
          A generalization of the add method.
 boolean add(File[] files, String virtualPath, String[] names, String[] encodings, boolean[] isText, boolean closeZipFile)
          Same as add(File[] files, String virtualPath, String[] names, String[] encodings) but you can choose whether or not you want to leave the zipfile open after return.
 boolean add(File file, String virtualPath, String name)
          Compresses the file file and adds it to the archive, placing it in the virtual directory virtualPath.
 boolean add(File file, String virtualPath, String name, String encoding, boolean isText)
          Compresses the file file and adds it to the archive, saving it in the encoding specified by encoding if the isText is true.
 boolean add(File file, String virtualPath, String name, String encoding, ISystemFileTypes registry)
          Compresses the file file and adds it to the archive, saving it in the encoding specified by encoding if the isText is true.
protected  ZipEntry appendEmptyFile(ZipOutputStream dest, String name)
          Works similarly to appendFile, except no actual data is appended to the zipfile, only an entry is created.
protected  ZipEntry appendFile(File file, ZipOutputStream dest, String virtualPath, String name, String encoding, boolean isText)
          Compresses the contents of file, adding them to the ZipFile managed by dest.
protected  void buildTree()
          Builds the virtual file system tree out of the entries in the zipfile.
protected  boolean closeZipFile()
           
 boolean create()
          Turns the archive that this handler represents into a new, empty archive.
protected  boolean createFile(File file)
           
 boolean createFile(String name)
          Creates a new, empty file in the archive.
 boolean createFolder(String name)
          Creates a new, empty folder in the archive.
protected  ZipEntry createSafeZipEntry(String name)
          A "safe" ZipEntry is one whose virtual path does not begin with a "/".
protected  boolean createVirtualObject(String name, boolean closeZipFile)
          Creates a new, empty object in the virtual File system, and creates an empty file or folder in the physical zip file.
 boolean delete(String fullVirtualName)
          Deletes the entry fullVirtualName from the archive, and returns whether or not the deletion was successful.
 boolean delete(String fullVirtualName, boolean closeZipFile)
          Same as delete(String fullVirtualName) but you can choose whether or not you want to leave the zipfile open after return.
protected  void delTree(VirtualChild vc)
          Deletes all the children of the directory VirtualChild vc recursively down to the leaves.
 boolean exists()
           
 boolean exists(String fullVirtualName)
           
 boolean extractVirtualDirectory(String dir, File destinationParent)
          Extracts the directory dir (and its children) from the archive and places the results in the directory destinationParent.
 boolean extractVirtualDirectory(String dir, File destinationParent, File destination)
          Extracts the directory dir (and its children) from the archive and places the results in the directory destinationParent.
 boolean extractVirtualDirectory(String dir, File destinationParent, File destination, String sourceEncoding, boolean isText)
          Extracts the directory dir (and its children) from the archive and places the results in the directory destinationParent.
 boolean extractVirtualDirectory(String dir, File destinationParent, String sourceEncoding, boolean isText)
          Extracts the directory dir (and its children) from the archive and places the results in the directory destinationParent.
 boolean extractVirtualFile(String fullVirtualName, File destination)
          Extracts the virtual file named fullVirtualName from the archive, placing the results in destination.
 boolean extractVirtualFile(String fullVirtualName, File destination, boolean closeZipFile, String sourceEncoding, boolean isText)
          Same as extractVirtualFile(String fullVirtualName, File destination) but you can choose whether or not you want to leave the zipfile open after return.
 boolean extractVirtualFile(String fullVirtualName, File destination, String sourceEncoding, boolean isText)
          Extracts the virtual file named fullVirtualName from the archive, placing the results in destination.
protected  void fillBranch(ZipEntry next)
          Populates an entire branch of the tree that comprises the virtual file system.
 boolean fullRename(String fullVirtualName, String newFullVirtualName)
          Replaces the full name and path of the entry fullVirtualName with the new full name and path newFullVirtualName.
 boolean fullRename(String fullVirtualName, String newFullVirtualName, boolean closeZipFile)
          Same as fullRename(String fullVirtualName, String newFullVirtualName) but you can choose whether or not you want to leave the zipfile open after return.
 File getArchive()
           
 String getArchiveComment()
           
 String getClassification(String fullVirtualName)
          Returns the classification for the entry with the given path.
 String getClassification(String fullVirtualName, boolean closeZipFile)
          Same as getClassification(String), but you can choose whether to leave the zip file open after the method is closed.
 String getCommentFor(String fullVirtualName)
          Gets the user-defined comment for a specific entry in the archive.
 String getCommentFor(String fullVirtualName, boolean closeZipFile)
          same as getCommentFor(String) but you can choose whether or not to leave the zipfile open after the method is closed
 long getCompressedSizeFor(String fullVirtualName)
          Gets the amount of space taken up by a specific entry in the archive when it is in compressed form.
 long getCompressedSizeFor(String fullVirtualName, boolean closeZipFile)
          same as getCompressedSizeFor(String) but you can choose whether or not to leave the zipfile open after the method is closed
 String getCompressionMethodFor(String fullVirtualName)
          Gets the method used to compress a specific entry in the archive.
 String getCompressionMethodFor(String fullVirtualName, boolean closeZipFile)
          same as getCompressionMethodFor(String) but you can choose whether or not to leave the zipfile open after the method is closed
 File[] getFiles(String[] fullNames)
          Extracts and returns the specified list of virtual files from the archive.
 long getSizeFor(String fullVirtualName)
           
 long getSizeFor(String fullVirtualName, boolean closeZipFile)
           
 String getStandardName(VirtualChild vc)
          Gets the archive-type specific standard name for the VirtualChild vc.
 long getTimeStampFor(String fullVirtualName)
           
 long getTimeStampFor(String fullVirtualName, boolean closeZipFile)
          Same as getTimeStampFor(String fullVirtualName) but you can choose whether or not you want to leave the zipfile open after return.
 VirtualChild[] getVirtualChildFolders(String fullVirtualName)
           
 VirtualChild[] getVirtualChildren(String fullVirtualName)
           
 VirtualChild[] getVirtualChildrenList()
           
 VirtualChild[] getVirtualChildrenList(boolean closeZipFile)
          Same as getVirtualChildrenList(), but you can choose whether to leave the zip file open or closed upon return.
 VirtualChild[] getVirtualChildrenList(String parent)
           
 VirtualChild[] getVirtualChildrenList(String parent, boolean closeZipFile)
          Same as getVirtualChildrenList(String parent) but you can choose whether or not you want to leave the zipfile open after return.
 VirtualChild getVirtualFile(String fullVirtualName)
           
static void listAllFiles(File parent, HashSet found)
          Helper method. . . populates found with a collapsed list of all nodes in the subtree of the file system rooted at parent.
 boolean move(String fullVirtualName, String destinationVirtualPath)
          Moves the entry fullVirtualName to the location specified by destinationVirtualPath, while leaving the entry with the same name as before.
protected  boolean openZipFile()
          Opens the zipfile that this handler manages.
protected  void recreateZipDeleteEntries(VirtualChild[] vcList, ZipOutputStream dest, HashSet omitChildren)
          Recreates a zip file from a list of virtual children, optionally omitting a group of children whose names are in the Set omitChildren
protected  void recreateZipRenameEntries(VirtualChild[] vcList, ZipOutputStream dest, HashMap names)
          Recreates a zip file from a list of virtual children, but renaming the one of the VirtualChildren.
protected  void recursivePopulate(String key, VirtualChild value)
          Actually does the work for the fillBranch method.
 boolean rename(String fullVirtualName, String newName)
          Renames the entry fullVirtualName to the new name newName while still leaving the entry in the same virtual directory.
 boolean replace(String fullVirtualName, File file, String name)
          Compress the file file and replace the virtual file referred to by fullVirtualName with the compressed file.
 boolean replace(String fullVirtualName, File file, String name, boolean closeZipFile)
          Same as replace(String fullVirtualName, File file, String name) but you can choose whether or not you want to leave the zipfile open after return.
protected  void replaceOldZip(File outputTempFile)
          Replaces the old zip file managed by this SystemZipHandler, with the zip file referred to by outputTempFile.
protected  ZipEntry safeGetEntry(String name)
          Returns the entry corresponding to name from _zipfile.
 SystemSearchLineMatch[] search(String fullVirtualName, SystemSearchStringMatcher matcher)
          Searches for text within a virtual file in this archive.
protected  boolean updateVirtualFSIfNecessary()
          If the mod-times of the underlying zip file and the file used to create the virtualFS are different, update the virtualFS.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_zipfile

protected ZipFile _zipfile

_virtualFS

protected HashMap _virtualFS

_file

protected File _file

_vfsLastModified

protected long _vfsLastModified

_exists

protected boolean _exists
Constructor Detail

SystemZipHandler

public SystemZipHandler(File file)
Creates a new SystemZipHandler and associates it with file.

Parameters:
file - The file that this handler will wrapper.
Throws:
IOException - If there is an error handling file
Method Detail

buildTree

protected void buildTree()
Builds the virtual file system tree out of the entries in the zipfile.


fillBranch

protected void fillBranch(ZipEntry next)
Populates an entire branch of the tree that comprises the virtual file system. The parameter is the leaf node, and from the virtual path of the parameter, we can deduce what the ancestors of the leaves are, and populate the tree from there.

Parameters:
next - The ZipEntry from which the branch will be built.

recursivePopulate

protected void recursivePopulate(String key,
                                 VirtualChild value)
Actually does the work for the fillBranch method. Recursively inserts key/value pairs into the virtualFS, then uses the key to get the next parent (moving up one level) and thus recursively populates one branch.


getVirtualChildrenList

public VirtualChild[] getVirtualChildrenList()
Specified by:
getVirtualChildrenList in interface ISystemArchiveHandler
Returns:
an array containing all the entries in the archive file in a flat format, where the entries' filenames are prepended by the path to the entry within the virtual file system. If there are no entries in the file, returns an array of size 0.

getVirtualChildrenList

public VirtualChild[] getVirtualChildrenList(boolean closeZipFile)
Same as getVirtualChildrenList(), but you can choose whether to leave the zip file open or closed upon return.


getVirtualChildrenList

public VirtualChild[] getVirtualChildrenList(String parent)
Specified by:
getVirtualChildrenList in interface ISystemArchiveHandler
Returns:
an array containing all the entries in the archive file in a flat format, whose full paths begin with the String parent. Returns an array of length 0 if there are no such entries.

getVirtualChildrenList

public VirtualChild[] getVirtualChildrenList(String parent,
                                             boolean closeZipFile)
Same as getVirtualChildrenList(String parent) but you can choose whether or not you want to leave the zipfile open after return.


getVirtualChildren

public VirtualChild[] getVirtualChildren(String fullVirtualName)
Specified by:
getVirtualChildren in interface ISystemArchiveHandler
Returns:
an array containing the virtual children of the virtual directory named fullVirtualName. If fullVirtualName is "", returns the top level in the virtual file system tree. If there are no values to return, returns null.

getVirtualChildFolders

public VirtualChild[] getVirtualChildFolders(String fullVirtualName)
Specified by:
getVirtualChildFolders in interface ISystemArchiveHandler
Returns:
an array containing the virtual children of the virtual directory named fullVirtualName that are themselves directories. If fullVirtualName is "", returns the top level of directories in the virtual file system tree. If there are no values to return, returns null.

getVirtualFile

public VirtualChild getVirtualFile(String fullVirtualName)
Specified by:
getVirtualFile in interface ISystemArchiveHandler
Returns:
the virtual File or Folder referred to by fullVirtualName. This method never returns null. In cases where the VirtualChild does not physically exist in the archive, this method returns a new VirtualChild object whose exists() method returns false.

exists

public boolean exists(String fullVirtualName)
Specified by:
exists in interface ISystemArchiveHandler
Returns:
Whether or not the virtual file or folder named fullVirtualName exists in the archive (physically).

getArchive

public File getArchive()
Specified by:
getArchive in interface ISystemArchiveHandler
Returns:
the archive that this handler deals with

getTimeStampFor

public long getTimeStampFor(String fullVirtualName)
Specified by:
getTimeStampFor in interface ISystemArchiveHandler
Returns:
the current timestamp (last modified) for the entry in the archive named fullVirtualName

getTimeStampFor

public long getTimeStampFor(String fullVirtualName,
                            boolean closeZipFile)
Same as getTimeStampFor(String fullVirtualName) but you can choose whether or not you want to leave the zipfile open after return.


getSizeFor

public long getSizeFor(String fullVirtualName)
Specified by:
getSizeFor in interface ISystemArchiveHandler
Returns:
the current size (uncompressed) for the entry in the archive named fullVirtualName

getSizeFor

public long getSizeFor(String fullVirtualName,
                       boolean closeZipFile)

extractVirtualFile

public boolean extractVirtualFile(String fullVirtualName,
                                  File destination)
Description copied from interface: ISystemArchiveHandler
Extracts the virtual file named fullVirtualName from the archive, placing the results in destination.

Specified by:
extractVirtualFile in interface ISystemArchiveHandler
Parameters:
fullVirtualName - The full path and name of the virtual file in the archive.
destination - The destination file for the extracted virtual file.
Returns:
true iff the extraction is successful

extractVirtualFile

public boolean extractVirtualFile(String fullVirtualName,
                                  File destination,
                                  String sourceEncoding,
                                  boolean isText)
Description copied from interface: ISystemArchiveHandler
Extracts the virtual file named fullVirtualName from the archive, placing the results in destination. Extracts to the native encoding, but assumes that the source was archived using sourceEncoding if isText is true.

Specified by:
extractVirtualFile in interface ISystemArchiveHandler
Parameters:
fullVirtualName - The full path and name of the virtual file in the archive.
destination - The destination file for the extracted virtual file.
sourceEncoding - The encoding of the file in the archive.
isText - Whether or not the virtual file is a text file.
Returns:
true iff the extraction is successful

extractVirtualFile

public boolean extractVirtualFile(String fullVirtualName,
                                  File destination,
                                  boolean closeZipFile,
                                  String sourceEncoding,
                                  boolean isText)
Same as extractVirtualFile(String fullVirtualName, File destination) but you can choose whether or not you want to leave the zipfile open after return.


extractVirtualDirectory

public boolean extractVirtualDirectory(String dir,
                                       File destinationParent)
Description copied from interface: ISystemArchiveHandler
Extracts the directory dir (and its children) from the archive and places the results in the directory destinationParent.

Specified by:
extractVirtualDirectory in interface ISystemArchiveHandler
Parameters:
dir - The full name of the virtual directory to extract
destinationParent - A handle to the directory in which the extracted directory will be placed as a subdirectory.
Returns:
true iff the extraction is successful

extractVirtualDirectory

public boolean extractVirtualDirectory(String dir,
                                       File destinationParent,
                                       String sourceEncoding,
                                       boolean isText)
Description copied from interface: ISystemArchiveHandler
Extracts the directory dir (and its children) from the archive and places the results in the directory destinationParent. Extracts to the native encoding (if isText), but assumes that the source was archived using sourceEncoding.

Specified by:
extractVirtualDirectory in interface ISystemArchiveHandler
Parameters:
dir - The full name of the virtual directory to extract
destinationParent - A handle to the directory in which the extracted directory will be placed as a subdirectory.
sourceEncoding - The encoding of the files in the archive.
isText - Whether or not the files in the directory are text files
Returns:
true iff the extraction is successful

extractVirtualDirectory

public boolean extractVirtualDirectory(String dir,
                                       File destinationParent,
                                       File destination)
Description copied from interface: ISystemArchiveHandler
Extracts the directory dir (and its children) from the archive and places the results in the directory destinationParent. The results will be named destination.getName() rather than dir's name.

Specified by:
extractVirtualDirectory in interface ISystemArchiveHandler
Parameters:
dir - The full name of the virtual directory to extract
destinationParent - A handle to the directory in which the extracted directory will be placed as a subdirectory.
destination - A handle to the directory that will be created. Whatever contents are in that directory will be replaced with what is extracted from the archive.
Returns:
true iff the extraction is successful

extractVirtualDirectory

public boolean extractVirtualDirectory(String dir,
                                       File destinationParent,
                                       File destination,
                                       String sourceEncoding,
                                       boolean isText)
Description copied from interface: ISystemArchiveHandler
Extracts the directory dir (and its children) from the archive and places the results in the directory destinationParent. The results will be named destination.getName() rather than dir's name. Extracts to the native encoding (if isText), but assumes that the source was archived using sourceEncoding.

Specified by:
extractVirtualDirectory in interface ISystemArchiveHandler
Parameters:
dir - The full name of the virtual directory to extract
destinationParent - A handle to the directory in which the extracted directory will be placed as a subdirectory.
destination - A handle to the directory that will be created. Whatever contents are in that directory will be replaced with what is extracted from the archive.
sourceEncoding - The encoding of the files in the archive.
isText - Whether or not the files to be extracted in the directory are all text files
Returns:
true iff the extraction is successful

createFile

protected boolean createFile(File file)

add

public boolean add(File file,
                   String virtualPath,
                   String name)
Description copied from interface: ISystemArchiveHandler
Compresses the file file and adds it to the archive, placing it in the virtual directory virtualPath. Pass the name as the parameter name. If the virtual path does not exist in the archive, create it. If file is a directory, copy it and its contents into the archive, maintaining the tree structure.

Specified by:
add in interface ISystemArchiveHandler
Returns:
true if and only if the add was successful

add

public boolean add(File file,
                   String virtualPath,
                   String name,
                   String encoding,
                   ISystemFileTypes registry)
Description copied from interface: ISystemArchiveHandler
Compresses the file file and adds it to the archive, saving it in the encoding specified by encoding if the isText is true. placing it in the virtual directory virtualPath. Pass the name as the parameter name. If the virtual path does not exist in the archive, create it. If file is a directory, copy it and its contents into the archive, maintaining the tree structure.

Specified by:
add in interface ISystemArchiveHandler
Returns:
true if and only if the add was successful

add

public boolean add(File file,
                   String virtualPath,
                   String name,
                   String encoding,
                   boolean isText)
Description copied from interface: ISystemArchiveHandler
Compresses the file file and adds it to the archive, saving it in the encoding specified by encoding if the isText is true. placing it in the virtual directory virtualPath. Pass the name as the parameter name. If the virtual path does not exist in the archive, create it. If file is a directory, copy it and its contents into the archive, maintaining the tree structure.

Specified by:
add in interface ISystemArchiveHandler
Returns:
true if and only if the add was successful

add

public boolean add(File[] files,
                   String virtualPath,
                   String[] names)
Description copied from interface: ISystemArchiveHandler
A generalization of the add method. Compresses the array of files files and adds each of them to the archive, placing them in the virtual directory virtualPath. Pass the names of the files as the parameter names, where files[i] has the name names[i]. If the virtual path does not exist in the archive, create it.

Specified by:
add in interface ISystemArchiveHandler
Returns:
true if and only if the add was successful

add

public boolean add(File[] files,
                   String virtualPath,
                   String[] names,
                   String[] encodings,
                   boolean[] isText)
Description copied from interface: ISystemArchiveHandler
A generalization of the add method. Compresses the array of files files and adds each of them to the archive, placing them in the virtual directory virtualPath. Save the i'th file in the i'th encoding (if isText[i] is true) specified by encodings. Pass the names of the files as the parameter names, where files[i] has the name names[i]. If the virtual path does not exist in the archive, create it.

Specified by:
add in interface ISystemArchiveHandler
Returns:
true if and only if the add was successful

add

public boolean add(File[] files,
                   String virtualPath,
                   String[] names,
                   String[] encodings,
                   boolean[] isText,
                   boolean closeZipFile)
Same as add(File[] files, String virtualPath, String[] names, String[] encodings) but you can choose whether or not you want to leave the zipfile open after return.


listAllFiles

public static void listAllFiles(File parent,
                                HashSet found)
Helper method. . . populates found with a collapsed list of all nodes in the subtree of the file system rooted at parent.


recreateZipDeleteEntries

protected void recreateZipDeleteEntries(VirtualChild[] vcList,
                                        ZipOutputStream dest,
                                        HashSet omitChildren)
                                 throws IOException
Recreates a zip file from a list of virtual children, optionally omitting a group of children whose names are in the Set omitChildren

Parameters:
vcList - The list of virtual children to create the zip from
dest - The ZipOutputStream representing the zip file where the children are to be recreated
omitChildren - The set of names of children to omit when creating the zipfile. Null or empty set if there are no ommisions.
Throws:
IOException

recreateZipRenameEntries

protected void recreateZipRenameEntries(VirtualChild[] vcList,
                                        ZipOutputStream dest,
                                        HashMap names)
                                 throws IOException
Recreates a zip file from a list of virtual children, but renaming the one of the VirtualChildren.

Parameters:
vcList - The list of virtual children to create the zip from
dest - The ZipOutputStream representing the zip file where the children are to be recreated
Throws:
IOException

appendFile

protected ZipEntry appendFile(File file,
                              ZipOutputStream dest,
                              String virtualPath,
                              String name,
                              String encoding,
                              boolean isText)
                       throws IOException
Compresses the contents of file, adding them to the ZipFile managed by dest. The file is encoded in the encoding specified by encoding. A new entry is created in the ZipFile with virtual path and name of virtualPath and name respectively.

Returns:
The ZipEntry that was added to the destination zip file.
Throws:
IOException

replaceOldZip

protected void replaceOldZip(File outputTempFile)
                      throws IOException
Replaces the old zip file managed by this SystemZipHandler, with the zip file referred to by outputTempFile.

Throws:
IOException - if outputTempFile cannot be used as a ZipFile.

delete

public boolean delete(String fullVirtualName)
Description copied from interface: ISystemArchiveHandler
Deletes the entry fullVirtualName from the archive, and returns whether or not the deletion was successful.

Specified by:
delete in interface ISystemArchiveHandler

delete

public boolean delete(String fullVirtualName,
                      boolean closeZipFile)
Same as delete(String fullVirtualName) but you can choose whether or not you want to leave the zipfile open after return.


delTree

protected void delTree(VirtualChild vc)
Deletes all the children of the directory VirtualChild vc recursively down to the leaves. Pre: vc.isDirectory is true

Parameters:
vc - The child whose children we are deleting.

replace

public boolean replace(String fullVirtualName,
                       File file,
                       String name)
Description copied from interface: ISystemArchiveHandler
Compress the file file and replace the virtual file referred to by fullVirtualName with the compressed file. Pass the name of the file as the parameter name.

Specified by:
replace in interface ISystemArchiveHandler
Returns:
true if and only if the replace was successful

replace

public boolean replace(String fullVirtualName,
                       File file,
                       String name,
                       boolean closeZipFile)
Same as replace(String fullVirtualName, File file, String name) but you can choose whether or not you want to leave the zipfile open after return.


fullRename

public boolean fullRename(String fullVirtualName,
                          String newFullVirtualName)
Description copied from interface: ISystemArchiveHandler
Replaces the full name and path of the entry fullVirtualName with the new full name and path newFullVirtualName. Returns true if and only if the operation was successfull.

Specified by:
fullRename in interface ISystemArchiveHandler

fullRename

public boolean fullRename(String fullVirtualName,
                          String newFullVirtualName,
                          boolean closeZipFile)
Same as fullRename(String fullVirtualName, String newFullVirtualName) but you can choose whether or not you want to leave the zipfile open after return.


move

public boolean move(String fullVirtualName,
                    String destinationVirtualPath)
Description copied from interface: ISystemArchiveHandler
Moves the entry fullVirtualName to the location specified by destinationVirtualPath, while leaving the entry with the same name as before. Returns true if and only if the move was successfull.

Specified by:
move in interface ISystemArchiveHandler

rename

public boolean rename(String fullVirtualName,
                      String newName)
Description copied from interface: ISystemArchiveHandler
Renames the entry fullVirtualName to the new name newName while still leaving the entry in the same virtual directory. Returns true if and only if the rename was successfull.

Specified by:
rename in interface ISystemArchiveHandler

getFiles

public File[] getFiles(String[] fullNames)
Description copied from interface: ISystemArchiveHandler
Extracts and returns the specified list of virtual files from the archive.

Specified by:
getFiles in interface ISystemArchiveHandler
Parameters:
fullNames - The list of files to return
Returns:
An array of handles to the extracted files. If fullNames has length 0 then this method returns an array of length 0.

createFolder

public boolean createFolder(String name)
Description copied from interface: ISystemArchiveHandler
Creates a new, empty folder in the archive. If parent folders do not exist either, creates them.

Specified by:
createFolder in interface ISystemArchiveHandler
Parameters:
name - The full name and path of the new folder within the virtual file system.
Returns:
Whether or not the creation was successful.

createFile

public boolean createFile(String name)
Description copied from interface: ISystemArchiveHandler
Creates a new, empty file in the archive. If parent folders do not exist either, creates them.

Specified by:
createFile in interface ISystemArchiveHandler
Parameters:
name - The full name and path of the new file within the virtual file system.
Returns:
Whether or not the creation was successful.

createVirtualObject

protected boolean createVirtualObject(String name,
                                      boolean closeZipFile)
Creates a new, empty object in the virtual File system, and creates an empty file or folder in the physical zip file.

Parameters:
name - The name of the file or folder to create. The object created will be a folder if and only if name ends in a "/".
Returns:
Whether the creation was successful or not.

appendEmptyFile

protected ZipEntry appendEmptyFile(ZipOutputStream dest,
                                   String name)
                            throws IOException
Works similarly to appendFile, except no actual data is appended to the zipfile, only an entry is created. Thus, if the file were to be extracted, it would be of length 0.

Parameters:
dest - The destination zip stream to append the entry.
name - The new, virtual fullname to give the entry.
Returns:
The ZipEntry that was created.
Throws:
IOException - If there was an error appending the entry to the stream.

createSafeZipEntry

protected ZipEntry createSafeZipEntry(String name)
A "safe" ZipEntry is one whose virtual path does not begin with a "/". This seems to cause the least problems for archive utilities, including this one.

Parameters:
name - The virtual name for the new, safe ZipEntry.
Returns:
The ZipEntry that is created.

getStandardName

public String getStandardName(VirtualChild vc)
Description copied from interface: ISystemArchiveHandler
Gets the archive-type specific standard name for the VirtualChild vc. For example, for Zips, if vc is a directory, then the standard name must end with a "/".

Specified by:
getStandardName in interface ISystemArchiveHandler

openZipFile

protected boolean openZipFile()
Opens the zipfile that this handler manages.

Returns:
Whether the zipfile was successfully opened.

closeZipFile

protected boolean closeZipFile()

updateVirtualFSIfNecessary

protected boolean updateVirtualFSIfNecessary()
If the mod-times of the underlying zip file and the file used to create the virtualFS are different, update the virtualFS.

Returns:
whether or not the op was successful.

safeGetEntry

protected ZipEntry safeGetEntry(String name)
                         throws IOException
Returns the entry corresponding to name from _zipfile. Never returns null, but rather, throws an IOException if it cannot find the entry. Tries to retrieve both name and "/" + name, to accomodate for zipfiles created in a unix environment. ASSUMES THAT _zipfile IS ALREADY OPEN!

Throws:
IOException

create

public boolean create()
Description copied from interface: ISystemArchiveHandler
Turns the archive that this handler represents into a new, empty archive. (The archive could not exist before, in which case this would be a true creation).

Specified by:
create in interface ISystemArchiveHandler
Returns:
Whether or not the blank archive was successfuly created.

search

public SystemSearchLineMatch[] search(String fullVirtualName,
                                      SystemSearchStringMatcher matcher)
Description copied from interface: ISystemArchiveHandler
Searches for text within a virtual file in this archive. A good implementation will not actually extract the file to disk.

Specified by:
search in interface ISystemArchiveHandler
Parameters:
fullVirtualName - the virtual file to search.
matcher - the pattern matcher to use.
Returns:
an array of match objects corresponding to lines where matches were found. Returns an empty array if there are no results.

exists

public boolean exists()
Specified by:
exists in interface ISystemArchiveHandler
Returns:
Whether or not the handler exists. Usually false if the archive is corrupted or unreadable.

getCommentFor

public String getCommentFor(String fullVirtualName)
Description copied from interface: ISystemArchiveHandler
Gets the user-defined comment for a specific entry in the archive.

Specified by:
getCommentFor in interface ISystemArchiveHandler
Parameters:
fullVirtualName - The entry who's comment is desired
Returns:
the comment as a String or "" if there is none

getCommentFor

public String getCommentFor(String fullVirtualName,
                            boolean closeZipFile)
same as getCommentFor(String) but you can choose whether or not to leave the zipfile open after the method is closed


getCompressedSizeFor

public long getCompressedSizeFor(String fullVirtualName)
Description copied from interface: ISystemArchiveHandler
Gets the amount of space taken up by a specific entry in the archive when it is in compressed form. Compare with getSizeFor(String) which gets the size of the entry after it is decompressed.

Specified by:
getCompressedSizeFor in interface ISystemArchiveHandler
Parameters:
fullVirtualName - The entry who's compressed size is desired
Returns:
the compressed size of the specified entry, or 0 if the entry is not found. If the archive is not a compression type (ie. tar), return the same as getSizeFor(String).

getCompressedSizeFor

public long getCompressedSizeFor(String fullVirtualName,
                                 boolean closeZipFile)
same as getCompressedSizeFor(String) but you can choose whether or not to leave the zipfile open after the method is closed


getCompressionMethodFor

public String getCompressionMethodFor(String fullVirtualName)
Description copied from interface: ISystemArchiveHandler
Gets the method used to compress a specific entry in the archive.

Specified by:
getCompressionMethodFor in interface ISystemArchiveHandler
Parameters:
fullVirtualName - The entry who's compression method is desired
Returns:
The compression method of the specified entry, or "" if none.

getCompressionMethodFor

public String getCompressionMethodFor(String fullVirtualName,
                                      boolean closeZipFile)
same as getCompressionMethodFor(String) but you can choose whether or not to leave the zipfile open after the method is closed


getArchiveComment

public String getArchiveComment()
Specified by:
getArchiveComment in interface ISystemArchiveHandler
Returns:
The comment associated with this archive, or "" if there is none.

getClassification

public String getClassification(String fullVirtualName)
Description copied from interface: ISystemArchiveHandler
Returns the classification for the entry with the given path.

Specified by:
getClassification in interface ISystemArchiveHandler
Parameters:
fullVirtualName - the virtual name.
Returns:
the classification.
See Also:
com.ibm.etools.systems.core.archiveutils.ISystemArchiveHandler#isExecutable(java.lang.String)

getClassification

public String getClassification(String fullVirtualName,
                                boolean closeZipFile)
Same as getClassification(String), but you can choose whether to leave the zip file open after the method is closed.

See Also:
com.ibm.etools.systems.core.archiveutils.ISystemArchiveHandler#isExecutable(java.lang.String)

Remote Systems
v6.4.1

Copyright © 2005 IBM Corp. All Rights Reserved.

Note: This documentation is for part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.