/** * Copyright 2007-2008 University Of Southern California * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package edu.isi.pegasus.planner.common; import java.io.FilenameFilter; import java.util.regex.Pattern; import java.io.File; /** * A filename filter for identifying the run directory * * @author Karan Vahi vahi@isi.edu */ public class RunDirectoryFilenameFilter implements FilenameFilter { /** * The prefix for the submit directory. */ public static final String SUBMIT_DIRECTORY_PREFIX = "run"; /** * Store the regular expressions necessary to parse kickstart output files */ private static final String mRegexExpression = "(" + SUBMIT_DIRECTORY_PREFIX + ")([0-9][0-9][0-9][0-9])"; /** * Stores compiled patterns at first use, quasi-Singleton. */ private static Pattern mPattern = null; /*** * Tests if a specified file should be included in a file list. * * @param dir the directory in which the file was found. * @param name - the name of the file. * * @return true if and only if the name should be included in the file list * false otherwise. * * */ public boolean accept( File dir, String name) { //compile the pattern only once. if( mPattern == null ){ mPattern = Pattern.compile( mRegexExpression ); } return mPattern.matcher( name ).matches(); } }