Skip to content

Commit 35568e6

Browse files
authored
fix: search for equipment recreated after deletion (#583)
* fix: search for equipment recreated after deletion --------- Signed-off-by: TOURI ANIS <[email protected]>
1 parent e966fe9 commit 35568e6

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

src/main/java/org/gridsuite/study/server/elasticsearch/EquipmentInfosService.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -289,14 +289,14 @@ private String buildTombstonedEquipmentSearchQuery(UUID networkUuid, String vari
289289
return String.format(NETWORK_UUID + ":(%s) AND " + VARIANT_ID + ":(%s)", networkUuid, variantId);
290290
}
291291

292-
private BoolQuery buildSearchEquipmentsQuery(String userInput, EquipmentInfosService.FieldSelector fieldSelector, UUID networkUuid, String initialVariantId, String variantId, String equipmentType) {
292+
private BoolQuery buildSearchEquipmentsQuery(String userInput, EquipmentInfosService.FieldSelector fieldSelector, UUID networkUuid, String variantId, String equipmentType) {
293293
// If search requires boolean logic or advanced text analysis, then use queryStringQuery.
294294
// Otherwise, use wildcardQuery for simple text search.
295295
WildcardQuery equipmentSearchQuery = Queries.wildcardQuery(fieldSelector == EquipmentInfosService.FieldSelector.NAME ? EQUIPMENT_NAME : EQUIPMENT_ID, "*" + escapeLucene(userInput) + "*");
296296
TermQuery networkUuidSearchQuery = Queries.termQuery(NETWORK_UUID, networkUuid.toString());
297297
TermsQuery variantIdSearchQuery = variantId.equals(VariantManagerConstants.INITIAL_VARIANT_ID) ?
298-
new TermsQuery.Builder().field(VARIANT_ID).terms(new TermsQueryField.Builder().value(List.of(FieldValue.of(initialVariantId))).build()).build() :
299-
new TermsQuery.Builder().field(VARIANT_ID).terms(new TermsQueryField.Builder().value(List.of(FieldValue.of(initialVariantId), FieldValue.of(variantId))).build()).build();
298+
new TermsQuery.Builder().field(VARIANT_ID).terms(new TermsQueryField.Builder().value(List.of(FieldValue.of(VariantManagerConstants.INITIAL_VARIANT_ID))).build()).build() :
299+
new TermsQuery.Builder().field(VARIANT_ID).terms(new TermsQueryField.Builder().value(List.of(FieldValue.of(VariantManagerConstants.INITIAL_VARIANT_ID), FieldValue.of(variantId))).build()).build();
300300

301301
BoolQuery.Builder boolQueryBuilder = new BoolQuery.Builder()
302302
.filter(
@@ -341,7 +341,9 @@ private List<EquipmentInfos> cleanRemovedEquipments(UUID networkUuid, String var
341341

342342
return equipmentInfos
343343
.stream()
344-
.filter(ei -> !removedEquipmentIdsInVariant.contains(ei.getId()))
344+
.filter(ei -> !removedEquipmentIdsInVariant.contains(ei.getId()) ||
345+
// If the equipment has been recreated after the creation of a deletion hypothesis
346+
!ei.getVariantId().equals(VariantManagerConstants.INITIAL_VARIANT_ID))
345347
.collect(Collectors.toList());
346348
}
347349

@@ -354,7 +356,7 @@ public List<EquipmentInfos> searchEquipments(@lombok.NonNull UUID networkUuid, @
354356
String effectiveVariantId = variantId.isEmpty() ? VariantManagerConstants.INITIAL_VARIANT_ID : variantId;
355357

356358
BoolQuery query = buildSearchEquipmentsQuery(userInput, fieldSelector, networkUuid,
357-
VariantManagerConstants.INITIAL_VARIANT_ID, variantId, equipmentType);
359+
variantId, equipmentType);
358360
List<EquipmentInfos> equipmentInfos = searchEquipments(query);
359361
return variantId.equals(VariantManagerConstants.INITIAL_VARIANT_ID) ? equipmentInfos : cleanModifiedAndRemovedEquipments(networkUuid, effectiveVariantId, equipmentInfos);
360362
}

src/test/java/org/gridsuite/study/server/EquipmentInfosServiceTests.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,7 @@
3737
import org.springframework.data.elasticsearch.client.elc.Queries;
3838
import org.springframework.test.context.junit4.SpringRunner;
3939

40-
import java.util.HashSet;
41-
import java.util.List;
42-
import java.util.Set;
43-
import java.util.UUID;
40+
import java.util.*;
4441
import java.util.stream.Stream;
4542

4643
import static org.hamcrest.core.Is.is;
@@ -65,6 +62,8 @@ public class EquipmentInfosServiceTests {
6562
private static final String EQUIPMENT_NAME_FIELD = "equipmentName";
6663
private static final String NETWORK_UUID_FIELD = "networkUuid.keyword";
6764

65+
private static final String VARIANT_ID = "variant_1";
66+
6867
private static final UUID NETWORK_UUID = UUID.fromString("db240961-a7b6-4b76-bfe8-19749026c1cb");
6968
private static final UUID NETWORK_UUID_2 = UUID.fromString("8c73b846-5dbe-4ac8-a9c9-8422fda261bb");
7069

@@ -430,4 +429,17 @@ public void testSearchSpecialChars() {
430429
hits = new HashSet<>(equipmentInfosService.searchEquipments(query));
431430
pbsc.checkThat(hits.size(), is(1));
432431
}
432+
433+
@Test
434+
public void cleanRemovedEquipmentsInSerachTest() {
435+
UUID equipmentUuid = UUID.randomUUID();
436+
EquipmentInfos equipmentInfos = EquipmentInfos.builder().id(equipmentUuid.toString()).name("test").networkUuid(NETWORK_UUID).type("LOAD").variantId(VARIANT_ID).build();
437+
TombstonedEquipmentInfos tombstonedEquipmentInfos = TombstonedEquipmentInfos.builder().id(equipmentUuid.toString()).networkUuid(NETWORK_UUID).variantId(VARIANT_ID).build();
438+
// following the creation of a hypothesis for equipment deletion
439+
equipmentInfosService.addTombstonedEquipmentInfos(tombstonedEquipmentInfos);
440+
// following the creation of a hypothesis for previously deleted equipment creation
441+
equipmentInfosService.addEquipmentInfos(equipmentInfos);
442+
List<EquipmentInfos> result = equipmentInfosService.searchEquipments(NETWORK_UUID, VARIANT_ID, "test", EquipmentInfosService.FieldSelector.NAME, "LOAD");
443+
assertEquals(equipmentInfos, result.get(0));
444+
}
433445
}

0 commit comments

Comments
 (0)