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

spoon.compiler.SpoonResourceHelper Maven / Gradle / Ivy

/*
 * Spoon - http://spoon.gforge.inria.fr/
 * Copyright (C) 2006 INRIA Futurs 
 *
 * This software is governed by the CeCILL-C License under French law and
 * abiding by the rules of distribution of free software. You can use, modify
 * and/or redistribute the software under the terms of the CeCILL-C license as
 * circulated by CEA, CNRS and INRIA at http://www.cecill.info.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the CeCILL-C License for more details.
 *
 * The fact that you are presently reading this means that you have had
 * knowledge of the CeCILL-C license and that you accept its terms.
 */

package spoon.compiler;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import spoon.Launcher;
import spoon.support.compiler.FileSystemFile;
import spoon.support.compiler.FileSystemFolder;
import spoon.support.compiler.ZipFolder;

/**
 * This class defines a helper for manipulating resources.
 */
public abstract class SpoonResourceHelper {

	private SpoonResourceHelper() {
	}

	/**
	 * Tells if the given file is an archive file.
	 */
	public static boolean isArchive(File f) {
		return f.getName().endsWith(".jar") || f.getName().endsWith(".zip");
	}

	/**
	 * Tells if the given file is file (files are not archives).
	 */
	public static boolean isFile(File f) {
		return f.isFile() && !isArchive(f);
	}

	/**
	 * Creates the list of {@link SpoonResource} corresponding to the given
	 * paths (files, folders, archives).
	 */
	public static List resources(String... paths)
			throws FileNotFoundException {
		List files = new ArrayList();
		for (String path : paths) {
			files.add(createResource(new File(path)));
		}
		return files;
	}

	/**
	 * Creates the {@link SpoonFile} corresponding to the given file.
	 */
	public static SpoonFile createFile(File f) throws FileNotFoundException {
		if (!f.exists()) {
			throw new FileNotFoundException(f.toString());
		}
		return new FileSystemFile(f);
	}

	/**
	 * Creates the {@link SpoonResource} corresponding to the given file.
	 */
	public static SpoonResource createResource(File f)
			throws FileNotFoundException {
		if (isFile(f)) {
			return createFile(f);
		}
		return createFolder(f);
	}

	/**
	 * Creates the {@link SpoonFolder} corresponding to the given file.
	 */
	public static SpoonFolder createFolder(File f) throws FileNotFoundException {
		if (!f.exists()) {
			throw new FileNotFoundException(f.toString() + " does not exist");
		}
		try {
			if (f.isDirectory()) {
				return new FileSystemFolder(f);
			}
			if (isArchive(f)) {
				return new ZipFolder(f);
			}
		} catch (IOException e) {
			Launcher.logger.error(e.getMessage(), e);
		}

		return null;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy