Commit b71cfe8c authored by Noel Alonso's avatar Noel Alonso
Browse files

Reestructura funciones de queries con scripts

parent 4bac1aff
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@ import es.redmic.es.common.queryFactory.geodata.InfrastructureQueryUtils;
import es.redmic.es.common.queryFactory.geodata.IsolinesQueryUtils;
import es.redmic.es.common.queryFactory.geodata.PlatformTrackingQueryUtils;
import es.redmic.es.common.queryFactory.geodata.TrackingQueryUtils;
import es.redmic.es.common.queryFactory.series.SeriesQueryUtils;
import es.redmic.models.es.common.DataPrefixType;

public enum QueryType {
@@ -79,8 +78,6 @@ public enum QueryType {
		utils.put(QueryType.INFRASTRUCTURE, InfrastructureQueryUtils.class);
		utils.put(QueryType.ISOLINES, IsolinesQueryUtils.class);
		utils.put(QueryType.AREA, AreaQueryUtils.class);
		utils.put(QueryType.TIMESERIES, SeriesQueryUtils.class);
		utils.put(QueryType.COLLECTINGSERIES, SeriesQueryUtils.class);
		utils.put(QueryType.ACTIVITY, ActivityQueryUtils.class);
		utils.put(QueryType.PROJECT, ProjectQueryUtils.class);
		utils.put(QueryType.PROGRAM, ProgramQueryUtils.class);
+1 −1
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ public abstract class CitationQueryUtils extends GeoDataQueryUtils {

		BoolQueryBuilder query = getOrInitializeBaseQuery(getGeoDataQuery(queryDTO, internalQuery, partialQuery));

		addMustTermIfExist(query, getZQuery(COLLECT_PATH, Z_PROPERTY, SEARCH_BY_Z_RANGE_SCRIPT, queryDTO.getZ()));
		addMustTermIfExist(query, getZQuery(COLLECT_PATH, Z_PROPERTY, queryDTO.getZ()));

		String startDateInCollect = COLLECT_PATH + "." + START_DATE_PROPERTY;
		String endDateInCollect = COLLECT_PATH + "." + END_DATE_PROPERTY;
+14 −9
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import org.elasticsearch.script.Script;
import org.elasticsearch.script.ScriptType;

import es.redmic.es.common.queryFactory.common.BaseQueryUtils;
import es.redmic.es.common.utils.ElasticSearchUtils;
import es.redmic.models.es.common.query.dto.GeoDataQueryDTO;
import es.redmic.models.es.common.query.dto.PrecisionQueryDTO;
import es.redmic.models.es.common.query.dto.RangeOperator;
@@ -45,8 +46,6 @@ public abstract class GeoDataQueryUtils extends BaseQueryUtils {
	public static final String ID_PROPERTY = "uuid";
	public static final String Z_PROPERTY = "z";
	public static final String VALUE_PROPERTY = "value";
	public static final String SEARCH_BY_Z_RANGE_SCRIPT = "search-by-z-range";
	public static final String SEARCH_NESTED_BY_Z_RANGE_SCRIPT = "search-nested-by-z-range";
	public static final String PARENT = "activity";
	public static final String QFLAG_QUERY_FIELD = "qFlags";
	public static final String VFLAG_QUERY_FIELD = "vFlags";
@@ -55,6 +54,9 @@ public abstract class GeoDataQueryUtils extends BaseQueryUtils {
	public static final String DATELIMIT_QUERY_FIELD = "dateLimits";
	public static final String PRECISION_QUERY_FIELD = "precision";

	public static final String Z_QUERY_SCRIPT_PATH = "/scripts/z-query.txt";
	public static final String Z_NESTED_QUERY_SCRIPT_PATH = "/scripts/z-nested-query.txt";

	public static BoolQueryBuilder getQuery(GeoDataQueryDTO queryDTO, QueryBuilder internalQuery,
			QueryBuilder partialQuery) {
		return getGeoDataQuery(queryDTO, internalQuery, partialQuery);
@@ -79,15 +81,17 @@ public abstract class GeoDataQueryUtils extends BaseQueryUtils {
				.to(precision.getMax());
	}

	protected static QueryBuilder getZQuery(String property, String scriptName, ZRangeDTO zRange) {
		return getZQuery(null, property, scriptName, zRange);
	protected static QueryBuilder getZQuery(String property, ZRangeDTO zRange) {
		return getZQuery(null, property, zRange);
	}

	protected static QueryBuilder getZQuery(String basePath, String property, String scriptName, ZRangeDTO zRange) {
	protected static QueryBuilder getZQuery(String basePath, String property, ZRangeDTO zRange) {

		if (zRange == null)
			return null;

		String script = ElasticSearchUtils.getScriptFile(Z_QUERY_SCRIPT_PATH);

		Map<String, Object> scriptParams = new HashMap<>();
		scriptParams.put("zMin", zRange.getMin());
		scriptParams.put("zMax", zRange.getMax());
@@ -95,17 +99,18 @@ public abstract class GeoDataQueryUtils extends BaseQueryUtils {

		BoolQueryBuilder query = new BoolQueryBuilder();
		query.must(QueryBuilders.existsQuery((basePath != null) ? (basePath + "." + property) : property));
		query.must(QueryBuilders.scriptQuery(new Script(ScriptType.STORED, null, scriptName, scriptParams)));
		query.must(QueryBuilders.scriptQuery(new Script(ScriptType.INLINE, Script.DEFAULT_SCRIPT_LANG, script, scriptParams)));

		return query;
	}

	protected static QueryBuilder getZNestedQuery(String nestedPath, String basePath, String property,
			String scriptName, ZRangeDTO zRange) {
	protected static QueryBuilder getZNestedQuery(String nestedPath, String basePath, String property, ZRangeDTO zRange) {

		if (zRange == null)
			return null;

		String script = ElasticSearchUtils.getScriptFile(Z_NESTED_QUERY_SCRIPT_PATH);

		Map<String, Object> scriptParams = new HashMap<>();
		scriptParams.put("zMin", zRange.getMin());
		scriptParams.put("zMax", zRange.getMax());
@@ -115,7 +120,7 @@ public abstract class GeoDataQueryUtils extends BaseQueryUtils {
		BoolQueryBuilder query = new BoolQueryBuilder();
		query.must(QueryBuilders.nestedQuery(nestedPath,
				QueryBuilders.existsQuery(nestedPath + "." + basePath + "." + property), ScoreMode.Avg));
		query.must(QueryBuilders.scriptQuery(new Script(ScriptType.STORED, null, scriptName, scriptParams)));
		query.must(QueryBuilders.scriptQuery(new Script(ScriptType.INLINE, Script.DEFAULT_SCRIPT_LANG, script, scriptParams)));

		return query;
	}
+2 −2
Original line number Diff line number Diff line
@@ -39,8 +39,8 @@ public abstract class GeoFixedSeriesQueryUtils extends GeoDataQueryUtils {
		BoolQueryBuilder query = getGeoDataQuery(queryDTO, internalQuery, partialQuery);
		BoolQueryBuilder queryOnChildren = getQueryOnChildren(queryDTO);

		addMustTermIfExist(query, getZNestedQuery(MEASUREMENT_PATH, DATA_DEFINITION_PROPERTY, Z_PROPERTY,
				SEARCH_NESTED_BY_Z_RANGE_SCRIPT, queryDTO.getZ()));
		// TODO: Implementar cuando sea necesario
		//addMustTermIfExist(query, getZNestedQuery(MEASUREMENT_PATH, DATA_DEFINITION_PROPERTY, Z_PROPERTY, queryDTO.getZ()));

		if (queryOnChildren.hasClauses())
			query.must(JoinQueryBuilders.hasChildQuery(childrenName, queryOnChildren, ScoreMode.Avg));
+1 −1
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ public abstract class InfrastructureQueryUtils extends GeoDataQueryUtils {
		BoolQueryBuilder query = getOrInitializeBaseQuery(getGeoDataQuery(queryDTO, internalQuery, partialQuery));
		BoolQueryBuilder queryOnChildren = getQueryOnChildren(queryDTO);

		addMustTermIfExist(query, getZQuery(SITE_PATH, Z_PROPERTY, SEARCH_BY_Z_RANGE_SCRIPT, queryDTO.getZ()));
		addMustTermIfExist(query, getZQuery(SITE_PATH, Z_PROPERTY, queryDTO.getZ()));
		addMustTermIfExist(query, getDateLimitsQuery(queryDTO.getDateLimits(), SITE_PATH + "." + DATE_PROPERTY));

		query.should(JoinQueryBuilders
Loading