Tony CHEMIT pushed to branch feature/issue_avdth_dcp at ultreiaio / ird-observe Commits: 296bd417 by Tony Chemit at 2022-12-12T14:11:35+01:00 Une BD sql.gz qui génère une corruption de données systématique - Notre espoir de comprendre le problème ? - Closes #2571 - - - - - 5a4d1662 by Tony Chemit at 2022-12-12T14:57:16+01:00 Report - correction de certain totaux (exprimé en int au lieu d'en float pour les poids) + revue de certains libellés - - - - - d177f9ff by Tony Chemit at 2022-12-12T15:05:07+01:00 Report - suppression des reports psObservationTargetCatchByAssociation et psObservationTargetDiscardedByAssociation - - - - - b21143bc by Tony Chemit at 2022-12-12T15:06:18+01:00 Do be continued... - - - - - 15 changed files: - core/api/dto/src/main/resources/observe-reports.properties - core/persistence/resources/src/main/java/fr/ird/observe/persistence/avdth/data/ImportReferentialContext.java - core/persistence/resources/src/main/java/fr/ird/observe/persistence/avdth/data/logbook/FloatingObjectReader.java - − core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationTargetCatchByAssociationReportFixture.java - − core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationTargetDiscardedByAssociationReportFixture.java - core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationCatchTotalCountByGroupPerReasonForDiscard.properties - core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationCatchTotalCountByGroupPerSpeciesFate.properties - core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationCatchWeightByGroupPerReasonForDiscard.properties - core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationCatchWeightByGroupPerSpeciesFate.properties - − core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationTargetCatchByAssociation.properties - − core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationTargetDiscardedByAssociation.properties - src/site/markdown/avdth/logbook.md - toolkit/persistence/src/main/java/org/nuiton/topia/service/migration/TopiaMigrationServiceContext.java - toolkit/persistence/src/main/java/org/nuiton/topia/service/migration/TopiaMigrationServiceImpl.java - toolkit/persistence/src/main/java/org/nuiton/topia/service/migration/version/MigrationServiceSqlHelper.java Changes: ===================================== core/api/dto/src/main/resources/observe-reports.properties ===================================== @@ -827,274 +827,6 @@ report.psObservationCatchTotalCountByGroupAndSpeciesFateDiscardPerAssociation.re Group by e report.psObservationCatchTotalCountByGroupAndSpeciesFateDiscardPerAssociation.request.5.repeat=species|column ################################################################################ -## Captures thons selon le type d'association -################################################################################ -report.psObservationTargetCatchByAssociation.modelType=PS -report.psObservationTargetCatchByAssociation.name=Observations - Captures de thons selon le type d’association (en t) -report.psObservationTargetCatchByAssociation.description=Afficher la répartitions des captures de thons selon le type d'association -report.psObservationTargetCatchByAssociation.columns=YFT, SKJ, BET, LTA, FRI, Autres, Total -report.psObservationTargetCatchByAssociation.rows=BL sans baleine, BL avec baleine, BO avec requin-baleine, BO sans requin-baleine, Total -report.psObservationTargetCatchByAssociation.operations.1=SumRow -report.psObservationTargetCatchByAssociation.operations.2=SumColumn -# ligne 1 -report.psObservationTargetCatchByAssociation.request.1=0,0|row|\ - Select \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685477#0.8024257002747615' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685477#0.3846921632590058' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685477#0.8024257002747615' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685477#0.3846921632590058' Then 0.0 \ - Else ct.catchWeight End) \ - From TripImpl m \ - Join m.routeObs r \ - Join r.activity a \ - Join a.set c \ - with c.schoolType.id = 'fr.ird.referential.ps.common.SchoolType#0#2' \ - Join c.catches ct \ - Join ct.speciesFate sf with sf.discard = FALSE, \ - ObservedSystemImpl os \ - Where \ - m.id In :tripId \ - and os.topiaId = 'fr.ird.referential.ps.common.ObservedSystem#1239832686428#0.9395222812356602' \ - and os not in elements(a.observedSystem) -# ligne 2 -report.psObservationTargetCatchByAssociation.request.7=0,1|row|\ - Select \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685477#0.8024257002747615' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685477#0.3846921632590058' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685477#0.8024257002747615' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685477#0.3846921632590058' Then 0.0 \ - Else ct.catchWeight End) \ - From TripImpl m \ - Join m.routeObs r \ - Join r.activity a \ - Join a.set c \ - with c.schoolType.id = 'fr.ird.referential.ps.common.SchoolType#0#2' \ - Join c.catches ct \ - Join ct.speciesFate sf with sf.discard = FALSE, \ - ObservedSystemImpl os \ - Where \ - m.id In :tripId \ - and os.topiaId = 'fr.ird.referential.ps.common.ObservedSystem#1239832686428#0.9395222812356602' \ - and os in elements(a.observedSystem) -# ligne 3 -report.psObservationTargetCatchByAssociation.request.13=0,2|row|\ - Select \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685477#0.8024257002747615' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685477#0.3846921632590058' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685477#0.8024257002747615' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685477#0.3846921632590058' Then 0.0 \ - Else ct.catchWeight End) \ - From TripImpl m \ - Join m.routeObs r \ - Join r.activity a \ - Join a.set c \ - with c.schoolType.id = 'fr.ird.referential.ps.common.SchoolType#0#1' \ - Join c.catches ct \ - Join ct.speciesFate sf with sf.discard = FALSE, \ - ObservedSystemImpl os \ - Where \ - m.id In :tripId \ - and os.topiaId = 'fr.ird.referential.ps.common.ObservedSystem#1239832686428#0.9217864901728908' \ - and os in elements(a.observedSystem) -# ligne 4 -report.psObservationTargetCatchByAssociation.request.19=0,3|row|\ - Select \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685477#0.8024257002747615' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685477#0.3846921632590058' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685477#0.8024257002747615' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685477#0.3846921632590058' Then 0.0 \ - Else ct.catchWeight End) \ - From TripImpl m \ - Join m.routeObs r \ - Join r.activity a \ - Join a.set c \ - with c.schoolType.id = 'fr.ird.referential.ps.common.SchoolType#0#1' \ - Join c.catches ct \ - Join ct.speciesFate sf with sf.discard = FALSE, \ - ObservedSystemImpl os \ - Where \ - m.id In :tripId \ - and os.topiaId = 'fr.ird.referential.ps.common.ObservedSystem#1239832686428#0.9217864901728908' \ - and os not in elements(a.observedSystem) -################################################################################ -## Rejets thons selon le type d'association -################################################################################ -report.psObservationTargetDiscardedByAssociation.modelType=PS -report.psObservationTargetDiscardedByAssociation.name=Observations - Rejets de thons selon le type d’association (en t) -report.psObservationTargetDiscardedByAssociation.description=Afficher la répartitions des rejets de thons selon le type d'association -report.psObservationTargetDiscardedByAssociation.columns=YFT, SKJ, BET, LTA, FRI, Autres, Total -report.psObservationTargetDiscardedByAssociation.rows=BL sans baleine, BL avec baleine, BO avec requin-baleine, BO sans requin-baleine, Total -report.psObservationTargetDiscardedByAssociation.operations.1=SumRow -report.psObservationTargetDiscardedByAssociation.operations.2=SumColumn -# ligne 1 -report.psObservationTargetDiscardedByAssociation.request.1=0,0|row|\ - Select \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685477#0.8024257002747615' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685477#0.3846921632590058' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685477#0.8024257002747615' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685477#0.3846921632590058' Then 0.0 \ - Else ct.catchWeight End) \ - From TripImpl m \ - Join m.routeObs r \ - Join r.activity a \ - Join a.set c \ - with c.schoolType.id = 'fr.ird.referential.ps.common.SchoolType#0#2' \ - Join c.catches ct \ - Join ct.speciesFate sf with sf.discard = TRUE, \ - ObservedSystemImpl os \ - Where \ - m.id In :tripId \ - and os.topiaId = 'fr.ird.referential.ps.common.ObservedSystem#1239832686428#0.9395222812356602' \ - and os not in elements(a.observedSystem) -# ligne 2 -report.psObservationTargetDiscardedByAssociation.request.7=0,1|row|\ - Select \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685477#0.8024257002747615' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685477#0.3846921632590058' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685477#0.8024257002747615' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685477#0.3846921632590058' Then 0.0 \ - Else ct.catchWeight End) \ - From TripImpl m \ - Join m.routeObs r \ - Join r.activity a \ - Join a.set c \ - with c.schoolType.id = 'fr.ird.referential.ps.common.SchoolType#0#2' \ - Join c.catches ct \ - Join ct.speciesFate sf with sf.discard = TRUE, \ - ObservedSystemImpl os \ - Where \ - m.id In :tripId \ - and os.topiaId = 'fr.ird.referential.ps.common.ObservedSystem#1239832686428#0.9395222812356602' \ - and os in elements(a.observedSystem) -# ligne 3 -report.psObservationTargetDiscardedByAssociation.request.13=0,2|row|\ - Select \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685477#0.8024257002747615' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685477#0.3846921632590058' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685477#0.8024257002747615' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685477#0.3846921632590058' Then 0.0 \ - Else ct.catchWeight End) \ - From TripImpl m \ - Join m.routeObs r \ - Join r.activity a \ - Join a.set c \ - with c.schoolType.id = 'fr.ird.referential.ps.common.SchoolType#0#1' \ - Join c.catches ct \ - Join ct.speciesFate sf with sf.discard = TRUE, \ - ObservedSystemImpl os \ - Where \ - m.id In :tripId \ - and os.topiaId = 'fr.ird.referential.ps.common.ObservedSystem#1239832686428#0.9217864901728908' \ - and os in elements(a.observedSystem) -# ligne 4 -report.psObservationTargetDiscardedByAssociation.request.19=0,3|row|\ - Select \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685477#0.8024257002747615' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685477#0.3846921632590058' Then ct.catchWeight \ - Else 0.0 End), \ - Sum(CASE ct.species.topiaId When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685477#0.8024257002747615' Then 0.0 \ - When 'fr.ird.referential.common.Species#1239832685477#0.3846921632590058' Then 0.0 \ - Else ct.catchWeight End) \ - From TripImpl m \ - Join m.routeObs r \ - Join r.activity a \ - Join a.set c \ - with c.schoolType.id = 'fr.ird.referential.ps.common.SchoolType#0#1' \ - Join c.catches ct \ - Join ct.speciesFate sf with sf.discard = TRUE, \ - ObservedSystemImpl os \ - Where \ - m.id In :tripId \ - and os.topiaId = 'fr.ird.referential.ps.common.ObservedSystem#1239832686428#0.9217864901728908' \ - and os not in elements(a.observedSystem) -################################################################################ ## Captures observées ################################################################################ report.psObservationCatch.modelType=PS @@ -1151,7 +883,7 @@ report.psObservationCatch.request.3.repeat=speciesId|column ################################################################################ report.psObservationCatchTotalCountByGroupPerSpeciesFate.modelType=PS report.psObservationCatchTotalCountByGroupPerSpeciesFate.name=Observations - Dénombrement des captures par type de banc et devenir, filtrés par groupe -report.psObservationCatchTotalCountByGroupPerSpeciesFate.description=Afficher les nombres de captures par groupe d'espèce selon le type de banc et le devenir, filtré par groupe +report.psObservationCatchTotalCountByGroupPerSpeciesFate.description=Afficher les nombres de captures selon le type de banc et le devenir, filtré par groupe report.psObservationCatchTotalCountByGroupPerSpeciesFate.variable.speciesGroup=fr.ird.observe.dto.referential.common.SpeciesGroupDto|\ Select distinct sg \ From TripImpl t \ @@ -1214,8 +946,8 @@ report.psObservationCatchTotalCountByGroupPerSpeciesFate.operations.4=SumIntColu ## Poids des captures par groupe d'espèces ################################################################################ report.psObservationCatchWeightByGroupPerSpeciesFate.modelType=PS -report.psObservationCatchWeightByGroupPerSpeciesFate.name=Observations - Poids des captures par type de banc et devenir, filtrés par groupe -report.psObservationCatchWeightByGroupPerSpeciesFate.description=Afficher le poids de captures par groupe d'espèce selon le type de banc et le devenir, filtrés par groupe +report.psObservationCatchWeightByGroupPerSpeciesFate.name=Observations - Poids des captures par type de banc et devenir, filtrés par groupe (en t) +report.psObservationCatchWeightByGroupPerSpeciesFate.description=Afficher le poids de captures selon le type de banc et le devenir, filtrés par groupe (en t) report.psObservationCatchWeightByGroupPerSpeciesFate.variable.speciesGroup=fr.ird.observe.dto.referential.common.SpeciesGroupDto|\ Select distinct sg \ From TripImpl t \ @@ -1272,13 +1004,13 @@ Where m.id In :tripId \ Group by s, sf \ Order By s.homeId report.psObservationCatchWeightByGroupPerSpeciesFate.operations.2=ComputeDynamicHeader:Espèce,Total BL,Total BO|speciesFate -report.psObservationCatchWeightByGroupPerSpeciesFate.operations.3=SumIntRow:1|3 -report.psObservationCatchWeightByGroupPerSpeciesFate.operations.4=SumIntColumn:1|1 +report.psObservationCatchWeightByGroupPerSpeciesFate.operations.3=SumRow:1|3 +report.psObservationCatchWeightByGroupPerSpeciesFate.operations.4=SumColumn:1|1 ################################################################################ ## Poids des captures par groupe d'espèces, type de banc et et raison de rejet ################################################################################ report.psObservationCatchWeightByGroupPerReasonForDiscard.modelType=PS -report.psObservationCatchWeightByGroupPerReasonForDiscard.name=Observations - Poids des rejets par type de banc et raison de rejet, filtrés par groupe +report.psObservationCatchWeightByGroupPerReasonForDiscard.name=Observations - Poids des rejets par type de banc et raison de rejet, filtrés par groupe (en t) report.psObservationCatchWeightByGroupPerReasonForDiscard.description=Afficher le poids de captures rejetées par espèce selon le type de banc et type de rejet, filtrés par groupe report.psObservationCatchWeightByGroupPerReasonForDiscard.variable.speciesGroup=fr.ird.observe.dto.referential.common.SpeciesGroupDto|\ Select distinct sg \ @@ -1336,14 +1068,14 @@ Where m.id In :tripId \ Group by s, sf \ Order By s.homeId report.psObservationCatchWeightByGroupPerReasonForDiscard.operations.2=ComputeDynamicHeader:Espèce,Total BL,Total BO|reasonForDiscard -report.psObservationCatchWeightByGroupPerReasonForDiscard.operations.3=SumIntRow:1|3 -report.psObservationCatchWeightByGroupPerReasonForDiscard.operations.4=SumIntColumn:1|1 +report.psObservationCatchWeightByGroupPerReasonForDiscard.operations.3=SumRow:1|3 +report.psObservationCatchWeightByGroupPerReasonForDiscard.operations.4=SumColumn:1|1 ################################################################################ ## Dénombrement des rejets par groupe d'espèces, type de banc et raison de rejet ################################################################################ report.psObservationCatchTotalCountByGroupPerReasonForDiscard.modelType=PS -report.psObservationCatchTotalCountByGroupPerReasonForDiscard.name=Observations - Dénombrement des rejets par type de banc et raison de rejet, filtrés par groupe -report.psObservationCatchTotalCountByGroupPerReasonForDiscard.description=Afficher le nombre de captures rejetées par espèce selon le type de banc et le type de rejet, filtrés par groupe +report.psObservationCatchTotalCountByGroupPerReasonForDiscard.name=Observations - Dénombrement des rejets par type de banc et raison de rejet, filtrés par groupe (en t) +report.psObservationCatchTotalCountByGroupPerReasonForDiscard.description=Afficher le nombre de captures rejetées par espèce selon le type de banc et le type de rejet, filtrés par groupe (en t) report.psObservationCatchTotalCountByGroupPerReasonForDiscard.variable.speciesGroup=fr.ird.observe.dto.referential.common.SpeciesGroupDto|\ Select distinct sg \ From TripImpl t \ ===================================== core/persistence/resources/src/main/java/fr/ird/observe/persistence/avdth/data/ImportReferentialContext.java ===================================== @@ -58,7 +58,6 @@ import fr.ird.observe.entities.referential.ps.logbook.SetSuccessStatus; import fr.ird.observe.entities.referential.ps.logbook.WellContentStatus; import fr.ird.observe.entities.referential.ps.logbook.WellSamplingConformity; import fr.ird.observe.entities.referential.ps.logbook.WellSamplingStatus; -import fr.ird.observe.persistence.avdth.data.logbook.FloatingObjectReader; import fr.ird.observe.persistence.avdth.data.logbook.WellPlanReader; import fr.ird.observe.persistence.avdth.referential.AvdthReferentialImportResult; import fr.ird.observe.persistence.avdth.referential.SpeciesCache; @@ -80,10 +79,8 @@ import java.util.function.Consumer; * @author Tony Chemit - dev@tchemit.fr * @since 9.0.0 */ -@SuppressWarnings("SpellCheckingInspection") public class ImportReferentialContext { - private Map<String, WeightCategory> landingCategories; private Map<String, Destination> destinations; private Map<String, WeightCategory> wellCategories; @@ -127,6 +124,7 @@ public class ImportReferentialContext { private ObjectMaterial objectMaterialDFAD; private ObjectMaterial objectMaterialALOG; private ObjectMaterial objectMaterialAFAD; + private ObjectMaterial objectMaterialBiodegradable; private ObjectMaterial objectMaterialAlone; private ObjectMaterial objectMaterialLOG; private ObjectMaterial objectMaterialFALOG; @@ -228,6 +226,7 @@ public class ImportReferentialContext { objectMaterialHALOG = objectMaterial.get("fr.ird.referential.ps.common.ObjectMaterial#0#0.67"); objectMaterialVNLOG = objectMaterial.get("fr.ird.referential.ps.common.ObjectMaterial#0#0.52"); objectMaterialAlone = objectMaterial.get("fr.ird.referential.ps.common.ObjectMaterial#1561561977652#0.5876332198776647"); + objectMaterialBiodegradable = objectMaterial.get("fr.ird.referential.ps.common.ObjectMaterial#0#0.69"); // catch catchCategories = new TreeMap<>(); @@ -333,6 +332,26 @@ public class ImportReferentialContext { return objectMaterialAFAD; } + public ObjectMaterial getObjectMaterialLOG() { + return objectMaterialLOG; + } + + public ObjectMaterial getObjectMaterialFALOG() { + return objectMaterialFALOG; + } + + public ObjectMaterial getObjectMaterialHALOG() { + return objectMaterialHALOG; + } + + public ObjectMaterial getObjectMaterialVNLOG() { + return objectMaterialVNLOG; + } + + public ObjectMaterial getObjectMaterialBiodegradable() { + return objectMaterialBiodegradable; + } + public ObjectMaterial getObjectMaterialAlone() { return objectMaterialAlone; } @@ -529,79 +548,29 @@ public class ImportReferentialContext { entity.addObservedSystem(getObservedSystem("102")); } - public ObjectOperation getObjectOperationByVesselActivityCode(String vesselActivityCode) { - String objectOperationCode = FloatingObjectReader.DCP_OBJECT_OPERATION_CODE_MAPPING.get(vesselActivityCode); - if (objectOperationCode == null) { - return null; - } + public ObjectOperation getObjectOperation(String objectOperationCode) { return objectOperation.get(objectOperationCode); } - public TransmittingBuoyOperation getTransmittingBuoyOperationByVesselActivityCode(String vesselActivityCode) { - String transmittingBuoyTypeCode = FloatingObjectReader.TRANSMITTING_BUOY_OPERATION_CODE_MAPPING.get(vesselActivityCode); + public TransmittingBuoyOperation getTransmittingBuoyOperation(String transmittingBuoyTypeCode) { if (transmittingBuoyTypeCode == null) { return null; } return transmittingBuoyOperation.get(transmittingBuoyTypeCode); } - public TransmittingBuoyType getTransmittingBuoyTypeByBuoyTypeCode(String buoyTypeCode) { - String transmittingBuoyTypeCode = FloatingObjectReader.TRANSMITTING_BUOY_TYPE_CODE_MAPPING.get(buoyTypeCode); - if (transmittingBuoyTypeCode == null) { - transmittingBuoyTypeCode = "999"; - } - TransmittingBuoyType transmittingBuoyType = this.transmittingBuoyType.get(transmittingBuoyTypeCode); - return Objects.requireNonNull(transmittingBuoyType, String.format("Can't find transmittingBuoyType with code: %s", buoyTypeCode)); + public TransmittingBuoyType getTransmittingBuoyType(String transmittingBuoyTypeCode) { + TransmittingBuoyType result = transmittingBuoyType.get(transmittingBuoyTypeCode); + return Objects.requireNonNull(result, String.format("Can't find result with code: %s", transmittingBuoyTypeCode)); } - public TransmittingBuoyOwnership getTransmittingBuoyOwnership(String buoyOwnershipCode) { - if (buoyOwnershipCode == null) { - return null; - } - String transmittingBuoyOwnershipCode = FloatingObjectReader.TRANSMITTING_BUOY_OWNERSHIP_CODE_MAPPING.get(buoyOwnershipCode); + public TransmittingBuoyOwnership getTransmittingBuoyOwnership(String transmittingBuoyOwnershipCode) { if (transmittingBuoyOwnershipCode == null) { return null; } return transmittingBuoyOwnership.get(transmittingBuoyOwnershipCode); } - public ObservedSystem getObservedSystem(String objectTypeCode, String buoyTypeCode) { - if (objectTypeCode.equals("999")) { - if (buoyTypeCode.equals("999")) { - return getObservedSystem0(); - } - return getObservedSystem20(); - } - String observedSystemCode = FloatingObjectReader.OBSERVED_SYSTEM_CODE_MAPPING.get(objectTypeCode); - return getObservedSystem(observedSystemCode, false); - } - - /** - * To get objectMaterial id associated by a DCP from avdth ACTIVITE.C_TYP_OBJET code. - * - * @param objectTypeCode ACTIVITE.C_TYP_OBJET - * @return material or null - */ - public ObjectMaterial getObjectMaterialByObjectTypeCode(String objectTypeCode) { - switch (objectTypeCode) { - case "1": - return objectMaterialAFAD; - case "2": - return objectMaterialDFAD; - case "3": - return objectMaterialLOG; - case "9": - return objectMaterialFOB; - case "10": - return objectMaterialFALOG; - case "11": - return objectMaterialHALOG; - case "13": - return objectMaterialVNLOG; - } - return null; - } - public WeightCategory getWellWeightCategory(String weightCategoryCode) { String categoryCode = "W-" + weightCategoryCode; WeightCategory weightCategory = wellCategories.get(categoryCode); @@ -611,4 +580,5 @@ public class ImportReferentialContext { public VesselActivity getVesselActivity6() { return vesselActivity6; } + } ===================================== core/persistence/resources/src/main/java/fr/ird/observe/persistence/avdth/data/logbook/FloatingObjectReader.java ===================================== @@ -23,6 +23,7 @@ package fr.ird.observe.persistence.avdth.data.logbook; */ import com.google.common.collect.ImmutableMap; +import fr.ird.observe.entities.data.ps.logbook.Activity; import fr.ird.observe.entities.data.ps.logbook.FloatingObject; import fr.ird.observe.entities.data.ps.logbook.FloatingObjectPart; import fr.ird.observe.entities.data.ps.logbook.TransmittingBuoy; @@ -232,54 +233,79 @@ public class FloatingObjectReader extends DataReader<FloatingObject> { @Override public FloatingObject read(ImportDataContext dataContext, ResultSet resultSet) throws SQLException { - String vesselActivityCode = resultSet.getString(13); - VesselActivity vesselActivity = dataContext.getVesselActivity(vesselActivityCode); + // Get the current activity where to add the optional floating object + Activity activity = dataContext.getActivity(); + + // Get his vessel activity + VesselActivity vesselActivity = activity.getVesselActivity(); + + // Avdth observed system codes associated to the current activity (need them to compute fill floating object) Set<String> observedSystemCodes = dataContext.getObservedSystemCodes(); - if (!Objects.equals(vesselActivity.getCode(), "13")) { - boolean noDcpInObservedSystems = observedSystemCodes.stream().noneMatch(OBSERVED_SYTEM_CODES_WITH_DCP::contains); - if (noDcpInObservedSystems) { - reset(dataContext); - return null; - } - } - FloatingObject entity = newEntity(FloatingObject.SPI); + // We need to get the original vessel activity code from AVDTH (to compute some mapping) + String vesselActivityCode = resultSet.getString(13); - ObjectOperation objectOperation = dataContext.getObjectOperationByVesselActivityCode(vesselActivityCode); - entity.setObjectOperation(Objects.requireNonNull(objectOperation, String.format("Can't find objectOperation with code: %s", vesselActivityCode))); - boolean addCoordinate = "11".equals(objectOperation.getCode()); - boolean whenArriving = WHEN_ARRIVING_CODE.contains(vesselActivityCode); - boolean whenLeaving = WHEN_LEAVING_CODE.contains(vesselActivityCode); + // Is the floating object can be created by the observed systems? + boolean floatingObjectCreatedByObservedSystem = observedSystemCodes.stream().anyMatch(OBSERVED_SYTEM_CODES_WITH_DCP::contains); + + // Is the current vessel activity accept to create Floating object? + boolean vesselActivityAllowFad = vesselActivity.isAllowFad(); + + // Get object type code String objectTypeCode = resultSet.getString(28); if (objectTypeCode == null) { //FIXME should fail ? objectTypeCode = "999"; } - //FIXME 29 - F_DCP_ECO -// int dcpEcoCode = resultSet.getInt(29); + + // Is floating object exists in avdth? + boolean floatingObjectExistsInAvdth = !objectTypeCode.equals("999"); + //FIXME If objectTypeCode = 999, this means we can not create Floating object? + + if (!vesselActivityAllowFad && !floatingObjectCreatedByObservedSystem) { + // do not create the floating object + reset(dataContext); + return null; + } + + FloatingObject entity = newEntity(FloatingObject.SPI); + + ObjectOperation objectOperation = getObjectOperationByVesselActivityCode(dataContext, vesselActivityCode); + entity.setObjectOperation(Objects.requireNonNull(objectOperation, String.format("Can't find objectOperation with ACTIVITE.C_OPERA: %s", vesselActivityCode))); + boolean addCoordinate = "11".equals(objectOperation.getCode()); + boolean whenArriving = WHEN_ARRIVING_CODE.contains(vesselActivityCode); + boolean whenLeaving = WHEN_LEAVING_CODE.contains(vesselActivityCode); + + Object dcpEcoCode = resultSet.getObject(29); String buoyOwnershipCode = resultSet.getString(30); String buoyTypeCode = resultSet.getString(31); if (buoyTypeCode == null) { //FIXME should fail? buoyTypeCode = "999"; } + // avdth data has a buoy + boolean willCreateBuoy = !"999".equals(buoyTypeCode); + String buoyId = resultSet.getString(32); String dcpWeight = resultSet.getString(33); if (dcpWeight != null) { //FIXME Check if ok entity.setComment(String.format("ACTIVITE.POIDS_ESTIM_DCP value from avdth: %s", dcpWeight)); } - ObservedSystem observedSystem = dataContext.getObservedSystem(objectTypeCode, buoyTypeCode); + ObservedSystem observedSystem = getObservedSystem(dataContext, objectTypeCode, buoyTypeCode); if (observedSystem != null) { - dataContext.getActivity().addObservedSystem(observedSystem); + activity.addObservedSystem(observedSystem); } - // avdth data has a buoy - boolean willCreateBuoy = !"999".equals(buoyTypeCode); + // to add default material if there is a declared buoy and no object material created by ObservedSystem boolean addDefaultObjectMaterialOnUnknownObjectType = true; // should create a buoy from ObservedSystem boolean addBuoyFromObservedSystem = false; Set<String> objectMaterialUsed = new TreeSet<>(); + if (!floatingObjectCreatedByObservedSystem && dcpEcoCode != null && Objects.equals(2, dcpEcoCode)) { + // add material 4-1 (Biodegradable materials) + addObjectMaterial(objectMaterialUsed, dataContext.getObjectMaterialBiodegradable(), whenArriving, whenLeaving, entity); + } if (observedSystemCodes.contains("20")) { // add ObjectMaterial FOB addObjectMaterial(objectMaterialUsed, dataContext.getObjectMaterialFOB(), whenArriving, whenLeaving, entity); @@ -316,25 +342,25 @@ public class FloatingObjectReader extends DataReader<FloatingObject> { } } else { // simple mapping - ObjectMaterial objectMaterial1 = dataContext.getObjectMaterialByObjectTypeCode(objectTypeCode); + ObjectMaterial objectMaterial1 = getObjectMaterialByObjectTypeCode(dataContext, objectTypeCode); if (objectMaterial1 != null) { addObjectMaterial(objectMaterialUsed, objectMaterial1, whenArriving, whenLeaving, entity); } } if (willCreateBuoy) { // only add buoy if buoy type known - TransmittingBuoyType transmittingBuoyType = dataContext.getTransmittingBuoyTypeByBuoyTypeCode(buoyTypeCode); - TransmittingBuoyOperation transmittingBuoyOperation = dataContext.getTransmittingBuoyOperationByVesselActivityCode(vesselActivityCode); + TransmittingBuoyType transmittingBuoyType = getTransmittingBuoyTypeByBuoyTypeCode(dataContext, buoyTypeCode); + TransmittingBuoyOperation transmittingBuoyOperation = getTransmittingBuoyOperationByVesselActivityCode(dataContext, vesselActivityCode); if (transmittingBuoyOperation != null) { TransmittingBuoy transmittingBuoy = newEntity(TransmittingBuoy.SPI, transmittingBuoyCount); transmittingBuoy.setTransmittingBuoyOperation(transmittingBuoyOperation); transmittingBuoy.setTransmittingBuoyType(transmittingBuoyType); transmittingBuoy.setCode(buoyId); if (addCoordinate) { - transmittingBuoy.setLatitude(dataContext.getActivity().getLatitude()); - transmittingBuoy.setLongitude(dataContext.getActivity().getLongitude()); + transmittingBuoy.setLatitude(activity.getLatitude()); + transmittingBuoy.setLongitude(activity.getLongitude()); } - TransmittingBuoyOwnership transmittingBuoyOwnership = dataContext.getTransmittingBuoyOwnership(buoyOwnershipCode); + TransmittingBuoyOwnership transmittingBuoyOwnership = getTransmittingBuoyOwnership(dataContext, buoyOwnershipCode); transmittingBuoy.setTransmittingBuoyOwnership(transmittingBuoyOwnership); entity.addTransmittingBuoy(transmittingBuoy); } @@ -380,4 +406,74 @@ public class FloatingObjectReader extends DataReader<FloatingObject> { return floatingObjectPartCount.intValue(); } + private ObjectOperation getObjectOperationByVesselActivityCode(ImportDataContext dataContext, String vesselActivityCode) { + String objectOperationCode = DCP_OBJECT_OPERATION_CODE_MAPPING.get(vesselActivityCode); + return dataContext.getObjectOperation(Objects.requireNonNull(objectOperationCode, String.format("Can't find objectOperation with ACTIVITE.C_OPERA: %s", vesselActivityCode))); + } + + private ObservedSystem getObservedSystem(ImportDataContext dataContext,String objectTypeCode, String buoyTypeCode) { + if (objectTypeCode.equals("999")) { + if (buoyTypeCode.equals("999")) { + return dataContext.getObservedSystem0(); + } + return dataContext.getObservedSystem20(); + } + String observedSystemCode = OBSERVED_SYSTEM_CODE_MAPPING.get(objectTypeCode); + return dataContext.getObservedSystem(observedSystemCode, false); + } + + private TransmittingBuoyOwnership getTransmittingBuoyOwnership(ImportDataContext dataContext,String buoyOwnershipCode) { + if (buoyOwnershipCode == null) { + return null; + } + String transmittingBuoyOwnershipCode = TRANSMITTING_BUOY_OWNERSHIP_CODE_MAPPING.get(buoyOwnershipCode); + if (transmittingBuoyOwnershipCode == null) { + return null; + } + return dataContext.getTransmittingBuoyOwnership(transmittingBuoyOwnershipCode); + } + + private TransmittingBuoyOperation getTransmittingBuoyOperationByVesselActivityCode(ImportDataContext dataContext,String vesselActivityCode) { + String transmittingBuoyTypeCode = TRANSMITTING_BUOY_OPERATION_CODE_MAPPING.get(vesselActivityCode); + if (transmittingBuoyTypeCode == null) { + return null; + } + return dataContext.getTransmittingBuoyOperation(transmittingBuoyTypeCode); + } + + + private TransmittingBuoyType getTransmittingBuoyTypeByBuoyTypeCode(ImportDataContext dataContext,String buoyTypeCode) { + String transmittingBuoyTypeCode = TRANSMITTING_BUOY_TYPE_CODE_MAPPING.get(buoyTypeCode); + if (transmittingBuoyTypeCode == null) { + transmittingBuoyTypeCode = "999"; + } + TransmittingBuoyType transmittingBuoyType = dataContext.getTransmittingBuoyType(transmittingBuoyTypeCode); + return Objects.requireNonNull(transmittingBuoyType, String.format("Can't find transmittingBuoyType with code: %s", buoyTypeCode)); + } + + /** + * To get objectMaterial id associated by a DCP from avdth ACTIVITE.C_TYP_OBJET code. + * + * @param objectTypeCode ACTIVITE.C_TYP_OBJET + * @return material or null + */ + private ObjectMaterial getObjectMaterialByObjectTypeCode(ImportDataContext dataContext,String objectTypeCode) { + switch (objectTypeCode) { + case "1": + return dataContext.getObjectMaterialAFAD(); + case "2": + return dataContext.getObjectMaterialDFAD(); + case "3": + return dataContext.getObjectMaterialLOG(); + case "9": + return dataContext.getObjectMaterialFOB(); + case "10": + return dataContext.getObjectMaterialFALOG(); + case "11": + return dataContext.getObjectMaterialHALOG(); + case "13": + return dataContext.getObjectMaterialVNLOG(); + } + return null; + } } ===================================== core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationTargetCatchByAssociationReportFixture.java deleted ===================================== @@ -1,49 +0,0 @@ -/* - * #%L - * ObServe Core :: Services :: Test - * %% - * Copyright (C) 2008 - 2022 IRD, Ultreia.io - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -package fr.ird.observe.services.service.report.ps; - -import com.google.auto.service.AutoService; -import fr.ird.observe.dto.report.Report; -import fr.ird.observe.dto.report.ReportRequest; -import fr.ird.observe.services.service.ReportFixture; - -import java.util.Iterator; - -/** - * Test le report {@code targetCatchByAssociation}. - * - * @author Tony Chemit - dev@tchemit.fr - * @since 1.9 - */ -@AutoService(ReportFixture.class) -public class PsObservationTargetCatchByAssociationReportFixture extends ReportFixture { - - @Override - public void assertSyntax(Report report) { - super.assertSyntax(report); - Iterator<ReportRequest> requests = getRequestIterator(report); - assertReportRequestDimension(requests, ReportRequest.RequestLayout.row, 0, 0); - assertReportRequestDimension(requests, ReportRequest.RequestLayout.row, 0, 1); - assertReportRequestDimension(requests, ReportRequest.RequestLayout.row, 0, 2); - assertReportRequestDimension(requests, ReportRequest.RequestLayout.row, 0, 3); - } -} ===================================== core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationTargetDiscardedByAssociationReportFixture.java deleted ===================================== @@ -1,49 +0,0 @@ -/* - * #%L - * ObServe Core :: Services :: Test - * %% - * Copyright (C) 2008 - 2022 IRD, Ultreia.io - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -package fr.ird.observe.services.service.report.ps; - -import com.google.auto.service.AutoService; -import fr.ird.observe.dto.report.Report; -import fr.ird.observe.dto.report.ReportRequest; -import fr.ird.observe.services.service.ReportFixture; - -import java.util.Iterator; - -/** - * Test le report {@code targetDiscardedByAssociation}. - * - * @author Tony Chemit - dev@tchemit.fr - * @since 1.9 - */ -@AutoService(ReportFixture.class) -public class PsObservationTargetDiscardedByAssociationReportFixture extends ReportFixture { - - @Override - public void assertSyntax(Report report) { - super.assertSyntax(report); - Iterator<ReportRequest> requests = getRequestIterator(report); - assertReportRequestDimension(requests, ReportRequest.RequestLayout.row, 0, 0); - assertReportRequestDimension(requests, ReportRequest.RequestLayout.row, 0, 1); - assertReportRequestDimension(requests, ReportRequest.RequestLayout.row, 0, 2); - assertReportRequestDimension(requests, ReportRequest.RequestLayout.row, 0, 3); - } -} ===================================== core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationCatchTotalCountByGroupPerReasonForDiscard.properties ===================================== @@ -19,8 +19,8 @@ # <http://www.gnu.org/licenses/gpl-3.0.html>. # #L% ### -syntax.name=Observations - Dénombrement des rejets par type de banc et raison de rejet, filtrés par groupe -syntax.description=Afficher le nombre de captures rejetées par espèce selon le type de banc et le type de rejet, filtrés par groupe +syntax.name=Observations - Dénombrement des rejets par type de banc et raison de rejet, filtrés par groupe (en t) +syntax.description=Afficher le nombre de captures rejetées par espèce selon le type de banc et le type de rejet, filtrés par groupe (en t) syntax.rows=-1 syntax.columns=-1 syntax.columnsHeader= ===================================== core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationCatchTotalCountByGroupPerSpeciesFate.properties ===================================== @@ -20,7 +20,7 @@ # #L% ### syntax.name=Observations - Dénombrement des captures par type de banc et devenir, filtrés par groupe -syntax.description=Afficher les nombres de captures par groupe d'espèce selon le type de banc et le devenir, filtré par groupe +syntax.description=Afficher les nombres de captures selon le type de banc et le devenir, filtré par groupe syntax.rows=-1 syntax.columns=-1 syntax.columnsHeader= ===================================== core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationCatchWeightByGroupPerReasonForDiscard.properties ===================================== @@ -19,7 +19,7 @@ # <http://www.gnu.org/licenses/gpl-3.0.html>. # #L% ### -syntax.name=Observations - Poids des rejets par type de banc et raison de rejet, filtrés par groupe +syntax.name=Observations - Poids des rejets par type de banc et raison de rejet, filtrés par groupe (en t) syntax.description=Afficher le poids de captures rejetées par espèce selon le type de banc et type de rejet, filtrés par groupe syntax.rows=-1 syntax.columns=-1 @@ -29,4 +29,4 @@ syntax.nbRequests=1 result.columns=9 result.rows=2 result.0=Espèce^Total BL^Total BO^Espèce non désirée ou protégée^Taille^Cuve pleine^Poisson abîmé ou impropre à la consommation humaine^Autre ( à préciser dans les notes )^Total -result.1=[FAO]ALV [sc]Alopias vulpinus [fr]Renard^0.0^12.0^null^null^12.0^null^null^12 \ No newline at end of file +result.1=[FAO]ALV [sc]Alopias vulpinus [fr]Renard^0.0^12.0^null^null^12.0^null^null^12.0 \ No newline at end of file ===================================== core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationCatchWeightByGroupPerSpeciesFate.properties ===================================== @@ -19,8 +19,8 @@ # <http://www.gnu.org/licenses/gpl-3.0.html>. # #L% ### -syntax.name=Observations - Poids des captures par type de banc et devenir, filtrés par groupe -syntax.description=Afficher le poids de captures par groupe d'espèce selon le type de banc et le devenir, filtrés par groupe +syntax.name=Observations - Poids des captures par type de banc et devenir, filtrés par groupe (en t) +syntax.description=Afficher le poids de captures selon le type de banc et le devenir, filtrés par groupe (en t) syntax.rows=-1 syntax.columns=-1 syntax.columnsHeader= @@ -29,4 +29,4 @@ syntax.nbRequests=1 result.columns=19 result.rows=2 result.0=Espèce^Total BL^Total BO^Ailerons seulements^Partiellement conservé (ex: ailerons de requin, poisson séché)^Autres (à préciser dans les notes)^Conservé pour raisons scientifiques^Conservé pour le marché local ou poisson séché/salé à bord^Conservé à destination de la conserverie^Utilisé en cuisine du bord^Echappe du filet (pour requin-baleine et cétacés)^Rejeté, statut non observé^Rejeté suffocant^Rejeté suffocant blessé^Sortie vivant du filet (pour requin-baleine et cétacés)^Sortie mort du filet (pour requin-baleine et cétacés)^Rejeté vivant^Rejeté mort^Total -result.1=[FAO]ALV [sc]Alopias vulpinus [fr]Renard^0.0^12.0^null^null^null^null^null^null^null^12.0^null^null^null^null^null^null^null^12 \ No newline at end of file +result.1=[FAO]ALV [sc]Alopias vulpinus [fr]Renard^0.0^12.0^null^null^null^null^null^null^null^12.0^null^null^null^null^null^null^null^12.0 \ No newline at end of file ===================================== core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationTargetCatchByAssociation.properties deleted ===================================== @@ -1,35 +0,0 @@ -### -# #%L -# ObServe Core :: Services :: Test -# %% -# Copyright (C) 2008 - 2022 IRD, Ultreia.io -# %% -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program. If not, see -# <http://www.gnu.org/licenses/gpl-3.0.html>. -# #L% -### -syntax.name=Observations - Captures de thons selon le type d’association (en t) -syntax.description=Afficher la répartitions des captures de thons selon le type d'association -syntax.rows=5 -syntax.columns=7 -syntax.columnsHeader=YFT^SKJ^BET^LTA^FRI^Autres^Total -syntax.rowsHeader=BL sans baleine^BL avec baleine^BO avec requin-baleine^BO sans requin-baleine^Total -syntax.nbRequests=4 -result.columns=7 -result.rows=5 -result.0=175.0^0.0^7.0^0.0^0.0^0.0^182.0 -result.1=null^null^null^null^null^null^0.0 -result.2=null^null^null^null^null^null^0.0 -result.3=0.0^1.0^0.0^0.0^1.0^12.1406^14.1406 -result.4=175.0^1.0^7.0^0.0^1.0^12.1406^196.1406 \ No newline at end of file ===================================== core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationTargetDiscardedByAssociation.properties deleted ===================================== @@ -1,35 +0,0 @@ -### -# #%L -# ObServe Core :: Services :: Test -# %% -# Copyright (C) 2008 - 2022 IRD, Ultreia.io -# %% -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program. If not, see -# <http://www.gnu.org/licenses/gpl-3.0.html>. -# #L% -### -result.0=0.0^0.0^0.0^0.0^0.0^0.2882^0.2882 -result.1=null^null^null^null^null^null^0.0 -result.2=null^null^null^null^null^null^0.0 -result.3=0.0^0.0^5.0^0.0^0.0^148.303^153.303 -result.4=0.0^0.0^5.0^0.0^0.0^148.5912^153.5912 -result.columns=7 -result.rows=5 -syntax.columns=7 -syntax.columnsHeader=YFT^SKJ^BET^LTA^FRI^Autres^Total -syntax.description=Afficher la répartitions des rejets de thons selon le type d'association -syntax.name=Observations - Rejets de thons selon le type d’association (en t) -syntax.nbRequests=4 -syntax.rows=5 -syntax.rowsHeader=BL sans baleine^BL avec baleine^BO avec requin-baleine^BO sans requin-baleine^Total ===================================== src/site/markdown/avdth/logbook.md ===================================== @@ -46,7 +46,7 @@ La table est déversée dans plusieurs tables : | ACTIVITE_26 | V_VENT_DIR | Activity.windDirection | | | ACTIVITE_27 | V_VENT_VIT | Activity.wind | [9](#n_0_9) | | ACTIVITE_28 | C_TYP_OBJET | | [10](#n_0_10) | -| ACTIVITE_29 | F_DCP_ECO | ??? | | +| ACTIVITE_29 | F_DCP_ECO | Dcp écologique | [10](#n_0_10) | | ACTIVITE_30 | F_PROP_BALISE | TransmittingBuoy.transmittingBuoyOwnerShip | [10](#n_0_10) | | ACTIVITE_31 | C_TYP_BALISE | | [10](#n_0_10) | | ACTIVITE_32 | V_ID_BALISE | TransmittingBuoy.code | | @@ -218,6 +218,7 @@ Pour le **simple mapping** on utilise la translation : | 3 | fr.ird.referential.ps.common.ObjectMaterial#0#0.50 | 2 LOG | | 9 | fr.ird.referential.ps.common.ObjectMaterial#0#1.3 | FOB | +Enfin si la valeur du champs **ACTIVITE.F_DCP_ECO** vaut **2**, alors on ajoute le matériel **4-1** (*Matériaux biodégradables*). * ```FloatingObject.transmittingBuoy``` ===================================== toolkit/persistence/src/main/java/org/nuiton/topia/service/migration/TopiaMigrationServiceContext.java ===================================== @@ -279,8 +279,11 @@ public class TopiaMigrationServiceContext { } } - public void saveModelVersion() { - saveVersion(null, getModelVersion()); + protected void saveModelVersionAndCommit() { + Version version = getModelVersion(); + log.info(String.format("[ Version %s ] Saving persistence model database version and commit.", version)); + sqlHelper.saveAndCommit(jdbcHelper, version.getVersion()); + dbVersion = version; } public Optional<TopiaMigrationServiceAskUserToMigrate> getAskUserToMigrate() { @@ -289,11 +292,7 @@ public class TopiaMigrationServiceContext { protected void saveVersion(TopiaSqlSupport sqlSupport, Version version) { log.info(String.format("[ Version %s ] Saving new database version.", version)); - if (sqlSupport != null) { - sqlHelper.save(sqlSupport, version.getVersion()); - } else { - sqlHelper.save(jdbcHelper, version.getVersion()); - } + sqlHelper.save(sqlSupport, version.getVersion()); dbVersion = version; } ===================================== toolkit/persistence/src/main/java/org/nuiton/topia/service/migration/TopiaMigrationServiceImpl.java ===================================== @@ -91,7 +91,7 @@ public class TopiaMigrationServiceImpl implements TopiaMigrationService { context.dropLegacyTable(); if (dbVersion.equals(modelVersion)) { log.info("Database is up to date, but was coming from legacy migration table, fill new migration table."); - context.saveModelVersion(); + context.saveModelVersionAndCommit(); return; } } @@ -103,7 +103,7 @@ public class TopiaMigrationServiceImpl implements TopiaMigrationService { if (versionTableExist && dbNotVersioned) { log.info("Database is empty, no migration needed."); - context.saveModelVersion(); + context.saveModelVersionAndCommit(); return; } @@ -113,8 +113,9 @@ public class TopiaMigrationServiceImpl implements TopiaMigrationService { List<Version> versionsToApply = context.getResources().getVersionsAfter(dbVersion); if (versionsToApply.isEmpty()) { + //TODO This case should never happen? log.info("No version to apply, no migration needed."); - context.saveModelVersion(); + context.saveModelVersionAndCommit(); return; } ===================================== toolkit/persistence/src/main/java/org/nuiton/topia/service/migration/version/MigrationServiceSqlHelper.java ===================================== @@ -149,9 +149,9 @@ public interface MigrationServiceSqlHelper { return deleteTableSql() + fillVersionSql(version); } - default void save(JdbcHelper jdbcHelper, String version) { + default void saveAndCommit(JdbcHelper jdbcHelper, String version) { try { - jdbcHelper.runUpdate(saveTableSql(version)); + jdbcHelper.runUpdate(saveTableSql(version) + "commit;"); } catch (Exception e) { throw new TopiaException(String.format("Could not save version %s", version), e); } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/9567a9b04e40b1cb116f626e8... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/9567a9b04e40b1cb116f626e8... You're receiving this email because of your account on gitlab.com.