package org.codehaus.mojo.deb.jdpkg.ar; import static org.codehaus.mojo.deb.jdpkg.ar.ArUtil.close; import static org.codehaus.mojo.deb.jdpkg.ar.ArUtil.readBytes; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayDeque; import java.util.Deque; /** * @author <a href="mailto:trygve.laugstol@arktekk.no">Trygve Laugstøl</a> * @version $Id$ */ public class Ar { public static NewAr create() { return new NewAr(); } public static CloseableIterable<ReadableArFile> read(File file) throws IOException { return new ArReader(file); } public static class NewAr { private Deque<ArFile> files = new ArrayDeque<ArFile>(); public class NewArFile { ArFile file; public NewArFile withUid(int uid) { file.ownerId = uid; return this; } public NewArFile withGid(int gid) { file.groupId = gid; return this; } public NewAr done() { files.add(file); return NewAr.this; } } public NewAr addFileDone(File file) { files.add(ArFile.fromFile(file)); return this; } public NewArFile addFile(File file) { NewArFile f = new NewArFile(); f.file = ArFile.fromFile(file); return f; } public void storeToFile(File file) throws IOException { ArWriter writer = null; try { writer = new ArWriter(file); for (ArFile arFile : files) { writer.add(arFile); } } finally { close(writer); } } } /* public static InputStream openFile(File arFile, String fileName) throws IOException { ArReader reader = null; try { reader = new ArReader(arFile); for (ArFile file : reader) { if (file.getName().equals(fileName)) { return loadFile(file); } } throw new NoSuchFileInArchiveException(); } finally { close(reader); } } */ }