package bsearch.algorithms;
import java.io.FileNotFoundException;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
import bsearch.app.BehaviorSearchException;
import bsearch.util.GeneralUtils;
public class SearchMethodLoader {
public static SearchMethod createFromName(String searchMethodName) throws BehaviorSearchException
{
String searchMethodClassName = searchMethodName;
if (!searchMethodClassName.contains("."))
{
searchMethodClassName = "bsearch.algorithms." + searchMethodClassName;
}
SearchMethod searcher;
try {
searcher = (SearchMethod) Class.forName(searchMethodClassName).newInstance();
}
catch (Exception ex)
{
System.err.println(ex.getMessage());
ex.printStackTrace();
throw new BehaviorSearchException("Failed to find/load SearchMethod from Java class: " + searchMethodClassName );
}
return searcher;
}
public static List<String> getAllSearchMethodNames() throws BehaviorSearchException
{
Scanner scanner;
try {
scanner = new Scanner(GeneralUtils.getResource("SearchMethodList.txt"));
} catch (FileNotFoundException e) {
throw new BehaviorSearchException("Error loading list of SearchMethod names: File 'SearchMethodList.txt' couldn't be found.");
}
LinkedList<String> list = new LinkedList<String>();
while ( scanner.hasNextLine() )
{
String s = scanner.nextLine();
if (s.trim().length() > 0)
{
list.add(s);
}
}
return list;
}
}