Example usage for org.apache.commons.compress.archivers.cpio CpioArchiveEntry setMode

List of usage examples for org.apache.commons.compress.archivers.cpio CpioArchiveEntry setMode

Introduction

In this page you can find the example usage for org.apache.commons.compress.archivers.cpio CpioArchiveEntry setMode.

Prototype

public void setMode(final long mode) 

Source Link

Document

Set the mode of this entry (e.g.

Usage

From source file:org.apache.ant.compress.taskdefs.Cpio.java

public Cpio() {
    setFactory(new CpioStreamFactory() {
        public ArchiveOutputStream getArchiveStream(OutputStream stream, String encoding) throws IOException {
            return new CpioArchiveOutputStream(stream, format.getFormat(), blockSize, encoding);
        }//from w w  w . j a  va 2 s  .  co  m
    });
    setEntryBuilder(new ArchiveBase.EntryBuilder() {
        public ArchiveEntry buildEntry(ArchiveBase.ResourceWithFlags r) {
            boolean isDir = r.getResource().isDirectory();
            CpioArchiveEntry ent = new CpioArchiveEntry(format.getFormat(), r.getName(),
                    isDir ? 0 : r.getResource().getSize());
            ent.setTime(round(r.getResource().getLastModified(), 1000) / 1000);

            int mode = isDir ? ArchiveFileSet.DEFAULT_DIR_MODE : ArchiveFileSet.DEFAULT_FILE_MODE;
            if (!isDir && r.getCollectionFlags().hasModeBeenSet()) {
                ent.setMode(r.getCollectionFlags().getMode());
            } else if (isDir && r.getCollectionFlags().hasDirModeBeenSet()) {
                ent.setMode(r.getCollectionFlags().getDirMode());
            } else if (r.getResourceFlags().hasModeBeenSet()) {
                ent.setMode(r.getResourceFlags().getMode());
            } else {
                ent.setMode(mode);
            }

            if (r.getResourceFlags().hasUserIdBeenSet()) {
                ent.setUID(r.getResourceFlags().getUserId());
            } else if (r.getCollectionFlags().hasUserIdBeenSet()) {
                ent.setUID(r.getCollectionFlags().getUserId());
            }

            if (r.getResourceFlags().hasGroupIdBeenSet()) {
                ent.setGID(r.getResourceFlags().getGroupId());
            } else if (r.getCollectionFlags().hasGroupIdBeenSet()) {
                ent.setGID(r.getCollectionFlags().getGroupId());
            }

            return ent;
        }
    });
    setFileSetBuilder(new ArchiveBase.FileSetBuilder() {
        public ArchiveFileSet buildFileSet(Resource dest) {
            ArchiveFileSet afs = new CpioFileSet();
            afs.setSrcResource(dest);
            return afs;
        }
    });
}