Skip to content

Commit b182cd4

Browse files
committed
add the folder and update the path of the save
1 parent 7587c4e commit b182cd4

File tree

4 files changed

+33
-11
lines changed

4 files changed

+33
-11
lines changed

src/main/java/fr/insee/genesis/controller/rest/responses/ContextualVariableController.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.swagger.v3.oas.annotations.Operation;
1111
import lombok.AllArgsConstructor;
1212
import lombok.extern.slf4j.Slf4j;
13+
import org.springframework.http.HttpStatus;
1314
import org.springframework.http.HttpStatusCode;
1415
import org.springframework.http.ResponseEntity;
1516
import org.springframework.security.access.prepost.PreAuthorize;
@@ -50,12 +51,16 @@ public ResponseEntity<Object> getContextualVariables(
5051
@PreAuthorize("hasAnyRole('USER_PLATINE','SCHEDULER')")
5152
public ResponseEntity<Object> saveContextualVariables(
5253
@RequestParam("questionnaireId") String questionnaireId
53-
){
54+
) {
5455
try {
5556
FileUtils fileUtils = new FileUtils(config);
56-
int fileCount = contextualVariableApiPort.saveContextualVariableFiles(questionnaireId, fileUtils);
57+
58+
String contextualFolderPath = fileUtils.getDataFolder(questionnaireId, "WEB", null) + "/contextual";
59+
60+
int fileCount = contextualVariableApiPort.saveContextualVariableFiles(questionnaireId, fileUtils,contextualFolderPath);
61+
5762
return ResponseEntity.ok("%d file(s) processed for questionnaire %s !".formatted(fileCount, questionnaireId));
58-
}catch (GenesisException ge){
63+
} catch (GenesisException ge) {
5964
return ResponseEntity.status(HttpStatusCode.valueOf(ge.getStatus())).body(ge.getMessage());
6065
}
6166
}
@@ -72,7 +77,9 @@ public ResponseEntity<Object> readContextualPreviousJson(
7277
try {
7378
FileUtils fileUtils = new FileUtils(config);
7479

75-
String filePath = "%s/%s".formatted(
80+
fileUtils.ensureContextualFolderExists(questionnaireId, mode);
81+
82+
String filePath = "%s/contextual/%s".formatted(
7683
fileUtils.getDataFolder(questionnaireId, mode.getFolder(), null),
7784
jsonFileName
7885
);
@@ -84,7 +91,8 @@ public ResponseEntity<Object> readContextualPreviousJson(
8491
return ResponseEntity.ok("Contextual previous variable file %s saved !".formatted(filePath));
8592
}catch (GenesisException ge){
8693
return ResponseEntity.status(HttpStatusCode.valueOf(ge.getStatus())).body(ge.getMessage());
87-
}
94+
} catch (IOException ioe) {
95+
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Erreur IO : " + ioe.getMessage()); }
8896
}
8997

9098
@Operation(summary = "Add contextual external json file")
@@ -98,7 +106,9 @@ public ResponseEntity<Object> readContextualExternalJson(
98106
try {
99107
FileUtils fileUtils = new FileUtils(config);
100108

101-
String filePath = "%s/%s".formatted(
109+
fileUtils.ensureContextualFolderExists(questionnaireId, mode);
110+
111+
String filePath = "%s/contextual/%s".formatted(
102112
fileUtils.getDataFolder(questionnaireId, mode.getFolder(), null),
103113
jsonFileName
104114
);
@@ -110,6 +120,8 @@ public ResponseEntity<Object> readContextualExternalJson(
110120
return ResponseEntity.ok("Contextual external variable file %s saved !".formatted(filePath));
111121
}catch (GenesisException ge){
112122
return ResponseEntity.status(HttpStatusCode.valueOf(ge.getStatus())).body(ge.getMessage());
123+
} catch (IOException ioe) {
124+
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Erreur IO : " + ioe.getMessage());
113125
}
114126
}
115127

src/main/java/fr/insee/genesis/domain/ports/api/ContextualVariableApiPort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66

77
public interface ContextualVariableApiPort {
88
ContextualVariableModel getContextualVariable(String questionnaireId, String interrogationId);
9-
int saveContextualVariableFiles(String questionnaireId, FileUtils fileUtils) throws GenesisException;
9+
int saveContextualVariableFiles(String questionnaireId, FileUtils fileUtils,String contextualFolderPath) throws GenesisException;
1010
}

src/main/java/fr/insee/genesis/domain/service/contextualvariable/ContextualVariableJsonService.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,11 @@ public ContextualVariableModel getContextualVariable(String questionnaireId, Str
7575
}
7676

7777
@Override
78-
public int saveContextualVariableFiles(String questionnaireId, FileUtils fileUtils) throws GenesisException {
78+
public int saveContextualVariableFiles(String questionnaireId, FileUtils fileUtils,String contextualFolderPath) throws GenesisException {
7979
int fileCount = 0;
8080

8181
for (Mode mode : Mode.values()) {
82-
try (Stream<Path> filePaths = Files.list(Path.of(fileUtils.getDataFolder(questionnaireId,
83-
mode.getFolder()
84-
, null)))) {
82+
try (Stream<Path> filePaths = Files.list(Path.of(contextualFolderPath))) {
8583
Iterator<Path> it = filePaths
8684
.filter(path -> path.toString().endsWith(".json"))
8785
.iterator();

src/main/java/fr/insee/genesis/infrastructure/utils/FileUtils.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
44
import fr.insee.genesis.configuration.Config;
5+
import fr.insee.genesis.domain.model.surveyunit.Mode;
56
import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel;
67
import lombok.Getter;
78
import lombok.extern.slf4j.Slf4j;
@@ -256,4 +257,15 @@ public List<File> listAllSpecsFolders() {
256257
.filter(File::isDirectory)
257258
.toList();
258259
}
260+
public void ensureContextualFolderExists(String questionnaireId, Mode mode) throws IOException {
261+
String contextualFolderPath = getDataFolder(questionnaireId, mode.getFolder(), null) + "/contextual";
262+
if (!isFolderPresent(contextualFolderPath)) {
263+
Files.createDirectories(Path.of(contextualFolderPath));
264+
log.info("contextual folder created : {}", contextualFolderPath);
265+
} else {
266+
log.info("contextual folder already exists : {}", contextualFolderPath);
267+
}
268+
}
269+
270+
259271
}

0 commit comments

Comments
 (0)