package org.ariadne_eu.metadata.query; import java.util.HashMap; import org.apache.log4j.Logger; import org.ariadne.config.PropertiesManager; import org.ariadne_eu.utils.config.RepositoryConstants; /** * Created by ben * Date: 5-mei-2007 * Time: 16:55:38 * To change this template use File | Settings | File Templates. */ public class QueryMetadataFactory { private static Logger log = Logger.getLogger(QueryMetadataFactory.class); private static HashMap cachedImplementations = new HashMap(); public static void initialize() { cachedImplementations = new HashMap(); } public static QueryMetadataImpl getQueryImpl(int language) { if (cachedImplementations.get(new Integer(language)) == null) { String implementation = PropertiesManager.getInstance().getProperty(RepositoryConstants.getInstance().MD_QUERY_IMPLEMENTATION + "." + language); if (implementation == null) implementation = PropertiesManager.getInstance().getProperty(RepositoryConstants.getInstance().MD_QUERY_IMPLEMENTATION); try { Class implClass = Class.forName(implementation); QueryMetadataImpl query = (QueryMetadataImpl) implClass.newInstance(); query.setLanguage(language); query.initialize(); cachedImplementations.put(new Integer(language), query); } catch (Exception e) { log.error("Error while initializing query class", e); } } return (QueryMetadataImpl) cachedImplementations.get(new Integer(language)); } }