Commit 3be09846 authored by Noel Alonso's avatar Noel Alonso
Browse files

Permite guardar dos capas con el mismo nombre

La única restricción es que tengan estilos diferentes
parent 6ad4beb7
Loading
Loading
Loading
Loading
+13 −8
Original line number Diff line number Diff line
@@ -72,7 +72,8 @@ public class LayerESRepository extends RWDataESRepository<Layer, GeoDataQueryDTO

	private final String ID_PROPERTY = "id",
			NAME_PROPERTY = "name",
			URL_SOURCE_PROPERTY = "urlSource";
			URL_SOURCE_PROPERTY = "urlSource",
			STYLES_PROPERTY = "styles";
	// @formatter:on

	@Autowired
@@ -109,17 +110,18 @@ public class LayerESRepository extends RWDataESRepository<Layer, GeoDataQueryDTO
	protected EventApplicationResult checkInsertConstraintsFulfilled(Layer modelToIndex) {

		QueryBuilder idTerm = QueryBuilders.termQuery(ID_PROPERTY, modelToIndex.getId()),
				nameAndUrlSourceTerm = QueryBuilders.boolQuery()
				nameUrlSourceAndStylesTerm = QueryBuilders.boolQuery()
						.must(QueryBuilders.termQuery(NAME_PROPERTY, modelToIndex.getName()))
						.must(QueryBuilders.termQuery(URL_SOURCE_PROPERTY, modelToIndex.getUrlSource()));
						.must(QueryBuilders.termQuery(URL_SOURCE_PROPERTY, modelToIndex.getUrlSource()))
						.must(QueryBuilders.termQuery(STYLES_PROPERTY, modelToIndex.getStyles()));

		MultiSearchRequest request = new MultiSearchRequest();

		SearchSourceBuilder requestBuilderId = new SearchSourceBuilder().query(idTerm).size(1),
				requestBuilderNameAndUrlSource = new SearchSourceBuilder().query(nameAndUrlSourceTerm).size(1);
				requestBuilderNameUrlSourceAndStyles = new SearchSourceBuilder().query(nameUrlSourceAndStylesTerm).size(1);

		request.add(new SearchRequest().indices(getIndex()).source(requestBuilderId))
				.add(new SearchRequest().indices(getIndex()).source(requestBuilderNameAndUrlSource));
				.add(new SearchRequest().indices(getIndex()).source(requestBuilderNameUrlSourceAndStyles));

		MultiSearchResponse sr;
		try {
@@ -140,6 +142,7 @@ public class LayerESRepository extends RWDataESRepository<Layer, GeoDataQueryDTO
		if (responses != null && responses[1].getResponse().getHits().getTotalHits() > 0) {
			arguments.put(NAME_PROPERTY, modelToIndex.getName());
			arguments.put(URL_SOURCE_PROPERTY, modelToIndex.getUrlSource());
			arguments.put(STYLES_PROPERTY, modelToIndex.getStyles());
		}

		if (arguments.size() > 0) {
@@ -155,15 +158,16 @@ public class LayerESRepository extends RWDataESRepository<Layer, GeoDataQueryDTO
	protected EventApplicationResult checkUpdateConstraintsFulfilled(Layer modelToIndex) {
		// @formatter:off

		BoolQueryBuilder nameAndUrlSourceTerm = QueryBuilders.boolQuery()
		BoolQueryBuilder nameUrlSourceAndStylesTerm = QueryBuilders.boolQuery()
				.must(QueryBuilders.boolQuery()
						.must(QueryBuilders.termQuery(NAME_PROPERTY, modelToIndex.getName()))
						.must(QueryBuilders.termQuery(URL_SOURCE_PROPERTY, modelToIndex.getUrlSource())))
						.must(QueryBuilders.termQuery(URL_SOURCE_PROPERTY, modelToIndex.getUrlSource()))
						.must(QueryBuilders.termQuery(STYLES_PROPERTY, modelToIndex.getStyles())))
				.mustNot(QueryBuilders.termQuery(ID_PROPERTY, modelToIndex.getId()));

		MultiSearchRequest request = new MultiSearchRequest();

		SearchSourceBuilder requestBuilder = new SearchSourceBuilder().query(nameAndUrlSourceTerm).size(1);
		SearchSourceBuilder requestBuilder = new SearchSourceBuilder().query(nameUrlSourceAndStylesTerm).size(1);

		request.add(new SearchRequest().indices(getIndex()).source(requestBuilder));

@@ -185,6 +189,7 @@ public class LayerESRepository extends RWDataESRepository<Layer, GeoDataQueryDTO
			arguments.put(ID_PROPERTY, modelToIndex.getId().toString());
			arguments.put(NAME_PROPERTY, modelToIndex.getName());
			arguments.put(URL_SOURCE_PROPERTY, modelToIndex.getUrlSource());
			arguments.put(STYLES_PROPERTY, modelToIndex.getStyles());
		}

		if (arguments.size() > 0) {
+3 −0
Original line number Diff line number Diff line
@@ -465,6 +465,9 @@
				},
				"urlSource": {
					"type": "keyword"
				},
				"styles": {
					"type": "keyword"
				}
			}
		}
+6 −4
Original line number Diff line number Diff line
@@ -275,11 +275,12 @@ public class LayerEventHandlerTest extends DocumentationViewBaseTest {
		Map<String, String> arguments = createLayerFailedEvent.getArguments();
		assertNotNull(arguments);

		assertEquals(3, arguments.size());
		assertEquals(4, arguments.size());

		assertNotNull(arguments.get("id"));
		assertNotNull(arguments.get("name"));
		assertNotNull(arguments.get("urlSource"));
		assertNotNull(arguments.get("styles"));
	}

	@Test
@@ -352,11 +353,12 @@ public class LayerEventHandlerTest extends DocumentationViewBaseTest {
		Map<String, String> arguments = createLayerFailedEvent.getArguments();
		assertNotNull(arguments);

		assertEquals(arguments.size(), 3);
		assertEquals(arguments.size(), 4);

		assertNotNull(arguments.get("id"));
		assertNotNull(arguments.get("name"));
		assertNotNull(arguments.get("urlSource"));
		assertNotNull(arguments.get("styles"));
	}

	@Test