Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -224,14 +224,14 @@ public ResponseEntity<UUID> createNetworkCompositeModification(@RequestBody List
return ResponseEntity.ok().body(networkModificationService.createNetworkCompositeModification(modificationUuids));
}

@GetMapping(value = "/network-composite-modification/{uuid}/network-modifications", produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Get the list of the network modifications inside a composite modification")
@ApiResponse(responseCode = "200", description = "List of the modifications inside the composite modification")
public ResponseEntity<List<ModificationInfos>> getNetworkModificationsFromComposite(@PathVariable("uuid") UUID compositeModificationUuid,
@GetMapping(value = "/network-composite-modifications/network-modifications", produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Get the list of all the network modifications inside a list of composite modifications")
@ApiResponse(responseCode = "200", description = "List of modifications inside the composite modifications")
public ResponseEntity<List<ModificationInfos>> getNetworkModificationsFromComposite(@Parameter(description = "Composite modifications uuids list") @RequestParam("uuids") List<UUID> compositeModificationUuids,
@Parameter(description = "Only metadata") @RequestParam(name = "onlyMetadata", required = false, defaultValue = "true") Boolean onlyMetadata) {
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_JSON)
.body(networkModificationService.getNetworkModificationsFromComposite(compositeModificationUuid, onlyMetadata)
.body(networkModificationService.getNetworkModificationsFromComposite(compositeModificationUuids, onlyMetadata)
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ public interface ModificationRepository extends JpaRepository<ModificationEntity
@Query(value = "SELECT cast(modification_id AS VARCHAR) FROM composite_modification_sub_modifications WHERE id = :uuid ORDER BY modifications_order", nativeQuery = true)
List<UUID> findModificationIdsByCompositeModificationId(UUID uuid);

@Query(value = "SELECT cast(modification_id AS VARCHAR) FROM composite_modification_sub_modifications WHERE id IN (?1) ORDER BY modifications_order", nativeQuery = true)
List<UUID> findModificationIdsByCompositeModificationIdIn(List<UUID> uuids);

Integer countByGroupIdAndStashed(UUID groupId, boolean stashed);

@Query(value = "SELECT cast(operational_limits_groups_id AS VARCHAR) FROM line_modification_operational_limits_groups WHERE branch_id IN ?1", nativeQuery = true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -514,19 +514,19 @@ private List<ModificationInfos> getModificationsInfosNonTransactional(List<UUID>
}

/**
* returns the data from all the network modifications contained in the composite modification sent as parameter
* returns the data from all the network modifications contained in the composite modifications sent as parameter
* but only returns the basic data common to all the modifications form the ModificationInfos, not from the extended classes
*/
@Transactional(readOnly = true)
public List<ModificationInfos> getBasicNetworkModificationsFromComposite(@NonNull UUID uuid) {
List<UUID> networkModificationsUuids = modificationRepository.findModificationIdsByCompositeModificationId(uuid);
public List<ModificationInfos> getBasicNetworkModificationsFromComposite(@NonNull List<UUID> uuids) {
List<UUID> networkModificationsUuids = modificationRepository.findModificationIdsByCompositeModificationIdIn(uuids);
Map<UUID, ModificationEntity> entitiesById = modificationRepository.findBaseDataByIdIn(networkModificationsUuids).stream()
.collect(Collectors.toMap(ModificationEntity::getId, Function.identity()));
return networkModificationsUuids.stream()
.map(entitiesById::get)
.filter(Objects::nonNull)
.map(this::toModificationsInfosOptimizedForTabular)
.toList();
.collect(Collectors.toMap(ModificationEntity::getId, Function.identity()));
return new ArrayList<>(networkModificationsUuids.stream()
.map(entitiesById::get)
.filter(Objects::nonNull)
.map(this::toModificationsInfosOptimizedForTabular)
.toList());
}

@Transactional(readOnly = true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,11 +129,11 @@ public void verifyModifications(UUID groupUuid, Set<UUID> modificationUuids) {
}

@Transactional(readOnly = true)
public List<ModificationInfos> getNetworkModificationsFromComposite(UUID compositeModificationUuid, boolean onlyMetadata) {
public List<ModificationInfos> getNetworkModificationsFromComposite(List<UUID> compositeModificationUuids, boolean onlyMetadata) {
if (onlyMetadata) {
return networkModificationRepository.getBasicNetworkModificationsFromComposite(compositeModificationUuid);
return networkModificationRepository.getBasicNetworkModificationsFromComposite(compositeModificationUuids);
} else {
return networkModificationRepository.getCompositeModificationsInfos(List.of(compositeModificationUuid));
return networkModificationRepository.getCompositeModificationsInfos(compositeModificationUuids);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ class ModificationControllerTest {

private static final String URI_NETWORK_MODIF_BASE = "/v1/network-modifications";
private static final String URI_COMPOSITE_NETWORK_MODIF_BASE = "/v1/network-composite-modifications";
private static final String URI_GET_COMPOSITE_NETWORK_MODIF_CONTENT = "/v1/network-composite-modification/";
private static final String URI_GET_COMPOSITE_NETWORK_MODIF_CONTENT = "/v1/network-composite-modifications/";
private static final String URI_LINE_CATALOG = URI_NETWORK_MODIF_BASE + "/catalog/line_types";
private static final String LINE_TYPES_CATALOG_JSON_FILE_1 = "/lines-catalog.json.gz";
private static final String LINE_TYPES_CATALOG_JSON_FILE_2 = "/line_types_catalog_2.json.gz";
Expand Down Expand Up @@ -805,11 +805,11 @@ void testNetworkCompositeModification() throws Exception {
UUID compositeModificationUuid = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { });
assertThat(modificationRepository.getModificationInfo(compositeModificationUuid)).recursivelyEquals(compositeModificationInfos);

// get the modification infos (metadata only)
List<ModificationInfos> modificationInfosList = modificationRepository.getModifications(TEST_GROUP_ID, true, true);
assertEquals(modificationsNumber, modificationInfosList.size());

// get the composite modification (metadata only)
mvcResult = mockMvc.perform(get(URI_GET_COMPOSITE_NETWORK_MODIF_CONTENT + compositeModificationUuid + "/network-modifications"))
mvcResult = mockMvc.perform(get(URI_GET_COMPOSITE_NETWORK_MODIF_CONTENT + "/network-modifications?uuids={id}", compositeModificationUuid))
.andExpect(status().isOk()).andReturn();
List<ModificationInfos> compositeModificationContent = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { });
assertEquals(modificationsNumber, compositeModificationContent.size());
Expand All @@ -823,8 +823,26 @@ void testNetworkCompositeModification() throws Exception {
assertNull(((EquipmentAttributeModificationInfos) compositeModificationContent.get(0)).getEquipmentType());
assertNull(((EquipmentAttributeModificationInfos) compositeModificationContent.get(0)).getEquipmentId());

// create another composite modification
List<ModificationInfos> otherModificationList = createSomeSwitchModifications(TEST_GROUP2_ID, modificationsNumber);
List<UUID> otherModificationUuids = otherModificationList.stream().map(ModificationInfos::getUuid).toList();
mvcResult = mockMvc.perform(post(URI_COMPOSITE_NETWORK_MODIF_BASE)
.content(mapper.writeValueAsString(otherModificationUuids)).contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()).andReturn();
ModificationInfos otherCompositeModificationInfos = CompositeModificationInfos.builder()
.modifications(otherModificationList)
.build();
UUID otherCompositeModificationUuid = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { });
assertThat(modificationRepository.getModificationInfo(otherCompositeModificationUuid)).recursivelyEquals(otherCompositeModificationInfos);

// get both composite modifications
mvcResult = mockMvc.perform(get(URI_GET_COMPOSITE_NETWORK_MODIF_CONTENT + "/network-modifications?uuids=" + compositeModificationUuid + "&uuids=" + otherCompositeModificationUuid))
.andExpect(status().isOk()).andReturn();
List<ModificationInfos> compositeModificationsContent = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { });
assertEquals(modificationsNumber * 2, compositeModificationsContent.size());

// get the composite modification (complete data)
mvcResult = mockMvc.perform(get(URI_GET_COMPOSITE_NETWORK_MODIF_CONTENT + compositeModificationUuid + "/network-modifications?onlyMetadata=false"))
mvcResult = mockMvc.perform(get(URI_GET_COMPOSITE_NETWORK_MODIF_CONTENT + "/network-modifications?uuids={id}&onlyMetadata=false", compositeModificationUuid))
.andExpect(status().isOk()).andReturn();
compositeModificationContent = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { });
assertEquals("open", ((EquipmentAttributeModificationInfos) compositeModificationContent.get(0)).getEquipmentAttributeName());
Expand Down Expand Up @@ -870,7 +888,7 @@ void testNetworkCompositeModificationOld() throws Exception {
assertEquals(modificationsNumber, modificationRepository.getModifications(TEST_GROUP_ID, true, true).size());

// get the composite modification (metadata only)
mvcResult = mockMvc.perform(get(URI_GET_COMPOSITE_NETWORK_MODIF_CONTENT + compositeModificationUuid + "/network-modifications"))
mvcResult = mockMvc.perform(get(URI_GET_COMPOSITE_NETWORK_MODIF_CONTENT + "/network-modifications?uuids={id}", compositeModificationUuid))
.andExpect(status().isOk()).andReturn();
List<ModificationInfos> compositeModificationContent = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { });
assertEquals(modificationsNumber, compositeModificationContent.size());
Expand All @@ -882,7 +900,7 @@ void testNetworkCompositeModificationOld() throws Exception {
assertNull(((EquipmentAttributeModificationInfos) compositeModificationContent.get(0)).getEquipmentId());

// get the composite modification (complete data)
mvcResult = mockMvc.perform(get(URI_GET_COMPOSITE_NETWORK_MODIF_CONTENT + compositeModificationUuid + "/network-modifications?onlyMetadata=false"))
mvcResult = mockMvc.perform(get(URI_GET_COMPOSITE_NETWORK_MODIF_CONTENT + "/network-modifications?uuids={id}&onlyMetadata=false", compositeModificationUuid))
.andExpect(status().isOk()).andReturn();
compositeModificationContent = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { });
assertEquals("open", ((EquipmentAttributeModificationInfos) compositeModificationContent.get(0)).getEquipmentAttributeName());
Expand Down Expand Up @@ -1793,7 +1811,7 @@ void testUpdateNetworkCompositeModification() throws Exception {
.andExpect(status().isOk());

// Get the composite modification content and verify it has been updated
mvcResult = mockMvc.perform(get(URI_GET_COMPOSITE_NETWORK_MODIF_CONTENT + compositeModificationUuid + "/network-modifications?onlyMetadata=false"))
mvcResult = mockMvc.perform(get(URI_GET_COMPOSITE_NETWORK_MODIF_CONTENT + "/network-modifications?uuids={id}&onlyMetadata=false", compositeModificationUuid))
.andExpect(status().isOk()).andReturn();
List<ModificationInfos> updatedCompositeContent = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { });

Expand Down Expand Up @@ -1828,7 +1846,7 @@ void testUpdateNetworkCompositeModificationWithEmptyList() throws Exception {
.andExpect(status().isOk());

// Verify that the composite now contains no modifications
mvcResult = mockMvc.perform(get(URI_GET_COMPOSITE_NETWORK_MODIF_CONTENT + compositeModificationUuid + "/network-modifications?onlyMetadata=false"))
mvcResult = mockMvc.perform(get(URI_GET_COMPOSITE_NETWORK_MODIF_CONTENT + "/network-modifications?uuids={id}&onlyMetadata=false", compositeModificationUuid))
.andExpect(status().isOk()).andReturn();
List<ModificationInfos> updatedCompositeContent = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { });

Expand Down