/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* 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.
*/
package com.liferay.portal.search.elasticsearch.internal.filter;
import com.liferay.portal.kernel.search.SearchContext;
import com.liferay.portal.kernel.search.filter.BooleanFilter;
import com.liferay.portal.kernel.search.filter.DateRangeTermFilter;
import com.liferay.portal.kernel.search.filter.ExistsFilter;
import com.liferay.portal.kernel.search.filter.Filter;
import com.liferay.portal.kernel.search.filter.FilterTranslator;
import com.liferay.portal.kernel.search.filter.FilterVisitor;
import com.liferay.portal.kernel.search.filter.GeoBoundingBoxFilter;
import com.liferay.portal.kernel.search.filter.GeoDistanceFilter;
import com.liferay.portal.kernel.search.filter.GeoDistanceRangeFilter;
import com.liferay.portal.kernel.search.filter.GeoPolygonFilter;
import com.liferay.portal.kernel.search.filter.MissingFilter;
import com.liferay.portal.kernel.search.filter.PrefixFilter;
import com.liferay.portal.kernel.search.filter.QueryFilter;
import com.liferay.portal.kernel.search.filter.RangeTermFilter;
import com.liferay.portal.kernel.search.filter.TermFilter;
import com.liferay.portal.kernel.search.filter.TermsFilter;
import com.liferay.portal.search.elasticsearch.filter.BooleanFilterTranslator;
import com.liferay.portal.search.elasticsearch.filter.DateRangeTermFilterTranslator;
import com.liferay.portal.search.elasticsearch.filter.ExistsFilterTranslator;
import com.liferay.portal.search.elasticsearch.filter.GeoBoundingBoxFilterTranslator;
import com.liferay.portal.search.elasticsearch.filter.GeoDistanceFilterTranslator;
import com.liferay.portal.search.elasticsearch.filter.GeoDistanceRangeFilterTranslator;
import com.liferay.portal.search.elasticsearch.filter.GeoPolygonFilterTranslator;
import com.liferay.portal.search.elasticsearch.filter.MissingFilterTranslator;
import com.liferay.portal.search.elasticsearch.filter.PrefixFilterTranslator;
import com.liferay.portal.search.elasticsearch.filter.QueryFilterTranslator;
import com.liferay.portal.search.elasticsearch.filter.RangeTermFilterTranslator;
import com.liferay.portal.search.elasticsearch.filter.TermFilterTranslator;
import com.liferay.portal.search.elasticsearch.filter.TermsFilterTranslator;
import org.elasticsearch.index.query.QueryBuilder;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
/**
* @author Michael C. Han
*/
@Component(
immediate = true, property = {"search.engine.impl=Elasticsearch"},
service = FilterTranslator.class
)
public class ElasticsearchFilterTranslator
implements FilterTranslator<QueryBuilder>, FilterVisitor<QueryBuilder> {
@Override
public QueryBuilder translate(Filter filter, SearchContext searchContext) {
return filter.accept(this);
}
@Override
public QueryBuilder visit(BooleanFilter booleanFilter) {
return booleanFilterTranslator.translate(booleanFilter, this);
}
@Override
public QueryBuilder visit(DateRangeTermFilter dateRangeTermFilter) {
return dateRangeTermFilterTranslator.translate(dateRangeTermFilter);
}
@Override
public QueryBuilder visit(ExistsFilter existsFilter) {
return existsFilterTranslator.translate(existsFilter);
}
@Override
public QueryBuilder visit(GeoBoundingBoxFilter geoBoundingBoxFilter) {
return geoBoundingBoxFilterTranslator.translate(geoBoundingBoxFilter);
}
@Override
public QueryBuilder visit(GeoDistanceFilter geoDistanceFilter) {
return geoDistanceFilterTranslator.translate(geoDistanceFilter);
}
@Override
public QueryBuilder visit(GeoDistanceRangeFilter geoDistanceRangeFilter) {
return geoDistanceRangeFilterTranslator.translate(
geoDistanceRangeFilter);
}
@Override
public QueryBuilder visit(GeoPolygonFilter geoPolygonFilter) {
return geoPolygonFilterTranslator.translate(geoPolygonFilter);
}
@Override
public QueryBuilder visit(MissingFilter missingFilter) {
return missingFilterTranslator.translate(missingFilter);
}
@Override
public QueryBuilder visit(PrefixFilter prefixFilter) {
return prefixFilterTranslator.translate(prefixFilter);
}
@Override
public QueryBuilder visit(QueryFilter queryFilter) {
return queryFilterTranslator.translate(queryFilter);
}
@Override
public QueryBuilder visit(RangeTermFilter rangeTermFilter) {
return rangeTermFilterTranslator.translate(rangeTermFilter);
}
@Override
public QueryBuilder visit(TermFilter termFilter) {
return termFilterTranslator.translate(termFilter);
}
@Override
public QueryBuilder visit(TermsFilter termsFilter) {
return termsFilterTranslator.translate(termsFilter);
}
@Reference
protected BooleanFilterTranslator booleanFilterTranslator;
@Reference
protected DateRangeTermFilterTranslator dateRangeTermFilterTranslator;
@Reference
protected ExistsFilterTranslator existsFilterTranslator;
@Reference
protected GeoBoundingBoxFilterTranslator geoBoundingBoxFilterTranslator;
@Reference
protected GeoDistanceFilterTranslator geoDistanceFilterTranslator;
@Reference
protected GeoDistanceRangeFilterTranslator geoDistanceRangeFilterTranslator;
@Reference
protected GeoPolygonFilterTranslator geoPolygonFilterTranslator;
@Reference
protected MissingFilterTranslator missingFilterTranslator;
@Reference
protected PrefixFilterTranslator prefixFilterTranslator;
@Reference
protected QueryFilterTranslator queryFilterTranslator;
@Reference
protected RangeTermFilterTranslator rangeTermFilterTranslator;
@Reference
protected TermFilterTranslator termFilterTranslator;
@Reference
protected TermsFilterTranslator termsFilterTranslator;
}