Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor duplication endpoint #85

Merged
merged 7 commits into from
May 2, 2024
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
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
Loading