Skip to content

Commit 11f8097

Browse files
GtanSndilTandeau De Marsac Guylène
andauthored
Fix/rapports qualite (#424)
* test: fix due to jackson2-> jackson3 * fix: rapportQualite due to jackson2->jackson3 Jackson 2 : Les valeurs null étaient automatiquement converties en valeur par défaut du primitif (false pour boolean) jackson3 : Les valeurs null sur des primitifs génèrent une exception * refactor: method for RICH_TEXT * refactor * refactor * refactor * refactor: findDocument * refactor: requestProcessor in attribute * refactor: unused code --------- Co-authored-by: Tandeau De Marsac Guylène <C3JGPV@ad.insee.intra>
1 parent 7f14914 commit 11f8097

File tree

4 files changed

+69
-79
lines changed

4 files changed

+69
-79
lines changed

magma-diffusion-impl/src/main/java/fr/insee/rmes/magma/diffusion/services/RapportQualiteServiceImpl.java

Lines changed: 60 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@
2020
@Service
2121
public class RapportQualiteServiceImpl implements RapportQualiteService {
2222

23+
private final RequestProcessor requestProcessor;
24+
public RapportQualiteServiceImpl(RequestProcessor requestProcessor) {
25+
this.requestProcessor = requestProcessor;
26+
}
27+
2328
@Override
2429
public RapportQualite transformDTOenRapportQualite(RapportQualiteDTO rapportQualiteDTO, RequestProcessor requestProcessor) {
2530
RapportQualite rapportQualite = new RapportQualite();
@@ -38,7 +43,7 @@ public RapportQualite transformDTOenRapportQualite(RapportQualiteDTO rapportQual
3843
if (rapportQualiteDTO.rubriqueDTOList() != null) {
3944

4045
for (RubriqueDTO rubDTO : rapportQualiteDTO.rubriqueDTOList()) {
41-
Rubrique rubrique = transformRubrique(rubDTO, rapportQualite, requestProcessor);
46+
Rubrique rubrique = transformRubrique(rubDTO, rapportQualite);
4247
if (rubrique != null) { //rubric can be null : case of a CODE_LIST rubric with several codes and return null for addCodeList when rubric has been yet added with another code (it's the case when maxOccurs not null and rubricExist is true)
4348
rapportQualite.addRubriquesItem(rubrique);
4449
}
@@ -48,16 +53,9 @@ public RapportQualite transformDTOenRapportQualite(RapportQualiteDTO rapportQual
4853
return rapportQualite;
4954
}
5055

51-
private Rubrique transformRubrique(RubriqueDTO rubriqueDTO, RapportQualite rapportQualite, RequestProcessor requestProcessor) {
56+
private Rubrique transformRubrique(RubriqueDTO rubriqueDTO, RapportQualite rapportQualite) {
5257

53-
Rubrique rubrique = new Rubrique();
54-
rubrique.setId(rubriqueDTO.id());
55-
rubrique.setUri(rubriqueDTO.uri());
56-
rubrique.setIdParent(rubriqueDTO.idParent());
57-
rubrique.setType(rubriqueDTO.type());
58-
rubrique.setLabel(null);//valued later only if exists
59-
rubrique.setContenus(null);//valued later only if exists
60-
rubrique.setCodes(null);//valued later only if exists
58+
Rubrique rubrique = createRubrique(rubriqueDTO);
6159

6260
if (rubriqueDTO.titreLg1() != null && rubriqueDTO.titreLg2() != null) {
6361
List<LocalisedLabel> titre = createListLangueContenu(createLangueContenu(rubriqueDTO.titreLg1(), "fr"), createLangueContenu(rubriqueDTO.titreLg2(), "en"));
@@ -72,17 +70,17 @@ private Rubrique transformRubrique(RubriqueDTO rubriqueDTO, RapportQualite rappo
7270
rubrique = addCodeList(rubriqueDTO, rubrique, rapportQualite);
7371
break;
7472
case "RICH_TEXT":
75-
addRichText(rubriqueDTO, rubrique, rapportQualite, requestProcessor);
73+
addRichText(rubriqueDTO, rubrique, rapportQualite);
7674
break;
7775
case "TEXT":
7876
List<LocalisedLabel> label = createListLangueContenu(createLangueContenu(rubriqueDTO.labelLg1(), "fr"), createLangueContenu(rubriqueDTO.labelLg2(), "en"));
7977
rubrique.setLabel(label);
8078
break;
8179
case "GEOGRAPHY":
82-
rubrique.setTerritoire(createIdUriLabel(rubriqueDTO, rubriqueDTO.geoUri()));
80+
rubrique.setTerritoire(createUriLabel(rubriqueDTO, rubriqueDTO.geoUri()));
8381
break;
8482
case "ORGANIZATION":
85-
rubrique.setOrganisme(createIdUriLabel(rubriqueDTO, rubriqueDTO.organisationUri()));
83+
rubrique.setOrganisme(createUriLabel(rubriqueDTO, rubriqueDTO.organisationUri()));
8684
break;
8785
default:
8886
break;
@@ -92,8 +90,20 @@ private Rubrique transformRubrique(RubriqueDTO rubriqueDTO, RapportQualite rappo
9290

9391
}
9492

93+
private static Rubrique createRubrique(RubriqueDTO rubriqueDTO) {
94+
Rubrique rubrique = new Rubrique();
95+
rubrique.setId(rubriqueDTO.id());
96+
rubrique.setUri(rubriqueDTO.uri());
97+
rubrique.setIdParent(rubriqueDTO.idParent());
98+
rubrique.setType(rubriqueDTO.type());
99+
rubrique.setLabel(null);//valued only if exists
100+
rubrique.setContenus(null);//valued only if exists
101+
rubrique.setCodes(null);//valued only if exists
102+
return rubrique;
103+
}
104+
95105

96-
private IdUriLabel createIdUriLabel(RubriqueDTO rubriqueDTO, String uri) {
106+
private IdUriLabel createUriLabel(RubriqueDTO rubriqueDTO, String uri) {
97107
IdUriLabel rubriqueWithIdUriLabel = new IdUriLabel();
98108
rubriqueWithIdUriLabel.setId(rubriqueDTO.valeurSimple());
99109
rubriqueWithIdUriLabel.setUri(URI.create(uri));
@@ -112,7 +122,7 @@ private IdUriLabel createIdUriLabel(RubriqueDTO rubriqueDTO, String uri) {
112122

113123
}
114124

115-
private Rubrique addRichText(RubriqueDTO rubriqueDTO, Rubrique rubrique, RapportQualite rapportQualite, RequestProcessor requestProcessor) {
125+
private void addRichText(RubriqueDTO rubriqueDTO, Rubrique rubrique, RapportQualite rapportQualite) {
116126
Contenu contenuLg1 = new Contenu();
117127
contenuLg1.setDocuments(null);// will be valued only if a document exists
118128
if (StringUtils.isNotEmpty(rubriqueDTO.labelLg1())) {
@@ -121,34 +131,12 @@ private Rubrique addRichText(RubriqueDTO rubriqueDTO, Rubrique rubrique, Rapport
121131
contenuLg1.setTexte("");
122132
}
123133
contenuLg1.setLangue("fr");
124-
if (rubriqueDTO.hasDocLg1()) {
125-
List<DocumentDTO> rubriqueDocuments = requestProcessor.queryToFindDocuments()
126-
.with(new OperationsDocumentsRequestParametizer(rapportQualite.getId(), rubriqueDTO.id(),"fr"))
127-
.executeQuery()
128-
.listResult(DocumentDTO.class)
129-
.result();
130-
for (DocumentDTO documentDTO : rubriqueDocuments) {
131-
Document document = new Document();
132-
if (documentDTO.labelLg1() != null && documentDTO.labelLg2() != null){
133-
List<LocalisedLabel> label = createListLangueContenu(createLangueContenu(documentDTO.labelLg1(), "fr"), createLangueContenu(documentDTO.labelLg2(), "en"));
134-
document.label(label);
135-
}
136-
if (documentDTO.labelLg1() != null && documentDTO.labelLg2() == null) {
137-
LocalisedLabel labelLg1 = createLangueContenu(documentDTO.labelLg1(), "fr");
138-
List<LocalisedLabel> label = createListLangueContenu(labelLg1,null);
139-
document.label(label);
140-
}
141-
142-
document.setDateMiseAJour(documentDTO.dateMiseAJour());
143-
document.setLangue(documentDTO.langue());
144-
document.setUrl(documentDTO.url());
145-
contenuLg1.addDocumentsItem(document);
146-
}
147-
134+
if (Boolean.TRUE.equals(rubriqueDTO.hasDocLg1())) {
135+
contenuLg1.addDocumentsItem(findDocument(rapportQualite.getId(), rubriqueDTO.id(), "fr"));
148136
}
149137
rubrique.addContenusItem(contenuLg1);
150138

151-
if (StringUtils.isNotEmpty(rubriqueDTO.labelLg2())||rubriqueDTO.hasDocLg2()){
139+
if (rubriqueDTO.isDocLg2NotEmpty() && (StringUtils.isNotEmpty(rubriqueDTO.labelLg2())||rubriqueDTO.hasDocLg2())){
152140
Contenu contenuLg2 = new Contenu();
153141
contenuLg2.setDocuments(null);// will be valued only if a document exists
154142
if (StringUtils.isNotEmpty(rubriqueDTO.labelLg2())) {
@@ -157,52 +145,49 @@ private Rubrique addRichText(RubriqueDTO rubriqueDTO, Rubrique rubrique, Rapport
157145
contenuLg2.setTexte("");
158146
}
159147
contenuLg2.setLangue("en");
160-
161-
if (rubriqueDTO.hasDocLg2()) {
162-
List<DocumentDTO> rubriqueDocuments = requestProcessor.queryToFindDocuments()
163-
.with(new OperationsDocumentsRequestParametizer(rapportQualite.getId(), rubriqueDTO.id(),"en"))
164-
.executeQuery()
165-
.listResult(DocumentDTO.class)
166-
.result();
167-
for (DocumentDTO documentDTO : rubriqueDocuments) {
168-
Document document = new Document();
169-
if (documentDTO.labelLg1() != null && documentDTO.labelLg2() != null){
170-
List<LocalisedLabel> label = createListLangueContenu(createLangueContenu(documentDTO.labelLg1(), "fr"), createLangueContenu(documentDTO.labelLg2(), "en"));
171-
document.label(label);
172-
}
173-
if (documentDTO.labelLg1() != null && documentDTO.labelLg2() == null) {
174-
LocalisedLabel labelFr = createLangueContenu(documentDTO.labelLg1(), "fr");
175-
List<LocalisedLabel> label = createListLangueContenu(labelFr,null);
176-
document.label(label);
177-
}
178-
179-
document.setDateMiseAJour(documentDTO.dateMiseAJour());
180-
document.setLangue(documentDTO.langue());
181-
document.setUrl(documentDTO.url());
182-
contenuLg2.addDocumentsItem(document);
183-
}
148+
if (Boolean.TRUE.equals(rubriqueDTO.hasDocLg2())) {
149+
contenuLg2.addDocumentsItem(findDocument(rapportQualite.getId(), rubriqueDTO.id(), "en"));
184150
}
185151
rubrique.addContenusItem(contenuLg2);
186152
}
187-
return rubrique;
153+
154+
}
155+
156+
private Document findDocument(String rapportQualiteId, String rubriqueDTOId, String lang) {
157+
DocumentDTO documentDTO = this.requestProcessor.queryToFindDocuments()
158+
.with(new OperationsDocumentsRequestParametizer(rapportQualiteId, rubriqueDTOId, lang))
159+
.executeQuery()
160+
.singleResult(DocumentDTO.class)
161+
.result();
162+
Document document = new Document();
163+
if (documentDTO.labelLg1() != null && documentDTO.labelLg2() != null) {
164+
List<LocalisedLabel> label = createListLangueContenu(createLangueContenu(documentDTO.labelLg1(), "fr"), createLangueContenu(documentDTO.labelLg2(), "en"));
165+
document.label(label);
166+
}
167+
if (documentDTO.labelLg1() != null && documentDTO.labelLg2() == null) {
168+
LocalisedLabel labelsLg1 = createLangueContenu(documentDTO.labelLg1(), "fr");
169+
List<LocalisedLabel> label = createListLangueContenu(labelsLg1, null);
170+
document.label(label);
171+
}
172+
173+
document.setDateMiseAJour(documentDTO.dateMiseAJour());
174+
document.setLangue(documentDTO.langue());
175+
document.setUrl(documentDTO.url());
176+
return document;
188177
}
189178

190179
private Rubrique addCodeList (RubriqueDTO rubriqueDTO, Rubrique rubrique, RapportQualite rapportQualite) {
191180
IdUriLabel rubriqueCodeList = new IdUriLabel();
192181
rubriqueCodeList.setId(rubriqueDTO.valeurSimple());
193182
rubriqueCodeList.setUri(URI.create(rubriqueDTO.codeUri()));
194-
if (rubriqueDTO.labelObjLg1() != null && rubriqueDTO.labelObjLg2() != null) {
195-
List<LocalisedLabel> labelCodeList = createListLangueContenu(createLangueContenu(rubriqueDTO.labelObjLg1(), "fr"), createLangueContenu(rubriqueDTO.labelObjLg2(), "en"));
196-
rubriqueCodeList.setLabel(labelCodeList);
197-
}
198-
if (rubriqueDTO.labelObjLg1() != null && rubriqueDTO.labelObjLg2() == null) {
199-
LocalisedLabel labelCodeListLg1 = createLangueContenu(rubriqueDTO.labelObjLg1(), "fr");
200-
List<LocalisedLabel> label = new ArrayList<>();
201-
label.add(labelCodeListLg1);
202-
rubriqueCodeList.setLabel(label);
183+
if (rubriqueDTO.labelObjLg1() != null) {
184+
LocalisedLabel labelLg1 = createLangueContenu(rubriqueDTO.labelObjLg1(), "fr");
185+
LocalisedLabel labelLg2 = rubriqueDTO.labelObjLg2() != null ? createLangueContenu(rubriqueDTO.labelObjLg2(), "en") : null;
186+
187+
rubriqueCodeList.setLabel(createListLangueContenu(labelLg1, labelLg2));
203188
}
204189

205-
if (rapportQualite.getRubriques() != null) {//is null if the first rubrique is a CODE_LIST type rubrique
190+
if (rapportQualite.getRubriques() != null) {//is null if the first rubric is a CODE_LIST type rubric
206191

207192
boolean rubricExist = rapportQualite.getRubriques().stream()
208193
.filter(Objects::nonNull) // We keep only not null rubrics, otherwise NullPointer Exception when r.getId()

magma-diffusion-impl/src/main/java/fr/insee/rmes/magma/diffusion/utils/RubriqueDTO.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,19 @@ public record RubriqueDTO (
1313
String labelLg2,
1414
String codeUri,
1515
String organisationUri,
16-
boolean hasDocLg1,
17-
boolean hasDocLg2,
16+
Boolean hasDocLg1,
17+
Boolean hasDocLg2,
1818
String labelObjLg1,
1919
String labelObjLg2,
2020
String maxOccurs,
2121
String geoUri
2222
){
2323

24+
25+
public boolean isDocLg2NotEmpty() {
26+
return hasDocLg2() != null;
27+
}
28+
2429
public RubriqueDTO withLabelLg1(String labelLg1) {
2530
return new RubriqueDTO(id, uri, idParent, type, titreLg1, titreLg2, valeurSimple, labelLg1, labelLg2, codeUri, organisationUri,
2631
hasDocLg1, hasDocLg2, labelObjLg1, labelObjLg2, maxOccurs, geoUri);

magma-diffusion-impl/src/test/java/fr/insee/rmes/magma/diffusion/api/testcontainers/queries/OperationsQueriesTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import org.junit.jupiter.api.Tag;
66
import org.junit.jupiter.api.Test;
77
import org.springframework.beans.factory.annotation.Autowired;
8-
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
8+
import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc;
99
import org.springframework.boot.test.context.SpringBootTest;
1010
import org.springframework.http.MediaType;
1111
import org.springframework.test.web.servlet.MockMvc;

magma-diffusion-impl/src/test/java/fr/insee/rmes/magma/diffusion/api/testcontainers/queries/RapportQualiteServiceImplTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public class RapportQualiteServiceImplTest {
2121

2222
@BeforeEach
2323
void setUp() {
24-
service = new RapportQualiteServiceImpl();
24+
service = new RapportQualiteServiceImpl(requestProcessor);
2525
}
2626

2727
@Test

0 commit comments

Comments
 (0)