commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sebb <seb...@gmail.com>
Subject [COMPRESS] Changeset ideas
Date Sun, 29 Mar 2009 12:31:07 GMT
The current ChangeSet API allows for:
+ deletion of entries by name
+ addition of entries by ArchiveEntry and InputStream.

This is fine as far as it goes, but I think it would be useful to add:
+ addition of entries by File
+ replacement of an existing named entry by File or Entry+InputStream

It may also be useful to allow the location of new entries to be
specified. For example, one might want to add META-INF data at the
front of an archive. It would be useful to specify the locations as:
+ start
+ end

[I'm not sure if there is a use-case for adding entries relative to an
existing entry, and it would complicate the processing. None of the
archivers I have used allow this.]

I think it would be quite easy to implement:
+ open output file, add any starting entries
+ for each input entry, either copy, skip or replace with new entry
+ at end of input, add any final entries.
+ close archive files

This could be achieved with:
+ HashSet containing names to be deleted
+ HashMap containing new entries for existing names
+ 2 Lists for new entries.

Using Hashes would avoid scanning the list.
Also, I don't think any of the above would need to be updated during
perform(), which would allow them to be re-used on another archive.

However, the creation of the collections would be slightly more involved.

It would probably be useful to have a "NewEntry" class which either
has a File, or has an InputStream + ArchiveEntry to describe it.

The "NewEntry" class might also be useful for ArchiveOutputStream.

WDYT?

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message