Commit 544625f1 authored by Noel Alonso's avatar Noel Alonso
Browse files

Cambia wrapper de datos al nuevo tipo

parent d40b7031
Loading
Loading
Loading
Loading
+18 −44
Original line number Diff line number Diff line
@@ -2,23 +2,19 @@ package es.redmic.elasticsearchlib.geodata.repository;

import java.util.List;

import org.elasticsearch.action.get.MultiGetResponse;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;

import com.fasterxml.jackson.databind.JavaType;
import com.vividsolutions.jts.geom.Geometry;

import es.redmic.elasticsearchlib.common.query.DataQueryUtils;
import es.redmic.elasticsearchlib.common.repository.RBaseESRepository;
import es.redmic.exception.data.ItemNotFoundException;
import es.redmic.models.es.common.query.dto.MgetDTO;
import es.redmic.models.es.common.query.dto.SimpleQueryDTO;
import es.redmic.models.es.geojson.common.model.Feature;
import es.redmic.models.es.geojson.common.model.GeoHitWrapper;
import es.redmic.models.es.geojson.common.model.GeoHitsWrapper;
import es.redmic.models.es.geojson.common.model.GeoSearchWrapper;
import es.redmic.models.es.geojson.properties.model.GeoDataProperties;
import es.redmic.models.es.geojson.base.Feature;
import es.redmic.models.es.geojson.wrapper.GeoHitWrapper;
import es.redmic.models.es.geojson.wrapper.GeoHitsWrapper;
import es.redmic.models.es.geojson.wrapper.GeoSearchWrapper;

public abstract class RGeoDataESRepository<TModel extends Feature<?, ?>, TQueryDTO extends SimpleQueryDTO>
		extends RBaseESRepository<TModel, TQueryDTO> {
@@ -27,55 +23,34 @@ public abstract class RGeoDataESRepository<TModel extends Feature<?, ?>, TQueryD
		super(index, type);
	}

	/*
	 * Sobrescribe método base para añadir query de control de accesso a datos
	 */
	public GeoHitWrapper<?> findById(String id) {

	public GeoHitWrapper<?, ?> findById(String id) {

		BoolQueryBuilder query = DataQueryUtils.getItemsQuery(id);

		GeoSearchWrapper<?, ?> result = findBy(query);

		if (result.getHits() == null || result.getHits().getHits() == null || result.getHits().getHits().size() != 1)
			throw new ItemNotFoundException("id", id);

		return result.getHits().getHits().get(0);
		return getResponseToWrapper(getRequest(id), getSourceType(GeoHitWrapper.class));
	}

	public GeoHitsWrapper<?, ?> mget(MgetDTO dto) {

		List<String> ids = dto.getIds();

		GeoSearchWrapper<?, ?> result = findBy(DataQueryUtils.getItemsQuery(ids), dto.getFields());
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public GeoHitsWrapper<?> mget(MgetDTO dto) {

		if (result.getHits() == null || result.getHits().getHits() == null)
			throw new ItemNotFoundException("ids", dto.getIds().toString());

		if (result.getHits().getHits().size() != ids.size()) {

			for (GeoHitWrapper<?, ?> hit : result.getHits().getHits()) {
				ids.remove(hit.get_id());
			}

			throw new ItemNotFoundException("ids", ids.toString());
		}
		MultiGetResponse result = multigetRequest(dto);

		return result.getHits();
		List<GeoHitWrapper<?>> hits = mgetResponseToWrapper(result, getSourceType(GeoHitWrapper.class));
		GeoHitsWrapper data = new GeoHitsWrapper(hits);
		data.setTotal(hits.size());
		return data;
	}

	protected GeoSearchWrapper<?, ?> findBy(QueryBuilder queryBuilder) {
	protected GeoSearchWrapper<?> findBy(QueryBuilder queryBuilder) {

		return findBy(queryBuilder, null);
	}

	protected GeoSearchWrapper<?, ?> findBy(QueryBuilder queryBuilder, List<String> returnFields) {
	protected GeoSearchWrapper<?> findBy(QueryBuilder queryBuilder, List<String> returnFields) {

		return searchResponseToWrapper(searchRequest(queryBuilder, returnFields),
				getSourceType(GeoSearchWrapper.class));
	}

	public GeoSearchWrapper<?, ?> find(TQueryDTO queryDTO) {
	public GeoSearchWrapper<?> find(TQueryDTO queryDTO) {

		SearchResponse result = super.searchRequest(queryDTO);

@@ -102,7 +77,6 @@ public abstract class RGeoDataESRepository<TModel extends Feature<?, ?>, TQueryD

	@Override
	protected JavaType getSourceType(Class<?> wrapperClass) {
		return objectMapper.getTypeFactory().constructParametricType(wrapperClass, GeoDataProperties.class,
				Geometry.class);
		return objectMapper.getTypeFactory().constructParametricType(wrapperClass, typeOfTModel);
	}
}