All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.codehaus.plexus.archiver.DotDirectiveArchiveFinalizer Maven / Gradle / Ivy

There is a newer version: 4.10.0
Show newest version
package org.codehaus.plexus.archiver;

import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.StringUtils;

import java.io.File;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Collections;
import java.util.List;


/**
 * An @{link ArchiveFinalizer} that process dot files with archiver directives
 * contained within. This basically means you can communicate archive creation
 * instructions between processes using dot files.
 *
 * @author Jason van Zyl
 */
public class DotDirectiveArchiveFinalizer
    extends AbstractArchiveFinalizer
{
    private static final String DEFAULT_DOT_FILE_PREFIX = ".plxarc";

    private final File dotFileDirectory;

    private final String dotFilePrefix;

    public DotDirectiveArchiveFinalizer( File dotFileDirectory )
    {
        this( dotFileDirectory, DEFAULT_DOT_FILE_PREFIX );
    }

    public DotDirectiveArchiveFinalizer( File dotFileDirectory, String dotFilePrefix )
    {
        this.dotFileDirectory = dotFileDirectory;

        this.dotFilePrefix = dotFilePrefix;
    }

    public void finalizeArchiveCreation( Archiver archiver )
        throws ArchiverException
    {
        try
        {
            List dotFiles = FileUtils.getFiles( dotFileDirectory, dotFilePrefix + "*", null );

			for (Object dotFile1 : dotFiles) {
				File dotFile = (File) dotFile1;

				BufferedReader in = new BufferedReader(new FileReader(dotFile));

				String line;

				while ((line = in.readLine()) != null) {
					String[] s = StringUtils.split(line, ":");

					if (s.length == 1) {
						File directory = new File(dotFileDirectory, s[0]);

						System.out.println("adding directory = " + directory);

						archiver.addDirectory(directory);
					} else {
						File directory = new File(dotFileDirectory, s[0]);

						System.out.println("adding directory = " + directory + " to: " + s[1]);

						if (s[1].endsWith("/")) {
							archiver.addDirectory(directory, s[1]);
						} else {
							archiver.addDirectory(directory, s[1] + "/");
						}
					}
				}

				in.close();
			}

        }
        catch ( IOException e )
        {
            throw new ArchiverException( "Error processing dot files.", e );
        }
    }

    public List getVirtualFiles()
    {
        return Collections.EMPTY_LIST;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy