/**
 * The contents of this file are subject to the license and copyright
 * detailed in the LICENSE and NOTICE files at the root of the source
 * tree and available online at
 *
 * http://www.dspace.org/license/
 */
package org.dspace.app.itemupdate;

import java.util.regex.*;

import org.dspace.content.Bitstream;

/**
 * BitstreamFilter implementation to filter by filename pattern
 *
 */
public class BitstreamFilterByFilename extends BitstreamFilter {
	
	private Pattern pattern;
	private String filenameRegex;
	
	public BitstreamFilterByFilename()
	{
		//empty
	}

	/**
	 *   Tests bitstream by matching the regular expression in the 
	 *   properties against the bitstream name
	 * 
	 *   @return whether bitstream name matches the regular expression
	 */
	public boolean accept(Bitstream bitstream) throws BitstreamFilterException
	{		
		if (filenameRegex == null)
		{
			filenameRegex = props.getProperty("filename");
			if (filenameRegex == null)
			{
				throw new BitstreamFilterException("BitstreamFilter property 'filename' not found.");
			}
			pattern = Pattern.compile(filenameRegex);
		}
		
		Matcher m = pattern.matcher(bitstream.getName());
		return m.matches();
	}	
 
}
