Example usage for org.apache.commons.compress.archivers.tar TarArchiveEntry setSize

List of usage examples for org.apache.commons.compress.archivers.tar TarArchiveEntry setSize

Introduction

In this page you can find the example usage for org.apache.commons.compress.archivers.tar TarArchiveEntry setSize.

Prototype

public void setSize(long size) 

Source Link

Document

Set this entry's file size.

Usage

From source file:org.vafer.jdeb.mapping.LsMapper.java

public TarArchiveEntry map(final TarArchiveEntry pEntry) {

    final TarArchiveEntry entry = mapping.get(pEntry.getName());

    if (entry != null) {

        final TarArchiveEntry newEntry = new TarArchiveEntry(entry.getName(), true);
        newEntry.setUserId(entry.getUserId());
        newEntry.setGroupId(entry.getGroupId());
        newEntry.setUserName(entry.getUserName());
        newEntry.setGroupName(entry.getGroupName());
        newEntry.setMode(entry.getMode());
        newEntry.setSize(entry.getSize());

        return newEntry;
    }/*from  w w w.ja  v  a 2 s  .com*/

    return pEntry;
}

From source file:org.vafer.jdeb.mapping.PermMapper.java

public TarArchiveEntry map(final TarArchiveEntry entry) {
    final String name = entry.getName();

    final TarArchiveEntry newEntry = new TarArchiveEntry(prefix + '/' + Utils.stripPath(strip, name), true);

    // Set ownership
    if (uid > -1) {
        newEntry.setUserId(uid);//from w  w  w.j  av  a 2s.c  om
    } else {
        newEntry.setUserId(entry.getUserId());
    }
    if (gid > -1) {
        newEntry.setGroupId(gid);
    } else {
        newEntry.setGroupId(entry.getGroupId());
    }
    if (user != null) {
        newEntry.setUserName(user);
    } else {
        newEntry.setUserName(entry.getUserName());
    }
    if (group != null) {
        newEntry.setGroupName(group);
    } else {
        newEntry.setGroupName(entry.getGroupName());
    }

    // Set permissions
    if (newEntry.isDirectory()) {
        if (dirMode > -1) {
            newEntry.setMode(dirMode);
        } else {
            newEntry.setMode(entry.getMode());
        }
    } else {
        if (fileMode > -1) {
            newEntry.setMode(fileMode);
        } else {
            newEntry.setMode(entry.getMode());

        }
    }

    newEntry.setSize(entry.getSize());

    return newEntry;
}

From source file:org.vafer.jdeb.maven.DebMojo.java

/**
 * Main entry point/*from  w w  w  .  j  av  a 2s.  co  m*/
 *
 * @throws MojoExecutionException on error
 */
@Override
public void execute() throws MojoExecutionException {

    final MavenProject project = getProject();

    if (skip) {
        getLog().info("skipping as configured (skip)");
        return;
    }

    if (skipPOMs && isPOM()) {
        getLog().info("skipping because artifact is a pom (skipPOMs)");
        return;
    }

    if (skipSubmodules && isSubmodule()) {
        getLog().info("skipping submodule (skipSubmodules)");
        return;
    }

    setData(dataSet);

    console = new MojoConsole(getLog(), verbose);

    initializeSignProperties();

    final VariableResolver resolver = initializeVariableResolver(new HashMap<String, String>());

    final File debFile = new File(Utils.replaceVariables(resolver, deb, openReplaceToken, closeReplaceToken));
    final File controlDirFile = new File(
            Utils.replaceVariables(resolver, controlDir, openReplaceToken, closeReplaceToken));
    final File installDirFile = new File(
            Utils.replaceVariables(resolver, installDir, openReplaceToken, closeReplaceToken));
    final File changesInFile = new File(
            Utils.replaceVariables(resolver, changesIn, openReplaceToken, closeReplaceToken));
    final File changesOutFile = new File(
            Utils.replaceVariables(resolver, changesOut, openReplaceToken, closeReplaceToken));
    final File changesSaveFile = new File(
            Utils.replaceVariables(resolver, changesSave, openReplaceToken, closeReplaceToken));
    final File keyringFile = keyring == null ? null
            : new File(Utils.replaceVariables(resolver, keyring, openReplaceToken, closeReplaceToken));

    // if there are no producers defined we try to use the artifacts
    if (dataProducers.isEmpty()) {

        if (hasMainArtifact()) {
            Set<Artifact> artifacts = new HashSet<Artifact>();

            artifacts.add(project.getArtifact());

            @SuppressWarnings("unchecked")
            final Set<Artifact> projectArtifacts = project.getArtifacts();

            for (Artifact artifact : projectArtifacts) {
                artifacts.add(artifact);
            }

            @SuppressWarnings("unchecked")
            final List<Artifact> attachedArtifacts = project.getAttachedArtifacts();

            for (Artifact artifact : attachedArtifacts) {
                artifacts.add(artifact);
            }

            for (Artifact artifact : artifacts) {
                final File file = artifact.getFile();
                if (file != null) {
                    dataProducers.add(new DataProducer() {
                        @Override
                        public void produce(final DataConsumer receiver) {
                            try {
                                final File path = new File(installDirFile.getPath(), file.getName());
                                final String entryName = path.getPath();

                                final boolean symbolicLink = SymlinkUtils.isSymbolicLink(path);
                                final TarArchiveEntry e;
                                if (symbolicLink) {
                                    e = new TarArchiveEntry(entryName, TarConstants.LF_SYMLINK);
                                    e.setLinkName(SymlinkUtils.readSymbolicLink(path));
                                } else {
                                    e = new TarArchiveEntry(entryName, true);
                                }

                                e.setUserId(0);
                                e.setGroupId(0);
                                e.setUserName("root");
                                e.setGroupName("root");
                                e.setMode(TarEntry.DEFAULT_FILE_MODE);
                                e.setSize(file.length());

                                receiver.onEachFile(new FileInputStream(file), e);
                            } catch (Exception e) {
                                getLog().error(e);
                            }
                        }
                    });
                } else {
                    getLog().error("No file for artifact " + artifact);
                }
            }
        }
    }

    try {
        DebMaker debMaker = new DebMaker(console, dataProducers, conffileProducers);
        debMaker.setDeb(debFile);
        debMaker.setControl(controlDirFile);
        debMaker.setPackage(getProject().getArtifactId());
        debMaker.setDescription(getProject().getDescription());
        debMaker.setHomepage(getProject().getUrl());
        debMaker.setChangesIn(changesInFile);
        debMaker.setChangesOut(changesOutFile);
        debMaker.setChangesSave(changesSaveFile);
        debMaker.setCompression(compression);
        debMaker.setKeyring(keyringFile);
        debMaker.setKey(key);
        debMaker.setPassphrase(passphrase);
        debMaker.setSignPackage(signPackage);
        debMaker.setSignMethod(signMethod);
        debMaker.setSignRole(signRole);
        debMaker.setResolver(resolver);
        debMaker.setOpenReplaceToken(openReplaceToken);
        debMaker.setCloseReplaceToken(closeReplaceToken);
        debMaker.validate();
        debMaker.makeDeb();

        // Always attach unless explicitly set to false
        if ("true".equalsIgnoreCase(attach)) {
            console.info("Attaching created debian package " + debFile);
            if (!isType()) {
                projectHelper.attachArtifact(project, type, classifier, debFile);
            } else {
                project.getArtifact().setFile(debFile);
            }
        }

    } catch (PackagingException e) {
        getLog().error("Failed to create debian package " + debFile, e);
        throw new MojoExecutionException("Failed to create debian package " + debFile, e);
    }

    if (!StringUtils.isBlank(propertyPrefix)) {
        project.getProperties().put(propertyPrefix + "version", getProjectVersion());
        project.getProperties().put(propertyPrefix + "deb", debFile.getAbsolutePath());
        project.getProperties().put(propertyPrefix + "deb.name", debFile.getName());
        project.getProperties().put(propertyPrefix + "changes", changesOutFile.getAbsolutePath());
        project.getProperties().put(propertyPrefix + "changes.name", changesOutFile.getName());
        project.getProperties().put(propertyPrefix + "changes.txt", changesSaveFile.getAbsolutePath());
        project.getProperties().put(propertyPrefix + "changes.txt.name", changesSaveFile.getName());
    }

}

From source file:org.vafer.jdeb.producers.DataProducerArchive.java

public void produce(final DataConsumer pReceiver) throws IOException {

    InputStream is = new BufferedInputStream(new FileInputStream(archive));

    CompressorInputStream compressorInputStream = null;

    try {/*ww  w  . ja va2 s . c  o m*/
        compressorInputStream = new CompressorStreamFactory().createCompressorInputStream(is);
    } catch (CompressorException e) {
        // expected if the input file is a zip archive
    }

    if (compressorInputStream != null) {
        is = new BufferedInputStream(compressorInputStream);
    }

    ArchiveInputStream archiveInputStream = null;

    try {
        archiveInputStream = new ArchiveStreamFactory().createArchiveInputStream(is);
    } catch (ArchiveException e) {
        throw new IOException("Unsupported archive format: " + archive, e);
    }

    EntryConverter converter = null;

    if (archiveInputStream instanceof TarArchiveInputStream) {

        converter = new EntryConverter() {
            public TarArchiveEntry convert(ArchiveEntry entry) {
                TarArchiveEntry src = (TarArchiveEntry) entry;
                TarArchiveEntry dst = new TarArchiveEntry(src.getName(), true);

                dst.setSize(src.getSize());
                dst.setGroupName(src.getGroupName());
                dst.setGroupId(src.getGroupId());
                dst.setUserId(src.getUserId());
                dst.setMode(src.getMode());
                dst.setModTime(src.getModTime());

                return dst;
            }
        };

    } else if (archiveInputStream instanceof ZipArchiveInputStream) {

        converter = new EntryConverter() {
            public TarArchiveEntry convert(ArchiveEntry entry) {
                ZipArchiveEntry src = (ZipArchiveEntry) entry;
                TarArchiveEntry dst = new TarArchiveEntry(src.getName(), true);

                dst.setSize(src.getSize());
                dst.setMode(src.getUnixMode());
                dst.setModTime(src.getTime());

                return dst;
            }
        };

    } else {
        throw new IOException("Unsupported archive format: " + archive);
    }

    try {
        while (true) {

            ArchiveEntry archiveEntry = archiveInputStream.getNextEntry();

            if (archiveEntry == null) {
                break;
            }

            if (!isIncluded(archiveEntry.getName())) {
                continue;
            }

            TarArchiveEntry entry = converter.convert(archiveEntry);

            entry = map(entry);

            if (entry.isDirectory()) {
                pReceiver.onEachDir(entry.getName(), entry.getLinkName(), entry.getUserName(),
                        entry.getUserId(), entry.getGroupName(), entry.getGroupId(), entry.getMode(),
                        entry.getSize());
                continue;
            }
            pReceiver.onEachFile(archiveInputStream, entry.getName(), entry.getLinkName(), entry.getUserName(),
                    entry.getUserId(), entry.getGroupName(), entry.getGroupId(), entry.getMode(),
                    entry.getSize());
        }

    } finally {
        if (archiveInputStream != null) {
            archiveInputStream.close();
        }
    }
}

From source file:org.vafer.jdeb.producers.DataProducerDirectory.java

public void produce(final DataConsumer pReceiver) throws IOException {

    scanner.scan();/* ww w .  ja  v a2s  . com*/

    final File baseDir = scanner.getBasedir();

    for (String dir : scanner.getIncludedDirectories()) {
        final File file = new File(baseDir, dir);
        String dirname = getFilename(baseDir, file);

        if ("".equals(dirname)) {
            continue;
        }

        if (!isIncluded(dirname)) {
            continue;
        }

        if ('/' != File.separatorChar) {
            dirname = dirname.replace(File.separatorChar, '/');
        }

        if (!dirname.endsWith("/")) {
            dirname += "/";
        }

        TarArchiveEntry entry = new TarArchiveEntry(dirname, true);
        entry.setUserId(0);
        entry.setUserName("root");
        entry.setGroupId(0);
        entry.setGroupName("root");
        entry.setMode(TarArchiveEntry.DEFAULT_DIR_MODE);

        entry = map(entry);

        entry.setSize(0);

        pReceiver.onEachDir(entry.getName(), entry.getLinkName(), entry.getUserName(), entry.getUserId(),
                entry.getGroupName(), entry.getGroupId(), entry.getMode(), entry.getSize());
    }

    for (String f : scanner.getIncludedFiles()) {
        final File file = new File(baseDir, f);
        String filename = getFilename(baseDir, file);

        if (!isIncluded(filename)) {
            continue;
        }

        if ('/' != File.separatorChar) {
            filename = filename.replace(File.separatorChar, '/');
        }

        TarArchiveEntry entry = new TarArchiveEntry(filename, true);
        entry.setUserId(0);
        entry.setUserName("root");
        entry.setGroupId(0);
        entry.setGroupName("root");
        entry.setMode(TarArchiveEntry.DEFAULT_FILE_MODE);

        entry = map(entry);

        entry.setSize(file.length());

        final InputStream inputStream = new FileInputStream(file);
        try {
            pReceiver.onEachFile(inputStream, entry.getName(), entry.getLinkName(), entry.getUserName(),
                    entry.getUserId(), entry.getGroupName(), entry.getGroupId(), entry.getMode(),
                    entry.getSize());
        } finally {
            inputStream.close();
        }
    }
}

From source file:org.vafer.jdeb.producers.DataProducerFile.java

public void produce(final DataConsumer pReceiver) throws IOException {
    String fileName;//from  w w  w.  j  a  va2s  . c  o m
    if (destinationName != null && destinationName.trim().length() > 0) {
        fileName = destinationName.trim();
    } else {
        fileName = file.getName();
    }

    TarArchiveEntry entry = new TarArchiveEntry(fileName, true);
    entry.setUserId(0);
    entry.setUserName("root");
    entry.setGroupId(0);
    entry.setGroupName("root");
    entry.setMode(TarArchiveEntry.DEFAULT_FILE_MODE);

    entry = map(entry);

    entry.setSize(file.length());

    final InputStream inputStream = new FileInputStream(file);
    try {
        pReceiver.onEachFile(inputStream, entry.getName(), entry.getLinkName(), entry.getUserName(),
                entry.getUserId(), entry.getGroupName(), entry.getGroupId(), entry.getMode(), entry.getSize());
    } finally {
        inputStream.close();
    }

}

From source file:org.vafer.jdeb.producers.DataProducerFileSet.java

@Override
public void produce(final DataConsumer pReceiver) throws IOException {
    String user = Producers.ROOT_NAME;
    int uid = Producers.ROOT_UID;
    String group = Producers.ROOT_NAME;
    int gid = Producers.ROOT_UID;
    int filemode = TarEntry.DEFAULT_FILE_MODE;
    int dirmode = TarEntry.DEFAULT_DIR_MODE;
    String prefix = "";

    if (fileset instanceof Tar.TarFileSet) {
        Tar.TarFileSet tarfileset = (Tar.TarFileSet) fileset;
        user = tarfileset.getUserName();
        uid = tarfileset.getUid();/*from w  w w . ja  v  a  2 s  .c o m*/
        group = tarfileset.getGroup();
        gid = tarfileset.getGid();
        filemode = tarfileset.getMode();
        dirmode = tarfileset.getDirMode(tarfileset.getProject());
        prefix = tarfileset.getPrefix(tarfileset.getProject());
    }

    final DirectoryScanner scanner = fileset.getDirectoryScanner(fileset.getProject());
    scanner.scan();

    final File basedir = scanner.getBasedir();

    for (String directory : scanner.getIncludedDirectories()) {
        String name = directory.replace('\\', '/');

        pReceiver.onEachDir(prefix + "/" + name, null, user, uid, group, gid, dirmode, 0);
    }

    for (String filename : scanner.getIncludedFiles()) {
        final String name = filename.replace('\\', '/');
        final File file = new File(basedir, name);

        final InputStream inputStream = new FileInputStream(file);
        try {
            final String entryName = prefix + "/" + name;

            final File entryPath = new File(entryName);

            final boolean symbolicLink = SymlinkUtils.isSymbolicLink(entryPath);
            final TarArchiveEntry e;
            if (symbolicLink) {
                e = new TarArchiveEntry(entryName, TarConstants.LF_SYMLINK);
                e.setLinkName(SymlinkUtils.readSymbolicLink(entryPath));
            } else {
                e = new TarArchiveEntry(entryName, true);
            }

            e.setUserId(uid);
            e.setGroupId(gid);
            e.setUserName(user);
            e.setGroupName(group);
            e.setMode(filemode);
            e.setSize(file.length());

            pReceiver.onEachFile(inputStream, e);
        } finally {
            inputStream.close();
        }
    }
}

From source file:org.vafer.jdeb.producers.DataProducerPathTemplate.java

public void produce(DataConsumer pReceiver) throws IOException {
    for (String literalPath : literalPaths) {
        TarArchiveEntry entry = new TarArchiveEntry(literalPath, true);
        entry.setUserId(0);//from www .j a  va2  s  .com
        entry.setUserName("root");
        entry.setGroupId(0);
        entry.setGroupName("root");
        entry.setMode(TarArchiveEntry.DEFAULT_DIR_MODE);

        entry = map(entry);

        entry.setSize(0);

        pReceiver.onEachDir(entry.getName(), entry.getLinkName(), entry.getUserName(), entry.getUserId(),
                entry.getGroupName(), entry.getGroupId(), entry.getMode(), entry.getSize());
    }
}

From source file:org.waarp.common.tar.TarUtility.java

/**
 * Recursive traversal to add files/*from  w  w  w. jav a2s . co  m*/
 * 
 * @param root
 * @param file
 * @param taos
 * @param absolute
 * @throws IOException
 */
private static void recurseFiles(File root, File file, TarArchiveOutputStream taos, boolean absolute)
        throws IOException {
    if (file.isDirectory()) {
        // recursive call
        File[] files = file.listFiles();
        for (File file2 : files) {
            recurseFiles(root, file2, taos, absolute);
        }
    } else if ((!file.getName().endsWith(".tar")) && (!file.getName().endsWith(".TAR"))) {
        String filename = null;
        if (absolute) {
            filename = file.getAbsolutePath().substring(root.getAbsolutePath().length());
        } else {
            filename = file.getName();
        }
        TarArchiveEntry tae = new TarArchiveEntry(filename);
        tae.setSize(file.length());
        taos.putArchiveEntry(tae);
        FileInputStream fis = new FileInputStream(file);
        IOUtils.copy(fis, taos);
        taos.closeArchiveEntry();
    }
}

From source file:org.waarp.common.tar.TarUtility.java

/**
 * Recursive traversal to add files/*from   ww  w . j  a  v a  2  s  .  c o m*/
 * 
 * @param file
 * @param taos
 * @throws IOException
 */
private static void addFile(File file, TarArchiveOutputStream taos) throws IOException {
    String filename = null;
    filename = file.getName();
    TarArchiveEntry tae = new TarArchiveEntry(filename);
    tae.setSize(file.length());
    taos.putArchiveEntry(tae);
    FileInputStream fis = new FileInputStream(file);
    IOUtils.copy(fis, taos);
    taos.closeArchiveEntry();
}