Skip to content

Commit bc9c590

Browse files
committed
save the nad associated to the user's profile with the newly created study
1 parent a816e2e commit bc9c590

File tree

3 files changed

+41
-0
lines changed

3 files changed

+41
-0
lines changed

src/main/java/org/gridsuite/studyconfig/server/controller/DiagramGridLayoutController.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,17 @@
77
package org.gridsuite.studyconfig.server.controller;
88

99
import io.swagger.v3.oas.annotations.Operation;
10+
import io.swagger.v3.oas.annotations.media.Content;
11+
import io.swagger.v3.oas.annotations.media.Schema;
1012
import io.swagger.v3.oas.annotations.responses.ApiResponse;
1113
import io.swagger.v3.oas.annotations.responses.ApiResponses;
1214
import io.swagger.v3.oas.annotations.tags.Tag;
1315
import lombok.RequiredArgsConstructor;
16+
import lombok.extern.slf4j.Slf4j;
1417
import org.gridsuite.studyconfig.server.StudyConfigApi;
1518
import org.gridsuite.studyconfig.server.dto.diagramgridlayout.DiagramGridLayout;
1619
import org.gridsuite.studyconfig.server.service.DiagramGridLayoutService;
20+
import org.springframework.http.HttpStatus;
1721
import org.springframework.http.MediaType;
1822
import org.springframework.http.ResponseEntity;
1923
import org.springframework.web.bind.annotation.*;
@@ -22,13 +26,16 @@
2226

2327
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
2428

29+
@Slf4j
2530
@RestController
2631
@RequestMapping(value = "/" + StudyConfigApi.API_VERSION + "/diagram-grid-layout")
2732
@RequiredArgsConstructor
2833
@Tag(name = "Diagram Grid Layout Config", description = "Diagram Grid Layout Configuration API")
2934
public class DiagramGridLayoutController {
3035
private final DiagramGridLayoutService diagramGridLayoutService;
3136

37+
public static final String DUPLICATE_FROM = "duplicateFrom";
38+
3239
@PostMapping(consumes = APPLICATION_JSON_VALUE)
3340
@Operation(summary = "Save diagram grid layout")
3441
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The newly created diagram grid layout UUID returned")})
@@ -61,4 +68,13 @@ public ResponseEntity<DiagramGridLayout> deleteDiagramGridLayout(
6168
diagramGridLayoutService.deleteDiagramGridLayout(diagramGridLayoutUuid);
6269
return ResponseEntity.ok().build();
6370
}
71+
72+
@PostMapping(params = { DUPLICATE_FROM })
73+
@Operation(summary = "Duplicate diagram grid layout")
74+
@ApiResponses(value = {@ApiResponse(responseCode = "201", description = "The diagram grid layout is duplicated")})
75+
public ResponseEntity<UUID> duplicateDiagramGridLayout(@RequestParam(name = DUPLICATE_FROM) UUID diagramGridLayoutUuid) {
76+
UUID newId = diagramGridLayoutService.duplicateDiagramGridLayout(diagramGridLayoutUuid);
77+
return ResponseEntity.status(HttpStatus.CREATED).body(newId);
78+
}
79+
6480
}

src/main/java/org/gridsuite/studyconfig/server/service/DiagramGridLayoutService.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,14 @@ public void updateDiagramGridLayout(UUID diagramGridLayoutUuid, DiagramGridLayou
5656

5757
diagramGridLayoutRepository.save(diagramGridLayoutEntity);
5858
}
59+
60+
@Transactional
61+
public UUID duplicateDiagramGridLayout(UUID diagramGridLayoutUuid) {
62+
DiagramGridLayoutEntity entity = diagramGridLayoutRepository.findById(diagramGridLayoutUuid)
63+
.orElseThrow(() -> new EntityNotFoundException("Diagram grid layout not found with id: " + diagramGridLayoutUuid));
64+
65+
DiagramGridLayoutEntity duplicate = DiagramGridLayoutMapper.toEntity(DiagramGridLayoutMapper.toDto(entity));
66+
67+
return diagramGridLayoutRepository.save(duplicate).getUuid();
68+
}
5969
}

src/test/java/org/gridsuite/studyconfig/server/DiagramGridLayoutControllerTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,21 @@ void testSaveDiagramGridLayout() throws Exception {
8484
assertThat(diagramGridLayoutToCheck).usingRecursiveComparison().isEqualTo(diagramGridLayoutToSave);
8585
}
8686

87+
@Test
88+
void testDuplicateDiagramGridLayout() throws Exception {
89+
DiagramGridLayoutEntity existing = diagramGridLayoutRepository.save(DiagramGridLayoutMapper.toEntity(createDiagramGridLayout()));
90+
91+
MvcResult mockMvcResult = mockMvc.perform(post("/v1/diagram-grid-layout")
92+
.queryParam("duplicateFrom", existing.getUuid().toString()))
93+
.andExpect(status().isCreated())
94+
.andReturn();
95+
96+
UUID duplicatedUuid = objectMapper.readValue(mockMvcResult.getResponse().getContentAsString(), UUID.class);
97+
98+
DiagramGridLayout duplicated = diagramGridLayoutService.getByDiagramGridLayoutUuid(duplicatedUuid);
99+
assertThat(duplicated).usingRecursiveComparison().isEqualTo(DiagramGridLayoutMapper.toDto(existing));
100+
}
101+
87102
@Test
88103
void testSaveMapGridLayout() throws Exception {
89104
DiagramGridLayout mapLayoutToSave = createMapGridLayout();

0 commit comments

Comments
 (0)