2020@ Service
2121public 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()
0 commit comments