/* * Hibernate OGM, Domain model persistence for NoSQL datastores * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.ogm.query.impl; import java.util.Map; import org.hibernate.engine.query.spi.EntityGraphQueryHint; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.hql.spi.FilterTranslator; import org.hibernate.hql.spi.QueryTranslator; import org.hibernate.hql.spi.QueryTranslatorFactory; import org.hibernate.ogm.query.spi.QueryParserService; import org.hibernate.ogm.util.impl.Log; import org.hibernate.ogm.util.impl.LoggerFactory; /** * Creates {@link QueryTranslator}s. Depending on whether the underlying datastore supports queries itself, a translator * executing native queries or a translator executing Lucene queries via Hibernate Search will be created. * * @author Gunnar Morling */ public class OgmQueryTranslatorFactory implements QueryTranslatorFactory { private static final Log LOG = LoggerFactory.make(); @Override public QueryTranslator createQueryTranslator(String queryIdentifier, String queryString, Map filters, SessionFactoryImplementor factory, EntityGraphQueryHint entityGraphQueryHint) { QueryParserService queryParser = factory.getServiceRegistry().getService( QueryParserService.class ); if ( queryParser != null ) { return new OgmQueryTranslator( factory, queryParser, queryIdentifier, queryString, filters ); } else { try { return new FullTextSearchQueryTranslator( factory, queryIdentifier, queryString, filters ); } catch (Exception e) { throw LOG.cannotLoadLuceneParserBackend( e ); } } } @Override public FilterTranslator createFilterTranslator(String queryIdentifier, String queryString, Map filters, SessionFactoryImplementor factory) { throw new UnsupportedOperationException( "Not implemented" ); } }