/* * JBoss, Home of Professional Open Source. * See the COPYRIGHT.txt file distributed with this work for information * regarding copyright ownership. Some portions may be licensed * to Red Hat, Inc. under one or more contributor license agreements. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. */ package org.teiid.test.client; import java.util.ArrayList; import java.util.Collection; import org.teiid.core.util.ReflectionHelper; import org.teiid.test.framework.ConfigPropertyLoader; import org.teiid.test.framework.exception.TransactionRuntimeException; /** * @author vanhalbert * */ @SuppressWarnings("nls") public class ClassFactory { /** * The {@link #QUERY_SCENARIO_CLASSNAME} property indicates the implementation of * {@link QueryScenario} to use. */ public static final String QUERY_SCENARIO_CLASSNAME = "query.scenario.classname"; //$NON-NLS-1$ /** * The default scenario class to use when {@link #QUERY_SCENARIO_CLASSNAME} is not defined. */ public static final String QUERY_SCENARIO_DEFAULT_CLASSNAME = "org.teiid.test.client.impl.QueryScenarioImpl"; //$NON-NLS-1$ /** * The {@link #QUERY_READER_CLASSNAME} property indicates the implementation of * {@link QueryReader} to use. */ public static final String QUERY_READER_CLASSNAME = "query.reader.classname"; //$NON-NLS-1$ /** * The default query reader class to use when {@link #QUERY_READER_CLASSNAME} is not defined. */ public static final String QUERY_READER_DEFAULT_CLASSNAME = "org.teiid.test.client.ctc.XMLQueryReader"; //$NON-NLS-1$ /** * The {@link #RESULTS_GENERATOR_CLASSNAME} property indicates the implementation of * {@link ResultsGenerator} to use. */ public static final String RESULTS_GENERATOR_CLASSNAME = "results.generator.classname"; //$NON-NLS-1$ /** * The default query reader class to use when {@link #QUERY_READER_CLASSNAME} is not defined. */ public static final String RESULTS_GENERATOR_DEFAULT_CLASSNAME = "org.teiid.test.client.impl.ResultsGeneratorImpl"; //$NON-NLS-1$ /** * The {@link #EXPECTED_RESULTS_CLASSNAME} property indicates the implementation of * {@link ExpectedResults} to use. */ public static final String EXPECTED_RESULTS_CLASSNAME = "expected.results.classname"; //$NON-NLS-1$ /** * The default query reader class to use when {@link #EXPECTED_RESULTS_CLASSNAME} is not defined. */ public static final String EXPECTED_RESULTS_DEFAULT_CLASSNAME = "org.teiid.test.client.impl.ExpectedResultsImpl"; //$NON-NLS-1$ public static QueryScenario createQueryScenario(String scenarioName) { String clzzname = ConfigPropertyLoader.getInstance().getProperty(QUERY_SCENARIO_CLASSNAME); if (clzzname == null || clzzname.startsWith("${")) { clzzname = QUERY_SCENARIO_DEFAULT_CLASSNAME; } Collection<Object> args = new ArrayList<Object>(2); args.add(scenarioName); args.add(ConfigPropertyLoader.getInstance().getProperties()); QueryScenario scenario; try { scenario = (QueryScenario) ReflectionHelper.create(clzzname, args, null); } catch (Exception e) { e.printStackTrace(); throw new TransactionRuntimeException(e); } return scenario; } public static QueryReader createQueryReader(Collection<?> args) { String clzzname = ConfigPropertyLoader.getInstance().getProperty(QUERY_READER_CLASSNAME); if (clzzname == null) { clzzname = QUERY_READER_DEFAULT_CLASSNAME; } QueryReader reader; try { reader = (QueryReader) ReflectionHelper.create(clzzname, args, null); } catch (Exception e) { e.printStackTrace(); throw new TransactionRuntimeException(e); } return reader; } public static ResultsGenerator createResultsGenerator(Collection<?> args) { String clzzname = ConfigPropertyLoader.getInstance().getProperty(RESULTS_GENERATOR_CLASSNAME); if (clzzname == null) { clzzname = RESULTS_GENERATOR_DEFAULT_CLASSNAME; } ResultsGenerator resultsgen; try { resultsgen = (ResultsGenerator) ReflectionHelper.create(clzzname, args, null); } catch (Exception e) { throw new TransactionRuntimeException(e.getMessage()); } return resultsgen; } public static ExpectedResults createExpectedResults(Collection<?> args) { String clzzname = ConfigPropertyLoader.getInstance().getProperty(EXPECTED_RESULTS_CLASSNAME); if (clzzname == null) { clzzname = EXPECTED_RESULTS_DEFAULT_CLASSNAME; } ExpectedResults expResults; try { expResults = (ExpectedResults) ReflectionHelper.create(clzzname, args, null); } catch (Exception e) { throw new TransactionRuntimeException(e.getMessage()); } return expResults; } }