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

Establece query interna para diferenciar tipo

De este modo dependiendo del controlador, puedes obtener solo categorías
o solo capas aún consultando sobre el mismo índice
parent 9788466e
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -52,11 +52,13 @@ public class CategoryESRepository extends RWDataESRepository<Category, SimpleQue

	// @formatter:off
	
	private final String ID_PROPERTY = "id";
	private final String ID_PROPERTY = "id",
			URL_SOURCE_PROPERTY = "urlSource";
	// @formatter:on

	public CategoryESRepository() {
		super(INDEX, TYPE);
		setInternalQuery(getCategoryQuery());
	}

	@Override
@@ -137,4 +139,9 @@ public class CategoryESRepository extends RWDataESRepository<Category, SimpleQue
		// TODO: mirar si tiene hijos
		return new EventApplicationResult(true);
	}

	private QueryBuilder getCategoryQuery() {

		return QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery(URL_SOURCE_PROPERTY));
	}
}
+17 −0
Original line number Diff line number Diff line
@@ -38,9 +38,12 @@ import org.springframework.stereotype.Repository;
import es.redmic.atlasview.model.layer.Layer;
import es.redmic.elasticsearchlib.data.repository.RWDataESRepository;
import es.redmic.exception.common.ExceptionType;
import es.redmic.exception.data.ItemNotFoundException;
import es.redmic.exception.elasticsearch.ESQueryException;
import es.redmic.models.es.common.dto.EventApplicationResult;
import es.redmic.models.es.common.query.dto.SimpleQueryDTO;
import es.redmic.models.es.data.common.model.DataHitWrapper;
import es.redmic.models.es.data.common.model.DataSearchWrapper;
import es.redmic.viewlib.data.repository.IDataRepository;

@Repository
@@ -59,6 +62,7 @@ public class LayerESRepository extends RWDataESRepository<Layer, SimpleQueryDTO>

	public LayerESRepository() {
		super(INDEX, TYPE);
		setInternalQuery(getLayerQuery());
	}

	@Override
@@ -157,4 +161,17 @@ public class LayerESRepository extends RWDataESRepository<Layer, SimpleQueryDTO>

		return new EventApplicationResult(true);
	}

	public DataHitWrapper<?> queryById(String id) {
		DataSearchWrapper<?> result = findBy(QueryBuilders.termQuery(ID_PROPERTY, id));

		if (result.getHits() == null || result.getHits().getTotal() == 0)
			throw new ItemNotFoundException("id", id + " en el servicio " + getIndex()[0] + " - " + getType());

		return result.getHits().getHits().get(0);
	}

	private QueryBuilder getLayerQuery() {
		return QueryBuilders.existsQuery(URL_SOURCE_PROPERTY);
	}
}