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

okw.ResourceList Maven / Gradle / Ivy

Go to download

This is the core-module of OpenKeyWord. This module is automatically integrated by the adapters. In GUI automation, the core module is automatically integrated by the GUI modules (dependencies).

There is a newer version: 0.2.44
Show newest version
package okw;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.regex.Pattern;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;

import okw.log.Logger_Sngltn;

/**
 * list resources available from the classpath @ *
 */
public class ResourceList
{

    /**
     *  \copydoc Logger_Sngltn::getInstance()
     */
    private static Logger_Sngltn Log = Logger_Sngltn.getInstance();
	
	/**
	 * for all elements of java.class.path get a Collection of resources Pattern
	 * pattern = Pattern.compile(".*"); gets all resources
	 * 
	 * @param pattern
	 *            the pattern to match
	 * @return the resources in the order they are found
	 */
	public static Collection getResources(final Pattern pattern)
	{
		final ArrayList retval = new ArrayList();
		
		final String classPath = System.getProperty("java.class.path", ".");
		
		final String[] classPathElements = classPath.split(System.getProperty("path.separator"));
		
		Log.ResOpenListDebug( "Class Path..." ); 
		
		for (final String element : classPathElements)
		{
			Log.LogPrintDebug( element );
			retval.addAll(getResources(element, pattern));
		}
		
		Log.ResCloseListDebug();
		
		return retval;
	}

	private static Collection getResources(final String element, final Pattern pattern)
	{
		final ArrayList retval = new ArrayList();
		final File file = new File(element);
		
		if (file.isDirectory())
		{
			retval.addAll(getResourcesFromDirectory(file, pattern));
		}
		else
		{
			retval.addAll(getResourcesFromJarFile(file, pattern));
		}
		return retval;
	}

	private static Collection getResourcesFromJarFile(final File file, final Pattern pattern) {
		final ArrayList retval = new ArrayList();
		ZipFile zf;
		try {
			zf = new ZipFile(file);
		} catch (final ZipException e) {
			throw new Error(e);
		} catch (final IOException e) {
			throw new Error(e);
		}
		
		final Enumeration e = zf.entries();
		while (e.hasMoreElements()) {
			final ZipEntry ze = (ZipEntry) e.nextElement();
			final String fileName = ze.getName();
			final boolean accept = pattern.matcher(fileName).matches();
			if (accept) {
				retval.add(fileName);
			}
		}
		try {
			zf.close();
		} catch (final IOException e1) {
			throw new Error(e1);
		}
		return retval;
	}

	private static Collection getResourcesFromDirectory(final File directory, final Pattern pattern) {
		final ArrayList retval = new ArrayList();
		final File[] fileList = directory.listFiles();
		for (final File file : fileList) {
			if (file.isDirectory()) {
				retval.addAll(getResourcesFromDirectory(file, pattern));
			} else {
				try {
					final String fileName = file.getCanonicalPath();
					final boolean accept = pattern.matcher(fileName).matches();
					if (accept) {
						retval.add(fileName);
					}
				} catch (final IOException e) {
					throw new Error(e);
				}
			}
		}
		return retval;
	}

	/**
	 * list the resources that match args[0]
	 * 
	 * @param args
	 *            args[0] is the pattern to match, or list all resources if there
	 *            are no args
	 */
	public static void main(final String[] args) {
		Pattern pattern;
		if (args.length < 1) {
			pattern = Pattern.compile(".*");
		} else {
			pattern = Pattern.compile(args[0]);
		}
		final Collection list = ResourceList.getResources(pattern);
		for (final String name : list) {
			System.out.println(name);
		}
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy