/** * Adds the given {@link ArchiveEntry} to the entries tree. This method will create the tree if it doesn't already * exist, or re-create it if the archive file has changed since it was last created. * * @param entry the ArchiveEntry to add to the tree * @throws IOException if an error occurred while creating the entries tree * @throws UnsupportedFileOperationException if {@link FileOperation#READ_FILE} operations are not supported by the * underlying file protocol. */ protected void addToEntriesTree(ArchiveEntry entry) throws IOException, UnsupportedFileOperationException { checkEntriesTree(); entryTreeRoot.addArchiveEntry(entry); }
/** * Returns the contents of the specified folder entry. * * @throws UnsupportedFileOperationException if {@link FileOperation#READ_FILE} operations are not supported by the * underlying file protocol. */ protected AbstractFile[] ls(AbstractArchiveEntryFile entryFile, FilenameFilter filenameFilter, FileFilter fileFilter) throws IOException, UnsupportedFileOperationException { // Make sure the entries tree is created and up-to-date checkEntriesTree(); if(!entryFile.isBrowsable()) throw new IOException(); DefaultMutableTreeNode matchNode = entryTreeRoot.findEntryNode(entryFile.getEntry().getPath()); if(matchNode==null) throw new IOException(); return ls(matchNode, entryFile, filenameFilter, fileFilter); }
/** * This method is overridden to list and return the topmost entries contained by this archive. * The returned files are {@link AbstractArchiveEntryFile} instances. * * @return the topmost entries contained by this archive * @throws IOException if the archive entries could not be listed * @throws UnsupportedFileOperationException if {@link FileOperation#READ_FILE} operations are not supported by the * underlying file protocol. */ @Override public AbstractFile[] ls() throws IOException, UnsupportedFileOperationException { // Delegate to the ancestor if this file isn't actually an archive if(!isArchive()) return super.ls(); // Make sure the entries tree is created and up-to-date checkEntriesTree(); return ls(entryTreeRoot, this, null, null); }
/** * This method is overridden to list and return the topmost entries contained by this archive, filtering out * the ones that do not match the specified {@link FileFilter}. The returned files are {@link AbstractArchiveEntryFile} instances. * * @param filter the FilenameFilter to be used to filter files out from the list, may be <code>null</code> * @return the topmost entries contained by this archive * @throws IOException if the archive entries could not be listed * @throws UnsupportedFileOperationException if {@link FileOperation#READ_FILE} operations are not supported by the * underlying file protocol. */ @Override public AbstractFile[] ls(FileFilter filter) throws IOException, UnsupportedFileOperationException { // Delegate to the ancestor if this file isn't actually an archive if(!isArchive()) return super.ls(filter); // Make sure the entries tree is created and up-to-date checkEntriesTree(); return ls(entryTreeRoot, this, null, filter); }
/** * This method is overridden to list and return the topmost entries contained by this archive, filtering out * the ones that do not match the specified {@link FilenameFilter}. The returned files are {@link AbstractArchiveEntryFile} * instances. * * @param filter the FilenameFilter to be used to filter files out from the list, may be <code>null</code> * @return the topmost entries contained by this archive * @throws IOException if the archive entries could not be listed * @throws UnsupportedFileOperationException if {@link FileOperation#READ_FILE} operations are not supported by the * underlying file protocol. */ @Override public AbstractFile[] ls(FilenameFilter filter) throws IOException, UnsupportedFileOperationException { // Delegate to the ancestor if this file isn't actually an archive if(!isArchive()) return super.ls(filter); // Make sure the entries tree is created and up-to-date checkEntriesTree(); return ls(entryTreeRoot, this, filter, null); }
/** * Removes the given {@link ArchiveEntry} from the entries tree. This method will create the tree if it doesn't * already exist, or re-create it if the archive file has changed since it was last created. * * @param entry the ArchiveEntry to remove from the tree * @throws IOException if an error occurred while creating the entries tree * @throws UnsupportedFileOperationException if {@link FileOperation#READ_FILE} operations are not supported by the * underlying file protocol. */ protected void removeFromEntriesTree(ArchiveEntry entry) throws IOException, UnsupportedFileOperationException { checkEntriesTree(); DefaultMutableTreeNode entryNode = entryTreeRoot.findEntryNode(entry.getPath()); if(entryNode!=null) { DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode)entryNode.getParent(); parentNode.remove(entryNode); } }