Loading src/main/java/es/redmic/api/privatedata/repository/ObservationSeriesESRepository.java +39 −13 Original line number Diff line number Diff line package es.redmic.api.privatedata.repository; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.lucene.search.join.ScoreMode; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.InnerHitBuilder; import org.elasticsearch.index.query.NestedQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.locationtech.jts.geom.Geometry; import org.springframework.beans.factory.annotation.Value; /*- * #%L * API Loading @@ -33,10 +20,19 @@ import org.springframework.beans.factory.annotation.Value; * #L% */ import java.util.Map; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.RangeQueryBuilder; import org.springframework.stereotype.Repository; import es.redmic.api.privatedata.model.ObservationSeries; import es.redmic.es.data.common.repository.RDataESRepository; import es.redmic.models.es.common.query.dto.DataQueryDTO; import es.redmic.models.es.common.query.dto.DateLimitsDTO; import es.redmic.models.es.common.query.dto.SimpleQueryDTO; import es.redmic.models.es.data.common.model.DataSearchWrapper; @Repository Loading @@ -45,6 +41,8 @@ public class ObservationSeriesESRepository extends RDataESRepository<Observation protected static String[] INDEX = { "private-observationseries" }; protected static String TYPE = "_doc"; public static final String DATETIME_FIELD = "date"; public ObservationSeriesESRepository() { super(INDEX, TYPE); } Loading @@ -54,6 +52,7 @@ public class ObservationSeriesESRepository extends RDataESRepository<Observation return MAPPING_BASE_PATH + "private/geodata" + MAPPING_FILE_EXTENSION; } public DataSearchWrapper<?> findByDataDefinition(Long dataDefinitionId) { return findBy(QueryBuilders.termQuery("dataDefinition", dataDefinitionId)); Loading Loading @@ -93,4 +92,31 @@ public class ObservationSeriesESRepository extends RDataESRepository<Observation return new String[] { "observation.animal.name", "observation.device.name", "observation.taxonomy.scientificName" }; } // TODO: ELiminar cuando se extienda de RSeriesRepository @Override protected <TQueryDTO extends SimpleQueryDTO> BoolQueryBuilder getQueryBuilder(TQueryDTO queryDTO, QueryBuilder serviceQuery) { BoolQueryBuilder query = super.getQueryBuilder(queryDTO, serviceQuery); query.must(getDateLimitsQuery(((DataQueryDTO)queryDTO).getDateLimits(), DATETIME_FIELD)); return query; } protected static QueryBuilder getDateLimitsQuery(DateLimitsDTO dateLimitsDTO, String datePath) { if (dateLimitsDTO == null) return null; RangeQueryBuilder range = QueryBuilders.rangeQuery(datePath); if (dateLimitsDTO.getStartDate() != null) range.gte(dateLimitsDTO.getStartDate()); if (dateLimitsDTO.getEndDate() != null) range.lte(dateLimitsDTO.getEndDate()); return range; } } Loading
src/main/java/es/redmic/api/privatedata/repository/ObservationSeriesESRepository.java +39 −13 Original line number Diff line number Diff line package es.redmic.api.privatedata.repository; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.lucene.search.join.ScoreMode; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.InnerHitBuilder; import org.elasticsearch.index.query.NestedQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.locationtech.jts.geom.Geometry; import org.springframework.beans.factory.annotation.Value; /*- * #%L * API Loading @@ -33,10 +20,19 @@ import org.springframework.beans.factory.annotation.Value; * #L% */ import java.util.Map; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.RangeQueryBuilder; import org.springframework.stereotype.Repository; import es.redmic.api.privatedata.model.ObservationSeries; import es.redmic.es.data.common.repository.RDataESRepository; import es.redmic.models.es.common.query.dto.DataQueryDTO; import es.redmic.models.es.common.query.dto.DateLimitsDTO; import es.redmic.models.es.common.query.dto.SimpleQueryDTO; import es.redmic.models.es.data.common.model.DataSearchWrapper; @Repository Loading @@ -45,6 +41,8 @@ public class ObservationSeriesESRepository extends RDataESRepository<Observation protected static String[] INDEX = { "private-observationseries" }; protected static String TYPE = "_doc"; public static final String DATETIME_FIELD = "date"; public ObservationSeriesESRepository() { super(INDEX, TYPE); } Loading @@ -54,6 +52,7 @@ public class ObservationSeriesESRepository extends RDataESRepository<Observation return MAPPING_BASE_PATH + "private/geodata" + MAPPING_FILE_EXTENSION; } public DataSearchWrapper<?> findByDataDefinition(Long dataDefinitionId) { return findBy(QueryBuilders.termQuery("dataDefinition", dataDefinitionId)); Loading Loading @@ -93,4 +92,31 @@ public class ObservationSeriesESRepository extends RDataESRepository<Observation return new String[] { "observation.animal.name", "observation.device.name", "observation.taxonomy.scientificName" }; } // TODO: ELiminar cuando se extienda de RSeriesRepository @Override protected <TQueryDTO extends SimpleQueryDTO> BoolQueryBuilder getQueryBuilder(TQueryDTO queryDTO, QueryBuilder serviceQuery) { BoolQueryBuilder query = super.getQueryBuilder(queryDTO, serviceQuery); query.must(getDateLimitsQuery(((DataQueryDTO)queryDTO).getDateLimits(), DATETIME_FIELD)); return query; } protected static QueryBuilder getDateLimitsQuery(DateLimitsDTO dateLimitsDTO, String datePath) { if (dateLimitsDTO == null) return null; RangeQueryBuilder range = QueryBuilders.rangeQuery(datePath); if (dateLimitsDTO.getStartDate() != null) range.gte(dateLimitsDTO.getStartDate()); if (dateLimitsDTO.getEndDate() != null) range.lte(dateLimitsDTO.getEndDate()); return range; } }