/*
 * @(#)ExtFilter.java
 */
package ereinion.io;

import ereinion.util.FilterRule;
import java.io.FilenameFilter;
import java.io.File;

/**
 * Questa classe fornisce una regola di filtraggio i file basata sulla loro estensione.
 * Un file viene accettato se e solo se la sua estensione rientra tra quelle previste.
 * le estensione vanno fornite senza 'dot'
 *
 * @author  Ereinion
 * @version 1.0, 25/09/2002
 * @since EPR 1.0
 */
public class ExtFilter implements FilterRule, FilenameFilter
{

	/**
     * Crea un nuovo filtro che accetta solo le estensioni impostate.
     *
     * @param exts le estensioni di file che vengono accettate.
     */
	public ExtFilter(String[] exts)
	{
		extList = new String[exts.length];
		for (int k=0; k<exts.length; k++)
			extList[k] = exts[k];
	}

	/**
     * Crea un nuovo filtro che accetta solo l' estensione impostata.
     *
     * @param ext l' estensione di file che viene accettata.
     */
	public ExtFilter(String ext)
	{
		extList = new String[1];
		extList[0] = ext;
	}

	
	/* implementazione di FilterRule */

	/**
     * Accetta un file solo se ha una estensione consentita da questo filtro.
     *
     * @param elem deve essere un file.
     */
	public boolean accept(Object elem)
	{
		boolean ok = false;
		try {
			String name = ((File)elem).getCanonicalPath();
			for (int k=0; k<extList.length && !ok; k++)
				if (name.lastIndexOf(extList[k]) == name.length()-extList[k].length())
					ok = true;
		} catch (Exception e) {}
		return ok;
	}

	
	/* implementazione di FilenameFilter */

	public boolean accept(File dir, String name)
	{
		return accept(new File(dir,name));
	}

	private String[] extList;

}
