package info.ephyra.querygeneration; import info.ephyra.io.Logger; import info.ephyra.io.MsgPrinter; import info.ephyra.querygeneration.generators.QueryGenerator; import info.ephyra.questionanalysis.AnalyzedQuestion; import java.util.ArrayList; /** * Generates one or more <code>Queries</code> from a previously analyzed * question by applying a set of <code>QueryGenerators</code>. * * @author Nico Schlaefer * @version 2006-30-10 */ public class QueryGeneration { /** <code>QueryGenerator</code> objects used to generate the queries. */ private static ArrayList<QueryGenerator> queryGenerators = new ArrayList<QueryGenerator>(); /** * Registers a <code>QueryGenerator</code>. * * @param queryGenerator <code>QueryGenerator</code> to add */ public static void addQueryGenerator(QueryGenerator queryGenerator) { queryGenerators.add(queryGenerator); } /** * Unregisters all <code>QueryGenerators</code>. */ public static void clearQueryGenerators() { queryGenerators.clear(); } /** * Applies the <code>QueryGenerators</code> to an analysed question and * returns one or more queries that can be passed to the search module. * * @param aq analyzed question * @return <code>Query</code> objects */ public static Query[] getQueries(AnalyzedQuestion aq) { ArrayList<Query> results = new ArrayList<Query>(); // apply query generators for (QueryGenerator queryGenerator : queryGenerators) { Query[] queries = queryGenerator.generateQueries(aq); for (Query query : queries) results.add(query); } // print and log query strings Query[] queries = results.toArray(new Query[results.size()]); MsgPrinter.printQueryStrings(queries); Logger.logQueryStrings(queries); return queries; } }