Skip to content

Commit

Permalink
Refactor duplication endpoint (#85)
Browse files Browse the repository at this point in the history
* Refactor duplication endpoint
---------
Signed-off-by: TOURI ANIS <[email protected]>
  • Loading branch information
anistouri authored May 2, 2024
1 parent 3cbc513 commit f3b2c4e
Show file tree
Hide file tree
Showing 10 changed files with 172 additions and 162 deletions.
106 changes: 43 additions & 63 deletions src/main/java/org/gridsuite/explore/server/ExploreController.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public class ExploreController {
// /!\ This query parameter is used by the gateway to control access
private static final String QUERY_PARAM_PARENT_DIRECTORY_ID = "parentDirectoryUuid";

private static final String QUERY_PARAM_PARAMETERS_TYPE = "type";
private static final String QUERY_PARAM_TYPE = "type";

private final ExploreService exploreService;
private final DirectoryService directoryService;
Expand All @@ -61,15 +61,13 @@ public ResponseEntity<Void> createStudy(@PathVariable("studyName") String studyN
return ResponseEntity.ok().build();
}

@PostMapping(value = "/explore/studies")
@PostMapping(value = "/explore/studies", params = "duplicateFrom")
@Operation(summary = "Duplicate a study")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Study creation request delegated to study server")})
public ResponseEntity<Void> duplicateStudy(@RequestParam("duplicateFrom") UUID sourceStudyUuid,
@RequestParam("studyName") String studyName,
@RequestParam("description") String description,
@RequestParam(QUERY_PARAM_PARENT_DIRECTORY_ID) UUID parentDirectoryUuid,
public ResponseEntity<Void> duplicateStudy(@RequestParam("duplicateFrom") UUID studyId,
@RequestParam(name = QUERY_PARAM_PARENT_DIRECTORY_ID, required = false) UUID targetDirectoryId,
@RequestHeader("userId") String userId) {
exploreService.duplicateStudy(sourceStudyUuid, studyName, description, userId, parentDirectoryUuid);
exploreService.duplicateStudy(studyId, targetDirectoryId, userId);
return ResponseEntity.ok().build();
}

Expand All @@ -85,15 +83,14 @@ public ResponseEntity<Void> createCase(@PathVariable("caseName") String caseName
return ResponseEntity.ok().build();
}

@PostMapping(value = "/explore/cases")
@PostMapping(value = "/explore/cases", params = "duplicateFrom")
@Operation(summary = "Duplicate a case")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Case duplication request delegated to case server")})
public ResponseEntity<Void> duplicateCase(@RequestParam("duplicateFrom") UUID parentCaseUuid,
@RequestParam("caseName") String caseName,
@RequestParam("description") String description,
@RequestParam(QUERY_PARAM_PARENT_DIRECTORY_ID) UUID parentDirectoryUuid,
@RequestHeader("userId") String userId) {
exploreService.duplicateCase(caseName, description, userId, parentCaseUuid, parentDirectoryUuid);
public ResponseEntity<Void> duplicateCase(
@RequestParam("duplicateFrom") UUID caseId,
@RequestParam(name = QUERY_PARAM_PARENT_DIRECTORY_ID, required = false) UUID targetDirectoryId,
@RequestHeader("userId") String userId) {
exploreService.duplicateCase(caseId, targetDirectoryId, userId);
return ResponseEntity.ok().build();
}

Expand All @@ -109,15 +106,15 @@ public ResponseEntity<Void> createScriptContingencyList(@PathVariable("listName"
return ResponseEntity.ok().build();
}

@PostMapping(value = "/explore/script-contingency-lists")
@Operation(summary = "Duplicate a script contingency list")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Script contingency list has been created")})
public ResponseEntity<Void> duplicateScriptContingencyList(@RequestParam("duplicateFrom") UUID parentListId,
@RequestParam("listName") String listName,
@RequestParam("description") String description,
@RequestParam(QUERY_PARAM_PARENT_DIRECTORY_ID) UUID parentDirectoryUuid,
@RequestHeader("userId") String userId) {
exploreService.duplicateScriptContingencyList(parentListId, listName, description, userId, parentDirectoryUuid);
@PostMapping(value = "/explore/contingency-lists", params = "duplicateFrom")
@Operation(summary = "Duplicate a contingency list")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Contingency list has been created")})
public ResponseEntity<Void> duplicateContingencyList(
@RequestParam("duplicateFrom") UUID contingencyListUuid,
@RequestParam(name = QUERY_PARAM_TYPE) ContingencyListType contingencyListType,
@RequestParam(name = QUERY_PARAM_PARENT_DIRECTORY_ID, required = false) UUID targetDirectoryId,
@RequestHeader("userId") String userId) {
exploreService.duplicateContingencyList(contingencyListUuid, targetDirectoryId, userId, contingencyListType);
return ResponseEntity.ok().build();
}

Expand All @@ -133,18 +130,6 @@ public ResponseEntity<Void> createFormContingencyList(@PathVariable("listName")
return ResponseEntity.ok().build();
}

@PostMapping(value = "/explore/form-contingency-lists")
@Operation(summary = "Duplicate a form contingency list")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Form contingency list has been created")})
public ResponseEntity<Void> duplicateFormContingencyList(@RequestParam("duplicateFrom") UUID parentListId,
@RequestParam("listName") String listName,
@RequestParam("description") String description,
@RequestParam(QUERY_PARAM_PARENT_DIRECTORY_ID) UUID parentDirectoryUuid,
@RequestHeader("userId") String userId) {
exploreService.duplicateFormContingencyList(parentListId, listName, description, userId, parentDirectoryUuid);
return ResponseEntity.ok().build();
}

@PostMapping(value = "/explore/form-contingency-lists/{id}/new-script/{scriptName}")
@Operation(summary = "Create a new script contingency list from a form contingency list")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The script contingency list have been created successfully")})
Expand Down Expand Up @@ -177,18 +162,6 @@ public ResponseEntity<Void> createIdentifierContingencyList(@PathVariable("listN
return ResponseEntity.ok().build();
}

@PostMapping(value = "/explore/identifier-contingency-lists")
@Operation(summary = "Duplicate a identifier contingency list")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Identifier contingency list has been created")})
public ResponseEntity<Void> duplicateIdentifierContingencyList(@RequestParam("duplicateFrom") UUID parentListId,
@RequestParam("listName") String listName,
@RequestParam("description") String description,
@RequestParam(QUERY_PARAM_PARENT_DIRECTORY_ID) UUID parentDirectoryUuid,
@RequestHeader("userId") String userId) {
exploreService.duplicateIdentifierContingencyList(parentListId, listName, description, userId, parentDirectoryUuid);
return ResponseEntity.ok().build();
}

@PostMapping(value = "/explore/filters", consumes = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "create a filter")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Filter creation request delegated to filter server")})
Expand All @@ -201,15 +174,14 @@ public ResponseEntity<Void> createFilter(@RequestBody String filter,
return ResponseEntity.ok().build();
}

@PostMapping(value = "/explore/filters")
@PostMapping(value = "/explore/filters", params = "duplicateFrom")
@Operation(summary = "Duplicate a filter")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The script has been created successfully")})
public ResponseEntity<Void> duplicateFilter(@RequestParam("duplicateFrom") UUID parentFilterId,
@RequestParam("name") String filterName,
@RequestParam("description") String description,
@RequestParam(QUERY_PARAM_PARENT_DIRECTORY_ID) UUID parentDirectoryUuid,
public ResponseEntity<Void> duplicateFilter(
@RequestParam("duplicateFrom") UUID filterId,
@RequestParam(name = QUERY_PARAM_PARENT_DIRECTORY_ID, required = false) UUID targetDirectoryId,
@RequestHeader("userId") String userId) {
exploreService.duplicateFilter(filterName, description, parentFilterId, parentDirectoryUuid, userId);
exploreService.duplicateFilter(filterId, targetDirectoryId, userId);
return ResponseEntity.ok().build();
}

Expand Down Expand Up @@ -288,7 +260,7 @@ public ResponseEntity<Void> updateContingencyList(
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "parameters creation request delegated to corresponding server")})
public ResponseEntity<Void> createParameters(@RequestBody String parameters,
@RequestParam("name") String parametersName,
@RequestParam(name = QUERY_PARAM_PARAMETERS_TYPE, defaultValue = "") ParametersType parametersType,
@RequestParam(name = QUERY_PARAM_TYPE, defaultValue = "") ParametersType parametersType,
@RequestParam(QUERY_PARAM_PARENT_DIRECTORY_ID) UUID parentDirectoryUuid,
@RequestHeader("userId") String userId) {
exploreService.createParameters(parameters, parametersType, parametersName, parentDirectoryUuid, userId);
Expand All @@ -300,23 +272,21 @@ public ResponseEntity<Void> createParameters(@RequestBody String parameters,
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "parameters have been successfully modified")})
public ResponseEntity<Void> updateParameters(@PathVariable UUID id,
@RequestBody String parameters,
@RequestParam(name = QUERY_PARAM_PARAMETERS_TYPE, defaultValue = "") ParametersType parametersType,
@RequestParam(name = QUERY_PARAM_TYPE, defaultValue = "") ParametersType parametersType,
@RequestHeader("userId") String userId,
@RequestParam("name") String name) {
exploreService.updateParameters(id, parameters, parametersType, userId, name);
return ResponseEntity.ok().build();
}

@PostMapping(value = "/explore/parameters")
@PostMapping(value = "/explore/parameters", params = "duplicateFrom")
@Operation(summary = "Duplicate parameters")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "parameters have been successfully duplicated")})
public ResponseEntity<Void> duplicateParameters(@RequestParam("duplicateFrom") UUID parentParameterId,
@RequestParam("name") String parametersName,
@RequestParam(name = QUERY_PARAM_PARAMETERS_TYPE, defaultValue = "") ParametersType parametersType,
@RequestParam(name = "description", required = false, defaultValue = "") String description,
@RequestParam(QUERY_PARAM_PARENT_DIRECTORY_ID) UUID parentDirectoryUuid,
@RequestHeader("userId") String userId) {
exploreService.duplicateParameters(parentParameterId, parametersType, parametersName, description, parentDirectoryUuid, userId);
public ResponseEntity<Void> duplicateParameters(@RequestParam("duplicateFrom") UUID parametersId,
@RequestParam(name = QUERY_PARAM_PARENT_DIRECTORY_ID, required = false) UUID targetDirectoryId,
@RequestParam(name = QUERY_PARAM_TYPE) ParametersType parametersType,
@RequestHeader("userId") String userId) {
exploreService.duplicateParameters(parametersId, targetDirectoryId, parametersType, userId);
return ResponseEntity.ok().build();
}

Expand All @@ -329,4 +299,14 @@ public ResponseEntity<Void> createNetworkModifications(@RequestBody List<Element
exploreService.createNetworkModifications(bodyContent, userId, parentDirectoryUuid);
return ResponseEntity.ok().build();
}

@PostMapping(value = "/explore/modifications", params = "duplicateFrom")
@Operation(summary = "duplicate modification element")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Modifications have been duplicated and corresponding elements created in the directory")})
public ResponseEntity<Void> duplicateNetworkModifications(@RequestParam("duplicateFrom") UUID networkModificationId,
@RequestParam(name = QUERY_PARAM_PARENT_DIRECTORY_ID, required = false) UUID targetDirectoryId,
@RequestHeader("userId") String userId) {
exploreService.duplicateNetworkModifications(networkModificationId, targetDirectoryId, userId);
return ResponseEntity.ok().build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,10 @@ UUID importCase(MultipartFile multipartFile) {
return caseUuid;
}

UUID duplicateCase(UUID sourceCaseUuid) {
UUID duplicateCase(UUID caseId) {
String path = UriComponentsBuilder.fromPath(DELIMITER + CASE_SERVER_API_VERSION + "/cases")
.queryParam("duplicateFrom", sourceCaseUuid)
.queryParam("duplicateFrom", caseId)
.buildAndExpand()
.toUriString();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,12 @@ public void insertScriptContingencyList(UUID id, String content) {
restTemplate.exchange(actionsServerBaseUri + path, HttpMethod.POST, httpEntity, Void.class);
}

public void insertScriptContingencyList(UUID sourceListId, UUID id) {
public UUID duplicateScriptContingencyList(UUID scriptContingencyListsId) {
String path = UriComponentsBuilder.fromPath(DELIMITER + ACTIONS_API_VERSION + "/script-contingency-lists")
.queryParam(HEADER_DUPLICATE_FROM, sourceListId)
.queryParam("id", id)
.queryParam(HEADER_DUPLICATE_FROM, scriptContingencyListsId)
.buildAndExpand()
.toUriString();
restTemplate.exchange(actionsServerBaseUri + path, HttpMethod.POST, null, Void.class);
return restTemplate.exchange(actionsServerBaseUri + path, HttpMethod.POST, null, UUID.class).getBody();
}

public void insertFormContingencyList(UUID id, String content) {
Expand All @@ -89,20 +89,20 @@ public void insertIdentifierContingencyList(UUID id, String content) {
restTemplate.exchange(actionsServerBaseUri + path, HttpMethod.POST, httpEntity, Void.class);
}

public void insertFormContingencyList(UUID sourceListId, UUID id) {
public UUID duplicateFormContingencyList(UUID formContingencyListsId) {
String path = UriComponentsBuilder.fromPath(DELIMITER + ACTIONS_API_VERSION + "/form-contingency-lists")
.queryParam(HEADER_DUPLICATE_FROM, sourceListId)
.queryParam("id", id)
.queryParam(HEADER_DUPLICATE_FROM, formContingencyListsId)
.buildAndExpand()
.toUriString();
restTemplate.exchange(actionsServerBaseUri + path, HttpMethod.POST, null, Void.class);
return restTemplate.exchange(actionsServerBaseUri + path, HttpMethod.POST, null, UUID.class).getBody();
}

public void insertIdentifierContingencyList(UUID sourceListId, UUID id) {
public UUID duplicateIdentifierContingencyList(UUID identifierContingencyListsId) {
String path = UriComponentsBuilder.fromPath(DELIMITER + ACTIONS_API_VERSION + "/identifier-contingency-lists")
.queryParam(HEADER_DUPLICATE_FROM, sourceListId)
.queryParam("id", id)
.queryParam(HEADER_DUPLICATE_FROM, identifierContingencyListsId)
.buildAndExpand()
.toUriString();
restTemplate.exchange(actionsServerBaseUri + path, HttpMethod.POST, null, Void.class);
return restTemplate.exchange(actionsServerBaseUri + path, HttpMethod.POST, null, UUID.class).getBody();
}

public void newScriptFromFormContingencyList(UUID id, UUID newId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,24 @@ public ElementAttributes createElementWithNewName(ElementAttributes elementAttri
.getBody();
}

public ElementAttributes duplicateElement(UUID elementUuid, UUID newElementUuid, UUID targetDirectoryId, String userId) {
UriComponentsBuilder uri = UriComponentsBuilder
.fromPath(ELEMENTS_SERVER_ROOT_PATH)
.queryParam("duplicateFrom", elementUuid)
.queryParam("newElementUuid", newElementUuid);
if (targetDirectoryId != null) {
uri.queryParam("targetDirectoryId", targetDirectoryId);
}
String path = uri.buildAndExpand()
.toUriString();
HttpHeaders headers = new HttpHeaders();
headers.add(HEADER_USER_ID, userId);
headers.setContentType(MediaType.APPLICATION_JSON);
return restTemplate
.exchange(directoryServerBaseUri + path, HttpMethod.POST, new HttpEntity<>(headers), ElementAttributes.class)
.getBody();
}

public void deleteDirectoryElement(UUID elementUuid, String userId) {
String path = UriComponentsBuilder
.fromPath(ELEMENTS_SERVER_ROOT_PATH + "/{elementUuid}")
Expand Down
Loading

0 comments on commit f3b2c4e

Please sign in to comment.