|
4 | 4 | import fr.insee.bpm.metadata.model.MetadataModel; |
5 | 5 | import fr.insee.bpm.metadata.model.Variable; |
6 | 6 | import fr.insee.bpm.metadata.model.VariableType; |
7 | | -import fr.insee.bpm.metadata.model.VariablesMap; |
| 7 | +import fr.insee.bpm.metadata.reader.ReaderUtils; |
8 | 8 | import fr.insee.bpm.metadata.reader.ddi.DDIReader; |
9 | 9 | import fr.insee.bpm.metadata.reader.lunatic.LunaticReader; |
10 | 10 | import fr.insee.genesis.Constants; |
|
21 | 21 |
|
22 | 22 | import java.io.FileInputStream; |
23 | 23 | import java.io.IOException; |
24 | | -import java.io.InputStream; |
25 | 24 | import java.nio.file.Path; |
26 | 25 | import java.util.List; |
27 | 26 |
|
28 | | -import static fr.insee.bpm.metadata.reader.lunatic.LunaticUtils.addLunaticVariable; |
29 | | - |
30 | 27 | @Service |
31 | 28 | @AllArgsConstructor |
32 | 29 | @Slf4j |
@@ -60,45 +57,12 @@ public MetadataModel loadAndSaveIfNotExists(String campaignName, String question |
60 | 57 | } else { |
61 | 58 | metadataModel = questionnaireMetadataModels.getFirst().metadataModel(); |
62 | 59 | } |
63 | | - String metadataFilePath = fileUtils.getSpecFolder(questionnaireId); |
64 | | - addMissingAndFilterVariables(metadataModel, metadataFilePath); |
65 | 60 |
|
66 | 61 | saveMetadata(questionnaireId.toUpperCase(), mode, metadataModel); |
67 | 62 |
|
68 | 63 | return metadataModel; |
69 | 64 | } |
70 | 65 |
|
71 | | - private void addMissingAndFilterVariables(MetadataModel metadataModel, String metadataFilePath) { |
72 | | - VariablesMap variablesMap = metadataModel.getVariables(); |
73 | | - |
74 | | - try (InputStream lunaticStream = new FileInputStream(metadataFilePath); |
75 | | - InputStream lunaticStream2 = new FileInputStream(metadataFilePath)) { |
76 | | - |
77 | | - List<String> missingVars = LunaticReader.getMissingVariablesFromLunatic(lunaticStream); |
78 | | - List<String> filterVars = LunaticReader.getFilterResultFromLunatic(lunaticStream2); |
79 | | - |
80 | | - for (String var : missingVars) { |
81 | | - String missingVarName = var + Constants.MISSING_SUFFIX; |
82 | | - if (!variablesMap.hasVariable(missingVarName)) { |
83 | | - addLunaticVariable(metadataModel, var, Constants.MISSING_SUFFIX, VariableType.STRING); |
84 | | - } |
85 | | - } |
86 | | - |
87 | | - for (String var : filterVars) { |
88 | | - String filterVarName = Constants.FILTER_RESULT_PREFIX + var; |
89 | | - if (!variablesMap.hasVariable(filterVarName)) { |
90 | | - addLunaticVariable(metadataModel, var, Constants.FILTER_RESULT_PREFIX, VariableType.BOOLEAN); |
91 | | - } |
92 | | - } |
93 | | - |
94 | | - } catch (IOException e) { |
95 | | - log.error("Erreur lecture fichier Lunatic : {}", metadataFilePath, e); |
96 | | - } |
97 | | - } |
98 | | - |
99 | | - |
100 | | - |
101 | | - |
102 | 66 | private void saveMetadata(String questionnaireId, Mode mode, MetadataModel metadataModel) { |
103 | 67 | questionnaireMetadataPersistancePort.save( |
104 | 68 | new QuestionnaireMetadataModel( |
@@ -162,16 +126,17 @@ private MetadataModel parseMetadata(String metadataFilePath, boolean withDDI) { |
162 | 126 | try { |
163 | 127 | log.info("Try to read {} file: {}", withDDI ? "DDI" : "Lunatic", metadataFilePath); |
164 | 128 | if (withDDI) { |
165 | | - MetadataModel metadataModel = DDIReader.getMetadataFromDDI( |
| 129 | + MetadataModel metadataModel = ReaderUtils.getMetadataFromDDIAndLunatic( |
166 | 130 | Path.of(metadataFilePath).toFile().toURI().toURL().toString(), |
167 | | - new FileInputStream(metadataFilePath)); |
| 131 | + new FileInputStream(metadataFilePath),metadataFilePath); |
168 | 132 | // Temporary solution |
169 | 133 | // the logic of adding variables from lunatic to the ones present in the DDI needs to be implemented in BPM |
170 | 134 | // (only in Kraftwerk for the moment) |
171 | 135 | for (String enoVar : Constants.getEnoVariables()){ |
172 | 136 | metadataModel.getVariables().putVariable(new Variable(enoVar, metadataModel.getRootGroup(), VariableType.STRING)); |
173 | 137 | } |
174 | 138 | return metadataModel; |
| 139 | + |
175 | 140 | } else { |
176 | 141 | return LunaticReader.getMetadataFromLunatic( |
177 | 142 | new FileInputStream(metadataFilePath)); |
|
0 commit comments