Skip to content

Commit

Permalink
Refactor duplication endpoint
Browse files Browse the repository at this point in the history
Signed-off-by: TOURI ANIS <[email protected]>
  • Loading branch information
anistouri committed Apr 17, 2024
1 parent 6f16462 commit a596ce2
Show file tree
Hide file tree
Showing 7 changed files with 115 additions and 130 deletions.
100 changes: 40 additions & 60 deletions src/main/java/org/gridsuite/explore/server/ExploreController.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,15 +61,13 @@ public ResponseEntity<Void> createStudy(@PathVariable("studyName") String studyN
return ResponseEntity.ok().build();
}

@PostMapping(value = "/explore/studies")
@PostMapping(value = "/explore/studies/{studyId}/duplicate")
@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(@PathVariable("studyId") 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/{caseId}/duplicate")
@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(
@PathVariable("caseId") 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/{contingencyListsId}/duplicate")
@Operation(summary = "Duplicate a contingency list")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Contingency list has been created")})
public ResponseEntity<Void> duplicateContingencyList(
@PathVariable("contingencyListsId") UUID contingencyListsId,
@RequestParam(name = "contingencyListType") ContingencyListType contingencyListType,
@RequestParam(name = QUERY_PARAM_PARENT_DIRECTORY_ID, required = false) UUID targetDirectoryId,
@RequestHeader("userId") String userId) {
exploreService.duplicateContingencyList(contingencyListsId, 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/{filterId}/duplicate")
@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(
@PathVariable("filterId") 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 @@ -307,16 +279,14 @@ public ResponseEntity<Void> updateParameters(@PathVariable UUID id,
return ResponseEntity.ok().build();
}

@PostMapping(value = "/explore/parameters")
@PostMapping(value = "/explore/parameters/{parametersId}/duplicate")
@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(@PathVariable("parametersId") UUID parametersId,
@RequestParam(name = QUERY_PARAM_PARENT_DIRECTORY_ID, required = false) UUID targetDirectoryId,
@RequestParam(name = QUERY_PARAM_PARAMETERS_TYPE, defaultValue = "") 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/{networkModificationId}/duplicate")
@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(@PathVariable("networkModificationId") 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,9 @@ UUID importCase(MultipartFile multipartFile) {
return caseUuid;
}

UUID duplicateCase(UUID sourceCaseUuid) {
String path = UriComponentsBuilder.fromPath(DELIMITER + CASE_SERVER_API_VERSION + "/cases")
.queryParam("duplicateFrom", sourceCaseUuid)
UUID duplicateCase(UUID caseId) {
String path = UriComponentsBuilder.fromPath(DELIMITER + CASE_SERVER_API_VERSION + "/cases/{caseId}/duplicate")
.buildAndExpand(caseId)
.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,11 @@ public void insertScriptContingencyList(UUID id, String content) {
restTemplate.exchange(actionsServerBaseUri + path, HttpMethod.POST, httpEntity, Void.class);
}

public void insertScriptContingencyList(UUID sourceListId, UUID id) {
String path = UriComponentsBuilder.fromPath(DELIMITER + ACTIONS_API_VERSION + "/script-contingency-lists")
.queryParam(HEADER_DUPLICATE_FROM, sourceListId)
.queryParam("id", id)
public UUID duplicateScriptContingencyList(UUID scriptContingencyListsId) {
String path = UriComponentsBuilder.fromPath(DELIMITER + ACTIONS_API_VERSION + "/script-contingency-lists/{scriptContingencyListsId}/duplicate")
.buildAndExpand(scriptContingencyListsId)
.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 +88,18 @@ public void insertIdentifierContingencyList(UUID id, String content) {
restTemplate.exchange(actionsServerBaseUri + path, HttpMethod.POST, httpEntity, Void.class);
}

public void insertFormContingencyList(UUID sourceListId, UUID id) {
String path = UriComponentsBuilder.fromPath(DELIMITER + ACTIONS_API_VERSION + "/form-contingency-lists")
.queryParam(HEADER_DUPLICATE_FROM, sourceListId)
.queryParam("id", id)
public UUID duplicateFormContingencyList(UUID formContingencyListsId) {
String path = UriComponentsBuilder.fromPath(DELIMITER + ACTIONS_API_VERSION + "/form-contingency-lists/{formContingencyListsId}/duplicate")
.buildAndExpand(formContingencyListsId)
.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) {
String path = UriComponentsBuilder.fromPath(DELIMITER + ACTIONS_API_VERSION + "/identifier-contingency-lists")
.queryParam(HEADER_DUPLICATE_FROM, sourceListId)
.queryParam("id", id)
public UUID duplicateIdentifierContingencyList(UUID identifierContingencyListsId) {
String path = UriComponentsBuilder.fromPath(DELIMITER + ACTIONS_API_VERSION + "/identifier-contingency-lists/{identifierContingencyListsId}/duplicate")
.buildAndExpand(identifierContingencyListsId)
.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 + "/{elementUuid}/duplicate")
.queryParam("newElementUuid", newElementUuid);
if (targetDirectoryId != null) {
uri.queryParam("targetDirectoryId", targetDirectoryId);
}
String path = uri.buildAndExpand(elementUuid)
.toUriString();
HttpHeaders headers = new HttpHeaders();
headers.add(HEADER_USER_ID, userId);
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<ElementAttributes> httpEntity = new HttpEntity<>(headers);
return restTemplate
.exchange(directoryServerBaseUri + path, HttpMethod.POST, httpEntity, 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 a596ce2

Please sign in to comment.