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

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

Introduction

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

Prototype

public void setIds(int userId, int groupId) 

Source Link

Document

Convenience method to set this entry's group and user ids.

Usage

From source file:cpcc.vvrte.services.VirtualVehicleMigratorTest.java

private static void appendEntryToStream(String entryName, byte[] content, ArchiveOutputStream os)
        throws IOException {
    TarArchiveEntry entry = new TarArchiveEntry(entryName);
    entry.setModTime(new Date());
    entry.setSize(content.length);/*from   w w  w  .jav a  2 s .  c o m*/
    entry.setIds(0, 0);
    entry.setNames("vvrte", "cpcc");

    os.putArchiveEntry(entry);
    os.write(content);
    os.closeArchiveEntry();
}

From source file:com.moss.simpledeb.core.action.DigestAction.java

@Override
public void run(DebState state) throws Exception {

    final StringBuilder sb = new StringBuilder();
    final MessageDigest digest = java.security.MessageDigest.getInstance("MD5");

    for (ArchivePath path : state.contentPaths) {

        if (path.entry().isDirectory()) {
            continue;
        }/*from www .jav a  2s.c o  m*/

        byte[] fileData;
        {
            InputStream in = path.read();
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024 * 10]; //10k buffer
            for (int numRead = in.read(buffer); numRead != -1; numRead = in.read(buffer)) {
                out.write(buffer, 0, numRead);
            }
            in.close();
            out.close();
            fileData = out.toByteArray();
        }

        digest.update(fileData);
        byte[] hash = digest.digest();
        digest.reset();

        sb.append(HexUtil.toHex(hash).toLowerCase());
        sb.append("  ");
        sb.append(path.entry().getName());
        sb.append("\n");
    }

    byte[] data = sb.toString().getBytes();

    TarArchiveEntry tarEntry = new TarArchiveEntry("md5sum");
    tarEntry.setGroupId(0);
    tarEntry.setGroupName("root");
    tarEntry.setIds(0, 0);
    tarEntry.setModTime(System.currentTimeMillis());
    tarEntry.setSize(data.length);
    tarEntry.setUserId(0);
    tarEntry.setUserName("root");

    state.addPath(DebComponent.CONTROL, new BytesArchivePath(tarEntry, data));
}

From source file:com.moss.simpledeb.core.action.ControlAction.java

@Override
public void run(DebState state) throws Exception {

    require("Package", packageName);
    require("Version", version);
    require("Architecture", architecture);
    require("Depends", depends);
    require("Maintainer", maintainer);
    require("Description", description);

    byte[] controlFileData;
    {//from ww w .ja v  a 2  s. co m
        StringBuilder sb = new StringBuilder();
        sb.append("Package: ").append(packageName).append("\n");
        sb.append("Version: ").append(version).append("\n");
        sb.append("Architecture: ").append(architecture).append("\n");
        sb.append("Depends: ").append(depends).append("\n");
        sb.append("Maintainer: ").append(maintainer).append("\n");
        sb.append("Description: ").append(description).append("\n");

        controlFileData = sb.toString().getBytes();
    }

    TarArchiveEntry tarEntry = new TarArchiveEntry("control");
    tarEntry.setGroupId(0);
    tarEntry.setGroupName("root");
    tarEntry.setIds(0, 0);
    tarEntry.setModTime(System.currentTimeMillis());
    tarEntry.setSize(controlFileData.length);
    tarEntry.setUserId(0);
    tarEntry.setUserName("root");

    state.addPath(DebComponent.CONTROL, new BytesArchivePath(tarEntry, controlFileData));
}

From source file:cpcc.vvrte.services.TarArchiveDemo.java

@Test
public void shouldWriteTarFile() throws IOException, ArchiveException {
    byte[] c1 = "content1\n".getBytes("UTF-8");
    byte[] c2 = "content2 text\n".getBytes("UTF-8");

    Date t1 = new Date(1000L * (System.currentTimeMillis() / 1000L));
    Date t2 = new Date(t1.getTime() - 30000);

    FileOutputStream fos = new FileOutputStream("bugger1.tar");

    ArchiveStreamFactory factory = new ArchiveStreamFactory("UTF-8");
    ArchiveOutputStream outStream = factory.createArchiveOutputStream("tar", fos);

    TarArchiveEntry archiveEntry1 = new TarArchiveEntry("entry1");
    archiveEntry1.setModTime(t1);//w  ww.j  av a  2s .c  o  m
    archiveEntry1.setSize(c1.length);
    archiveEntry1.setIds(STORAGE_ID_ONE, CHUNK_ID_ONE);
    archiveEntry1.setNames(USER_NAME_ONE, GROUP_NAME_ONE);

    outStream.putArchiveEntry(archiveEntry1);
    outStream.write(c1);
    outStream.closeArchiveEntry();

    TarArchiveEntry archiveEntry2 = new TarArchiveEntry("data/entry2");
    archiveEntry2.setModTime(t2);
    archiveEntry2.setSize(c2.length);
    archiveEntry2.setIds(STORAGE_ID_TWO, CHUNK_ID_TWO);
    archiveEntry2.setNames(USER_NAME_TWO, GROUP_NAME_TWO);

    outStream.putArchiveEntry(archiveEntry2);
    outStream.write(c2);
    outStream.closeArchiveEntry();

    outStream.close();

    FileInputStream fis = new FileInputStream("bugger1.tar");
    ArchiveInputStream inStream = factory.createArchiveInputStream("tar", fis);

    TarArchiveEntry entry1 = (TarArchiveEntry) inStream.getNextEntry();
    assertThat(entry1.getModTime()).isEqualTo(t1);
    assertThat(entry1.getSize()).isEqualTo(c1.length);
    assertThat(entry1.getLongUserId()).isEqualTo(STORAGE_ID_ONE);
    assertThat(entry1.getLongGroupId()).isEqualTo(CHUNK_ID_ONE);
    assertThat(entry1.getUserName()).isEqualTo(USER_NAME_ONE);
    assertThat(entry1.getGroupName()).isEqualTo(GROUP_NAME_ONE);
    ByteArrayOutputStream b1 = new ByteArrayOutputStream();
    IOUtils.copy(inStream, b1);
    b1.close();
    assertThat(b1.toByteArray().length).isEqualTo(c1.length);
    assertThat(b1.toByteArray()).isEqualTo(c1);

    TarArchiveEntry entry2 = (TarArchiveEntry) inStream.getNextEntry();
    assertThat(entry2.getModTime()).isEqualTo(t2);
    assertThat(entry2.getSize()).isEqualTo(c2.length);
    assertThat(entry2.getLongUserId()).isEqualTo(STORAGE_ID_TWO);
    assertThat(entry2.getLongGroupId()).isEqualTo(CHUNK_ID_TWO);
    assertThat(entry2.getUserName()).isEqualTo(USER_NAME_TWO);
    assertThat(entry2.getGroupName()).isEqualTo(GROUP_NAME_TWO);
    ByteArrayOutputStream b2 = new ByteArrayOutputStream();
    IOUtils.copy(inStream, b2);
    b2.close();
    assertThat(b2.toByteArray().length).isEqualTo(c2.length);
    assertThat(b2.toByteArray()).isEqualTo(c2);

    TarArchiveEntry entry3 = (TarArchiveEntry) inStream.getNextEntry();
    assertThat(entry3).isNull();

    inStream.close();
}

From source file:com.moss.simpledeb.core.action.LaunchScriptAction.java

@Override
public void run(DebState state) throws Exception {

    {/*from w w w .ja  v a 2s  . c  o  m*/
        File target = new File(targetFile).getParentFile();
        LinkedList<File> pathsNeeded = new LinkedList<File>();

        File f = target;
        while (f != null) {
            pathsNeeded.addFirst(f);
            f = f.getParentFile();
        }

        for (int i = 0; i < pathLevel; i++) {
            pathsNeeded.removeFirst();
        }

        for (File e : pathsNeeded) {
            String p = "./" + e.getPath();

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

            TarArchiveEntry tarEntry = new TarArchiveEntry(p);
            tarEntry.setGroupId(0);
            tarEntry.setGroupName("root");
            tarEntry.setIds(0, 0);
            tarEntry.setModTime(System.currentTimeMillis());
            tarEntry.setSize(0);
            tarEntry.setUserId(0);
            tarEntry.setUserName("root");
            tarEntry.setMode(Integer.parseInt("755", 8));

            ArchivePath path = new DirArchivePath(tarEntry);
            state.addPath(DebComponent.CONTENT, path);
        }
    }

    String cp;
    {
        StringBuffer sb = new StringBuffer();
        for (String path : state.classpath) {
            if (sb.length() == 0) {
                sb.append(path);
            } else {
                sb.append(":");
                sb.append(path);
            }
        }
        cp = sb.toString();
    }

    StringBuilder sb = new StringBuilder();
    sb.append("#!/bin/bash\n");
    sb.append("CP=\"");
    sb.append(cp);
    sb.append("\"\n");
    sb.append("/usr/bin/java -cp $CP ");
    sb.append(className);
    sb.append(" $@\n");

    byte[] data = sb.toString().getBytes();

    String entryName = "./" + targetFile;

    TarArchiveEntry tarEntry = new TarArchiveEntry(entryName);
    tarEntry.setGroupId(0);
    tarEntry.setGroupName("root");
    tarEntry.setIds(0, 0);
    tarEntry.setModTime(System.currentTimeMillis());
    tarEntry.setSize(data.length);
    tarEntry.setUserId(0);
    tarEntry.setUserName("root");
    tarEntry.setMode(Integer.parseInt("755", 8));

    ArchivePath path = new BytesArchivePath(tarEntry, data);
    state.addPath(DebComponent.CONTENT, path);
}

From source file:com.moss.simpledeb.core.action.CopyAction.java

@Override
public void run(final DebState state) throws Exception {

    File target = new File(targetDir);
    LinkedList<File> pathsNeeded = new LinkedList<File>();

    File f = target;//from w  ww  .j a  va 2s . c o m
    while (f != null) {
        pathsNeeded.addFirst(f);
        f = f.getParentFile();
    }

    for (int i = 0; i < assumedTargetPathLevel; i++) {
        pathsNeeded.removeFirst();
    }

    for (File e : pathsNeeded) {
        String p = "./" + e.getPath();

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

        TarArchiveEntry tarEntry = new TarArchiveEntry(p);
        tarEntry.setGroupId(0);
        tarEntry.setGroupName("root");
        tarEntry.setIds(0, 0);
        tarEntry.setModTime(System.currentTimeMillis());
        tarEntry.setSize(0);
        tarEntry.setUserId(0);
        tarEntry.setUserName("root");
        tarEntry.setMode(Integer.parseInt("755", 8));

        ArchivePath path = new DirArchivePath(tarEntry);
        state.addPath(component, path);
    }

    files.visit(new FileVisitor() {
        public void file(File file) {
            try {
                copyFile(file, state);
            } catch (Exception ex) {
                throw new RuntimeException(ex);
            }
        }
    });
}

From source file:com.moss.simpledeb.core.action.CopyAction.java

private void copyFile(File file, DebState state) throws Exception {

    String entryName = "./" + targetDir + "/" + file.getName();

    if (!file.isDirectory()) {

        TarArchiveEntry tarEntry = new TarArchiveEntry(entryName);
        tarEntry.setGroupId(0);/*  w ww . ja  v a2  s  .c o m*/
        tarEntry.setGroupName("root");
        tarEntry.setIds(0, 0);
        tarEntry.setModTime(System.currentTimeMillis());
        tarEntry.setSize(file.length());
        tarEntry.setUserId(0);
        tarEntry.setUserName("root");
        tarEntry.setMode(Integer.parseInt(fileMode, 8));

        ArchivePath path = new FileArchivePath(tarEntry, file);
        state.addPath(component, path);

        if (appendToClasspath) {
            state.classpath.add("/" + targetDir + "/" + file.getName());
        }
    } else {
        entryName = entryName + "/";

        TarArchiveEntry tarEntry = new TarArchiveEntry(entryName);
        tarEntry.setGroupId(0);
        tarEntry.setGroupName("root");
        tarEntry.setIds(0, 0);
        tarEntry.setModTime(System.currentTimeMillis());
        tarEntry.setSize(0);
        tarEntry.setUserId(0);
        tarEntry.setUserName("root");
        tarEntry.setMode(Integer.parseInt(dirMode, 8));

        ArchivePath path = new DirArchivePath(tarEntry);
        state.addPath(component, path);
    }
}

From source file:cpcc.vvrte.services.VirtualVehicleMigratorImpl.java

/**
 * @param virtualVehicle the virtual vehicle.
 * @param os the output stream to write to.
 * @param chunkNumber the chunk number.//ww  w  . j  a va  2s.co m
 * @throws IOException thrown in case of errors.
 */
private void writeVirtualVehicleSourceCode(VirtualVehicle virtualVehicle, ArchiveOutputStream os,
        int chunkNumber) throws IOException {
    if (virtualVehicle.getCode() == null) {
        return;
    }

    byte[] source = virtualVehicle.getCode().getBytes("UTF-8");

    TarArchiveEntry entry = new TarArchiveEntry(DATA_VV_SOURCE_JS);
    entry.setModTime(new Date());
    entry.setSize(source.length);
    entry.setIds(0, chunkNumber);
    entry.setNames("vvrte", "cpcc");

    os.putArchiveEntry(entry);
    os.write(source);
    os.closeArchiveEntry();
}

From source file:cpcc.vvrte.services.VirtualVehicleMigratorImpl.java

/**
 * @param virtualVehicle the virtual vehicle.
 * @param os the output stream to write to.
 * @param chunkNumber the chunk number.//ww w .  j ava  2  s.  c  om
 * @throws IOException thrown in case of errors.
 */
private void writeVirtualVehicleProperties(VirtualVehicle virtualVehicle, ArchiveOutputStream os,
        int chunkNumber, boolean lastChunk) throws IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    Properties virtualVehicleProps = fillVirtualVehicleProps(virtualVehicle, lastChunk);
    virtualVehicleProps.store(baos, "Virtual Vehicle Properties");
    baos.close();

    byte[] propBytes = baos.toByteArray();

    TarArchiveEntry entry = new TarArchiveEntry(DATA_VV_PROPERTIES);
    entry.setModTime(new Date());
    entry.setSize(propBytes.length);
    entry.setIds(0, chunkNumber);
    entry.setNames("vvrte", "cpcc");

    os.putArchiveEntry(entry);
    os.write(propBytes);
    os.closeArchiveEntry();
}

From source file:cpcc.vvrte.services.VirtualVehicleMigratorImpl.java

/**
 * @param virtualVehicle the virtual vehicle.
 * @param os the output stream to write to.
 * @param chunkNumber the chunk number./* w w w . ja  va  2  s . co m*/
 * @throws IOException thrown in case of errors.
 */
private void writeVirtualVehicleContinuation(VirtualVehicle virtualVehicle, ArchiveOutputStream os,
        int chunkNumber) throws IOException {
    byte[] continuation = virtualVehicle.getContinuation();

    if (continuation == null) {
        return;
    }

    TarArchiveEntry entry = new TarArchiveEntry(DATA_VV_CONTINUATION_JS);
    entry.setModTime(new Date());
    entry.setSize(continuation.length);
    entry.setIds(0, chunkNumber);
    entry.setNames("vvrte", "cpcc");

    os.putArchiveEntry(entry);
    os.write(continuation);
    os.closeArchiveEntry();
}