});
setEntryBuilder(
new ArchiveBase.EntryBuilder() {
public ArchiveEntry buildEntry(ArchiveBase.ResourceWithFlags r) {
boolean isDir = r.getResource().isDirectory();
ZipArchiveEntry ent = new ZipArchiveEntry(r.getName());
ent.setTime(round(r.getResource().getLastModified(), 2000));
ent.setSize(isDir ? 0 : r.getResource().getSize());
if (!isDir && r.getCollectionFlags().hasModeBeenSet()) {
ent.setUnixMode(r.getCollectionFlags().getMode());
} else if (isDir
&& r.getCollectionFlags().hasDirModeBeenSet()) {
ent.setUnixMode(r.getCollectionFlags().getDirMode());
} else if (r.getResourceFlags().hasModeBeenSet()) {
ent.setUnixMode(r.getResourceFlags().getMode());
} else {
ent.setUnixMode(isDir
? ArchiveFileSet.DEFAULT_DIR_MODE
: ArchiveFileSet.DEFAULT_FILE_MODE);
}
if (r.getResourceFlags().getZipExtraFields() != null) {
ent.setExtraFields(r.getResourceFlags()
.getZipExtraFields());
}
if (keepCompression
&& r.getResourceFlags().hasCompressionMethod()) {
ent.setMethod(r.getResourceFlags()
.getCompressionMethod());
}
return ent;
}