Skip to content

Commit b92fb7f

Browse files
Merge pull request #440 from InseeFr/devZipOutputFolder
zip output folder and encrypt if true
2 parents 789a456 + 068e342 commit b92fb7f

File tree

23 files changed

+527
-265
lines changed

23 files changed

+527
-265
lines changed

kraftwerk-api/src/main/java/fr/insee/kraftwerk/api/process/AbstractMainProcessingGenesis.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public abstract class AbstractMainProcessingGenesis {
4343
protected UserInputsGenesis userInputs;
4444
protected final FileUtilsInterface fileUtilsInterface;
4545
protected Statement database;
46+
@Getter
4647
protected final KraftwerkExecutionContext kraftwerkExecutionContext;
4748
/* SPECIFIC VARIABLES */
4849
@Getter

kraftwerk-api/src/main/java/fr/insee/kraftwerk/api/process/MainProcessing.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public class MainProcessing {
4242
List<UserInputsFile> userInputsFileList; // for file by file process
4343
@Getter
4444
private VtlBindings vtlBindings = new VtlBindings();
45+
@Getter
4546
private final KraftwerkExecutionContext kraftwerkExecutionContext;
4647
private final FileUtilsInterface fileUtilsInterface;
4748

@@ -164,7 +165,7 @@ private void writeErrors() {
164165

165166
private static List<UserInputsFile> getUserInputsFile(UserInputsFile source, boolean fileByFile) throws KraftwerkException {
166167
List<UserInputsFile> userInputsFileList = new ArrayList<>();
167-
if(Boolean.TRUE.equals(fileByFile)){
168+
if(fileByFile){
168169
for (String dataMode : source.getModeInputsMap().keySet()) {
169170
List<Path> dataFiles = getFilesToProcess(source, dataMode);
170171
for (Path dataFile : dataFiles) {

kraftwerk-api/src/main/java/fr/insee/kraftwerk/api/process/MainProcessingGenesisLegacy.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,19 @@
11
package fr.insee.kraftwerk.api.process;
22

3-
import fr.insee.bpm.metadata.model.Group;
4-
import fr.insee.bpm.metadata.model.MetadataModel;
53
import fr.insee.kraftwerk.api.client.GenesisClient;
64
import fr.insee.kraftwerk.api.configuration.ConfigProperties;
7-
import fr.insee.kraftwerk.core.data.model.InterrogationId;
85
import fr.insee.kraftwerk.core.data.model.Mode;
9-
import fr.insee.kraftwerk.core.data.model.SurveyUnitUpdateLatest;
106
import fr.insee.kraftwerk.core.exceptions.KraftwerkException;
117
import fr.insee.kraftwerk.core.utils.KraftwerkExecutionContext;
128
import fr.insee.kraftwerk.core.utils.SqlUtils;
139
import fr.insee.kraftwerk.core.utils.files.FileUtilsInterface;
14-
import fr.insee.kraftwerk.core.vtl.VtlBindings;
1510
import lombok.extern.log4j.Log4j2;
1611

1712
import java.io.IOException;
1813
import java.nio.file.Path;
1914
import java.sql.Connection;
20-
import java.sql.ResultSet;
21-
import java.sql.ResultSetMetaData;
2215
import java.sql.SQLException;
23-
import java.util.ArrayList;
24-
import java.util.LinkedHashMap;
2516
import java.util.List;
26-
import java.util.Map;
2717

2818
@Log4j2
2919
public class MainProcessingGenesisLegacy extends AbstractMainProcessingGenesis{

kraftwerk-api/src/main/java/fr/insee/kraftwerk/api/process/MainProcessingGenesisNew.java

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.springframework.beans.factory.annotation.Autowired;
2424

2525
import java.io.IOException;
26-
import java.io.InputStream;
2726
import java.nio.file.Files;
2827
import java.nio.file.Path;
2928
import java.sql.Connection;
@@ -52,16 +51,16 @@ public MainProcessingGenesisNew(
5251
super(config,genesisClient,fileUtilsInterface,kraftwerkExecutionContext);
5352
}
5453

55-
public void runMain(String questionnaireModelId, int batchSize, Mode dataMode) throws KraftwerkException, IOException {
54+
public void runMain(String collectionInstrumentId, int batchSize, Mode dataMode) throws KraftwerkException, IOException {
5655
log.info("Batch size of interrogations retrieved from Genesis: {}", batchSize);
5756
String databasePath = ("%s/kraftwerk_temp/%s/db.duckdb".formatted(System.getProperty(JAVA_TMPDIR_PROPERTY),
58-
questionnaireModelId));
57+
collectionInstrumentId));
5958
//We delete database at start (in case there is already one)
6059
SqlUtils.deleteDatabaseFile(databasePath);
61-
log.info("Kraftwerk main service started for questionnaire: {} {}", questionnaireModelId, kraftwerkExecutionContext.isWithDDI()
60+
log.info("Kraftwerk main service started for questionnaire: {} {}", collectionInstrumentId, kraftwerkExecutionContext.isWithDDI()
6261
? "with DDI": "without DDI");
63-
List<Mode> modes = client.getModesByQuestionnaire(questionnaireModelId);
64-
init(questionnaireModelId, modes);
62+
List<Mode> modes = client.getModesByQuestionnaire(collectionInstrumentId);
63+
init(collectionInstrumentId, modes);
6564
//Try with resources to close database when done
6665
try (Connection tryDatabase = config.isDuckDbInMemory() ?
6766
SqlUtils.openConnection()
@@ -70,7 +69,7 @@ public void runMain(String questionnaireModelId, int batchSize, Mode dataMode) t
7069
throw new KraftwerkException(500,"Error during internal database creation");
7170
}
7271
this.database = tryDatabase.createStatement();
73-
processDataByBatch(questionnaireModelId, batchSize, dataMode);
72+
processDataByBatch(collectionInstrumentId, batchSize, dataMode);
7473
outputFileWriter();
7574
writeErrors();
7675
if (!database.isClosed()){database.close();}
@@ -271,12 +270,7 @@ private void moveTempFile(String filename, Path tmpOutputFile) throws KraftwerkE
271270
log.error("Permission refused to create folder: {} : {}", outDirectory.getParent(), e);
272271
}
273272
Path outputPath = outDirectory.resolve(filename);
274-
//Encrypt file if requested
275-
if(kraftwerkExecutionContext.isWithEncryption()) {
276-
InputStream encryptedStream = encryptionUtils.encryptOutputFile(tmpOutputFile, kraftwerkExecutionContext);
277-
fileUtilsInterface.writeFile(filename, encryptedStream, true);
278-
log.info("File: {} successfully written and encrypted", filename);
279-
}
273+
kraftwerkExecutionContext.setOutDirectory(outDirectory);
280274
fileUtilsInterface.moveFile(tmpOutputFile,outputPath.toString());
281275
log.info("File: {} successfully written", outputPath);
282276
}
@@ -294,9 +288,7 @@ public String outputFileName(String questionnaireModelId) {
294288
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd_HH-mm-ss");
295289
String timestamp = LocalDateTime.now().format(formatter);
296290
String fileName = String.format("export_%s_%s", questionnaireModelId, timestamp);
297-
return kraftwerkExecutionContext.isWithEncryption() ?
298-
fileName + JSON_EXTENSION + ".enc"
299-
: fileName + JSON_EXTENSION;
291+
return fileName + JSON_EXTENSION;
300292
}
301293

302294
protected void tmpJsonFileWriter(List<InterrogationId> listIds,

kraftwerk-api/src/main/java/fr/insee/kraftwerk/api/services/MainService.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -203,17 +203,17 @@ public ResponseEntity<Object> jsonExtraction(
203203
boolean withDDI = true;
204204
boolean withEncryption = false;
205205

206-
MainProcessingGenesisNew mpGenesis = getMainProcessingGenesisByQuestionnaire(withDDI, withEncryption, fileUtilsInterface);
207-
try {
208-
mpGenesis.runMainJson(collectionInstrumentId, batchSize, dataMode, since);
206+
MainProcessingGenesisNew mpGenesis = getMainProcessingGenesisByQuestionnaire(withDDI, withEncryption, fileUtilsInterface);
207+
try {
208+
mpGenesis.runMainJson(collectionInstrumentId, batchSize, dataMode, since);
209209
log.info("Data extracted");
210-
} catch (KraftwerkException e) {
211-
return ResponseEntity.status(e.getStatus()).body(e.getMessage());
212-
} catch (IOException e) {
213-
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
214-
}
215-
return ResponseEntity.ok(String.format("Data extracted for questionnaireModelId %s",collectionInstrumentId));
216-
}
210+
} catch (KraftwerkException e) {
211+
return ResponseEntity.status(e.getStatus()).body(e.getMessage());
212+
} catch (IOException e) {
213+
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
214+
}
215+
return ResponseEntity.ok(String.format("Data extracted for collectionInstrumentId %s",collectionInstrumentId));
216+
}
217217

218218
@GetMapping(value ="/json/replay")
219219
@Operation(operationId = "jsonExtractionReplay",
@@ -250,6 +250,7 @@ public ResponseEntity<Object> jsonExtractionReplay(
250250
return ResponseEntity.ok(String.format("Data extracted for collectionInstrumentId %s",collectionInstrumentId));
251251
}
252252

253+
253254
@NotNull
254255
MainProcessingGenesisLegacy getMainProcessingGenesis(boolean withDDI, boolean withEncryption, FileUtilsInterface fileUtilsInterface) {
255256

0 commit comments

Comments
 (0)