Observe-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- 7199 discussions
[Git][ultreiaio/ird-observe] Pushed new branch release/9.3.0-RC-5
by Tony CHEMIT (@tchemit) 19 Mar '24
by Tony CHEMIT (@tchemit) 19 Mar '24
19 Mar '24
Tony CHEMIT pushed new branch release/9.3.0-RC-5 at ultreiaio / ird-observe
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/tree/release/9.3.0-RC-5
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Nouveau rapport PS / Observations & Logbooks / Captures par Zone FPA, espèce...
by Tony CHEMIT (@tchemit) 19 Mar '24
by Tony CHEMIT (@tchemit) 19 Mar '24
19 Mar '24
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
8cb7f1d6 by Tony Chemit at 2024-03-19T20:14:00+01:00
Nouveau rapport PS / Observations & Logbooks / Captures par Zone FPA, espèce et devenir - Closes #2856
- - - - -
9 changed files:
- + core/persistence/report/src/main/resources/META-INF/report/default/ps/psLogbookCatchWeightByFPAZonePerSpeciesFate.report
- + core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationCatchWeightByFPAZonePerSpeciesFate.report
- core/persistence/report/src/main/resources/META-INF/report/embedded.list
- core/persistence/report/src/test/java/fr/ird/observe/report/ToolsTest.java
- + core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsLogbookCatchWeightByFPAZonePerSpeciesFateReportFixture.java
- + core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationCatchWeightByFPAZonePerSpeciesFateReportFixture.java
- + core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psLogbookCatchWeightByFPAZonePerSpeciesFate.properties
- + core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationCatchWeightByFPAZonePerSpeciesFate.properties
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService.properties
Changes:
=====================================
core/persistence/report/src/main/resources/META-INF/report/default/ps/psLogbookCatchWeightByFPAZonePerSpeciesFate.report
=====================================
@@ -0,0 +1,89 @@
+###
+# #%L
+# ObServe Core :: Persistence :: Report
+# %%
+# Copyright (C) 2008 - 2023 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%
+###
+modelType=PS
+name=Livre de bord - Devenir des captures par groupe d'espèces et par zone FPA filtré par groupe d'espèce (en t)
+name.en=Logbook - Catch fates by species group and FPA zone, filtered per group (in t)
+name.es=
+description=Après sélection d'un groupe d'espèces, ce rapport retourne les poids capturés (en tonnes) par zone FPA et par devenir
+description.en=Once a species group is selected, this report returns catch weights (in tons) by FPA zone and fate
+description.es=
+variable.1.name=speciesGroup
+variable.1.type=fr.ird.observe.dto.referential.common.SpeciesGroupReference
+variable.1.request=Select distinct sg \
+From TripImpl t \
+Join t.routeLogbook r \
+Join r.activity a \
+Join a.catches ca with ca.weight Is Not Null \
+Join ca.species e \
+Join e.speciesGroup sg \
+Where t.id In :tripId \
+Order By sg.code
+repeatVariable.1.name=fpaZone
+repeatVariable.1.type=fr.ird.observe.entities.referential.common.FpaZone
+repeatVariable.1.request=Select distinct z \
+From TripImpl t \
+Join t.routeLogbook r \
+Join r.activity a \
+Join a.currentFpaZone z \
+Join a.catches ca with ca.weight Is Not Null And ca.species.speciesGroup.id = :speciesGroup \
+Where t.id In :tripId \
+Order By z.code, z.@i18nColumnName@
+repeatVariable.2.name=speciesFate
+repeatVariable.2.type=fr.ird.observe.entities.referential.ps.common.SpeciesFate
+repeatVariable.2.request=Select distinct sf \
+From TripImpl t \
+Join t.routeLogbook r \
+Join r.activity a \
+Join a.catches ca with ca.weight Is Not Null And ca.species.speciesGroup.id = :speciesGroup \
+Join ca.speciesFate sf \
+Where t.id In :tripId \
+Order by sf.discard, sf.code
+request.1.location=0,0
+request.1.layout=row
+request.1.request=Select \
+concat( z.code, ' - ', z.@i18nColumnName@) \
+From FpaZoneImpl z \
+Where z In :fpaZone \
+Group by z.code, z.@i18nColumnName@
+request.1.repeat.name=fpaZone
+request.1.repeat.layout=column
+operations.1.type=ExecuteRequestAndReorganizeDataByRepeatVariable
+operations.1.parameters=fpaZone|speciesFate|Select \
+z.id, sf.id, Sum(ca.weight) \
+From TripImpl m \
+Join m.routeLogbook r \
+Join r.activity a \
+Join a.currentFpaZone z With z.id In :fpaZone \
+Join a.catches ca with ca.weight Is Not Null And ca.species.speciesGroup.id = :speciesGroup \
+Join ca.speciesFate sf with sf.id In :speciesFate \
+Where m.id In :tripId \
+Group by z, sf \
+Order By z.code
+operations.2.type=ComputeDynamicHeader
+operations.2.parameters=@fpaZone@|speciesFate
+operations.3.type=SumRow
+operations.3.parameters=0|1
+operations.4.type=SumColumn
+operations.4.parameters=1|1
+i18n.fpaZone=Zone FPA
+i18n.fpaZone.en=FPA Zone
+i18n.fpaZone.es=
\ No newline at end of file
=====================================
core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationCatchWeightByFPAZonePerSpeciesFate.report
=====================================
@@ -0,0 +1,93 @@
+###
+# #%L
+# ObServe Core :: Persistence :: Report
+# %%
+# Copyright (C) 2008 - 2023 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%
+###
+modelType=PS
+name=Observations - Devenir des captures par groupe d'espèces et par zone FPA filtré par groupe d'espèce (en t)
+name.en=Observation - Catch fates by species group and FPA zone, filtered per group (in t)
+name.es=
+description=Après sélection d'un groupe d'espèces, ce rapport retourne les poids capturés (en tonnes) par zone FPA et par devenir
+description.en=Once a species group is selected, this report returns catch weights (in tons) by FPA zone and fate
+description.es=
+variable.1.name=speciesGroup
+variable.1.type=fr.ird.observe.dto.referential.common.SpeciesGroupReference
+variable.1.request=Select distinct sg \
+From TripImpl t \
+Join t.routeObs r \
+Join r.activity a \
+Join a.set c \
+Join c.catches ca with ca.catchWeight Is Not Null \
+Join ca.species e \
+Join e.speciesGroup sg \
+Where t.id In :tripId \
+Order By sg.code
+repeatVariable.1.name=fpaZone
+repeatVariable.1.type=fr.ird.observe.entities.referential.common.FpaZone
+repeatVariable.1.request=Select distinct z \
+From TripImpl t \
+Join t.routeObs r \
+Join r.activity a \
+Join a.currentFpaZone z \
+Join a.set c \
+Join c.catches ca with ca.catchWeight Is Not Null And ca.species.speciesGroup.id = :speciesGroup \
+Where t.id In :tripId \
+Order By z.code, z.@i18nColumnName@
+repeatVariable.2.name=speciesFate
+repeatVariable.2.type=fr.ird.observe.entities.referential.ps.common.SpeciesFate
+repeatVariable.2.request=Select distinct sf \
+From TripImpl t \
+Join t.routeObs r \
+Join r.activity a \
+Join a.set c \
+Join c.catches ca with ca.catchWeight Is Not Null And ca.species.speciesGroup.id = :speciesGroup \
+Join ca.speciesFate sf \
+Where t.id In :tripId \
+Order by sf.discard, sf.code
+request.1.location=0,0
+request.1.layout=row
+request.1.request=Select \
+concat( z.code, ' - ', z.@i18nColumnName@) \
+From FpaZoneImpl z \
+Where z In :fpaZone \
+Group by z.code, z.@i18nColumnName@
+request.1.repeat.name=fpaZone
+request.1.repeat.layout=column
+operations.1.type=ExecuteRequestAndReorganizeDataByRepeatVariable
+operations.1.parameters=fpaZone|speciesFate|Select \
+z.id, sf.id, Sum(ca.catchWeight) \
+From TripImpl m \
+Join m.routeObs r \
+Join r.activity a \
+Join a.currentFpaZone z With z.id In :fpaZone \
+Join a.set c \
+Join c.catches ca with ca.catchWeight Is Not Null And ca.species.speciesGroup.id = :speciesGroup \
+Join ca.speciesFate sf with sf.id In :speciesFate \
+Where m.id In :tripId \
+Group by z, sf \
+Order By z.code
+operations.2.type=ComputeDynamicHeader
+operations.2.parameters=@fpaZone@|speciesFate
+operations.3.type=SumRow
+operations.3.parameters=0|1
+operations.4.type=SumColumn
+operations.4.parameters=1|1
+i18n.fpaZone=Zone FPA
+i18n.fpaZone.en=FPA Zone
+i18n.fpaZone.es=
\ No newline at end of file
=====================================
core/persistence/report/src/main/resources/META-INF/report/embedded.list
=====================================
@@ -10,6 +10,7 @@ default/ps/psLocalmarketBatch.report
default/ps/psLocalmarketSample.report
default/ps/psLocalmarketSurvey.report
default/ps/psLogbookActivity.report
+default/ps/psLogbookCatchWeightByFPAZonePerSpeciesFate.report
default/ps/psLogbookFobUsageExtended.report
default/ps/psLogbookFobUsageMinimal.report
default/ps/psLogbookSampleMeasures.report
@@ -26,6 +27,7 @@ default/ps/psObservationCatch.report
default/ps/psObservationCatchTotalCountByGroupAndSpeciesFateDiscardPerAssociation.report
default/ps/psObservationCatchTotalCountByGroupPerReasonForDiscard.report
default/ps/psObservationCatchTotalCountByGroupPerSpeciesFate.report
+default/ps/psObservationCatchWeightByFPAZonePerSpeciesFate.report
default/ps/psObservationCatchWeightByGroupAndSpeciesFateDiscardPerAssociation.report
default/ps/psObservationCatchWeightByGroupPerReasonForDiscard.report
default/ps/psObservationCatchWeightByGroupPerSpeciesFate.report
=====================================
core/persistence/report/src/test/java/fr/ird/observe/report/ToolsTest.java
=====================================
@@ -47,7 +47,7 @@ import java.util.Objects;
public class ToolsTest {
- public static final int REPORTS_COUNT_COUNT = 37;
+ public static final int REPORTS_COUNT_COUNT = 39;
private static Path reportsPath(Path basedir) {
return basedir.resolve("src").resolve("main").resolve("resources").resolve("META-INF").resolve("report");
=====================================
core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsLogbookCatchWeightByFPAZonePerSpeciesFateReportFixture.java
=====================================
@@ -0,0 +1,53 @@
+package fr.ird.observe.services.service.report.ps;
+
+/*-
+ * #%L
+ * ObServe Core :: Services :: Test
+ * %%
+ * Copyright (C) 2008 - 2024 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%
+ */
+
+import com.google.auto.service.AutoService;
+import fr.ird.observe.report.Report;
+import fr.ird.observe.report.definition.ReportRequestDefinition;
+import fr.ird.observe.report.definition.RequestLayout;
+import fr.ird.observe.services.service.ReportFixture;
+
+import java.util.Iterator;
+
+/**
+ * Created at 19/03/2024.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ * @since 9.3.0
+ */
+(a)AutoService(ReportFixture.class)
+public class PsLogbookCatchWeightByFPAZonePerSpeciesFateReportFixture extends ReportFixture {
+
+ @Override
+ public void assertSyntax(Report report) {
+ super.assertSyntax(report);
+ Iterator<ReportRequestDefinition> requests = getRequestIterator(report);
+ assertReportRequestDimension(requests, RequestLayout.row, 0, 0);
+ }
+
+ @Override
+ protected void setVariables(Report report) {
+ setVariableValue(report, "speciesGroup", "fr.ird.referential.common.SpeciesGroup#1239832683689#0.7120116158620075");
+ }
+}
=====================================
core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationCatchWeightByFPAZonePerSpeciesFateReportFixture.java
=====================================
@@ -0,0 +1,53 @@
+package fr.ird.observe.services.service.report.ps;
+
+/*-
+ * #%L
+ * ObServe Core :: Services :: Test
+ * %%
+ * Copyright (C) 2008 - 2024 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%
+ */
+
+import com.google.auto.service.AutoService;
+import fr.ird.observe.report.Report;
+import fr.ird.observe.report.definition.ReportRequestDefinition;
+import fr.ird.observe.report.definition.RequestLayout;
+import fr.ird.observe.services.service.ReportFixture;
+
+import java.util.Iterator;
+
+/**
+ * Created at 19/03/2024.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ * @since 9.3.0
+ */
+(a)AutoService(ReportFixture.class)
+public class PsObservationCatchWeightByFPAZonePerSpeciesFateReportFixture extends ReportFixture {
+
+ @Override
+ public void assertSyntax(Report report) {
+ super.assertSyntax(report);
+ Iterator<ReportRequestDefinition> requests = getRequestIterator(report);
+ assertReportRequestDimension(requests, RequestLayout.row, 0, 0);
+ }
+
+ @Override
+ protected void setVariables(Report report) {
+ setVariableValue(report, "speciesGroup", "fr.ird.referential.common.SpeciesGroup#1239832683689#0.7120116158620075");
+ }
+}
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psLogbookCatchWeightByFPAZonePerSpeciesFate.properties
=====================================
@@ -0,0 +1,28 @@
+###
+# #%L
+# ObServe Core :: Services :: Test
+# %%
+# Copyright (C) 2008 - 2024 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=Livre de bord - Devenir des captures par groupe d'espèces et par zone FPA filtré par groupe d'espèce (en t)
+syntax.description=Après sélection d'un groupe d'espèces, ce rapport retourne les poids capturés (en tonnes) par zone FPA et par devenir
+syntax.rows=-1
+syntax.columns=-1
+syntax.columnsHeader=
+syntax.rowsHeader=
+syntax.nbRequests=1
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationCatchWeightByFPAZonePerSpeciesFate.properties
=====================================
@@ -0,0 +1,32 @@
+###
+# #%L
+# ObServe Core :: Services :: Test
+# %%
+# Copyright (C) 2008 - 2024 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 - Devenir des captures par groupe d'espèces et par zone FPA filtré par groupe d'espèce (en t)
+syntax.description=Après sélection d'un groupe d'espèces, ce rapport retourne les poids capturés (en tonnes) par zone FPA et par devenir
+syntax.rows=-1
+syntax.columns=-1
+syntax.columnsHeader=
+syntax.rowsHeader=
+syntax.nbRequests=1
+result.columns=2
+result.rows=2
+result.0=Zone FPA^Echappe du filet (pour requin-baleine et cétacés)
+result.1=CIV - Côte d'Ivoire^12.0
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService.properties
=====================================
@@ -19,4 +19,4 @@
# <http://www.gnu.org/licenses/gpl-3.0.html>.
# #L%
###
-report.count=37
+report.count=39
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/8cb7f1d683c1bc48845193e8a…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/8cb7f1d683c1bc48845193e8a…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Ajout des rapports sur les FOB PS - Logbook - Closes #2855
by Tony CHEMIT (@tchemit) 19 Mar '24
by Tony CHEMIT (@tchemit) 19 Mar '24
19 Mar '24
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
fcf880a9 by Tony Chemit at 2024-03-19T15:22:32+01:00
Ajout des rapports sur les FOB PS - Logbook - Closes #2855
- - - - -
9 changed files:
- + core/persistence/report/src/main/resources/META-INF/report/default/ps/psLogbookFobUsageExtended.report
- + core/persistence/report/src/main/resources/META-INF/report/default/ps/psLogbookFobUsageMinimal.report
- core/persistence/report/src/main/resources/META-INF/report/embedded.list
- core/persistence/report/src/test/java/fr/ird/observe/report/ToolsTest.java
- + core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsLogbookFobUsageExtendedReportFixture.java
- + core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsLogbookFobUsageMinimalReportFixture.java
- + core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psLogbookFobUsageExtended.properties
- + core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psLogbookFobUsageMinimal.properties
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService.properties
Changes:
=====================================
core/persistence/report/src/main/resources/META-INF/report/default/ps/psLogbookFobUsageExtended.report
=====================================
@@ -0,0 +1,86 @@
+###
+# #%L
+# ObServe Core :: Persistence :: Report
+# %%
+# Copyright (C) 2008 - 2023 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%
+###
+modelType=PS
+name=Livre de bord - Utilisation des FOB, tableau détaillé
+name.en=Logbook - FOB usage - detailled version
+name.es=
+description=Tableau récapitulatif des FOB rencontrés, par types CECOFAD et types d’actions (déploiements, simples visites, modifications, diverses modalités de retraits), avec et sans pêche
+description.en=Summary of FOB encountered, by CECOFAD types, types of object operation (deployment, visit, update, kinds of retrievals), presence or absence of associated fishing set
+description.es=
+columns=Type de FOB,Visités Pêchés,Visités non Pêchés,Déploiement après Pêches,Déploiement seul,Modifiés Pêchés,Modifiés non Pêchés,Retirés Pêchés,Retirés non Pêchés,Abandonnés Pêchés,Abandonnés non Pêchés,Coulés Pêchés,Coulés non Pêchés,Remplacés Pêchés,Remplacés non Pêchés,Autre Pêchés,Autre non Pêchés
+columns.en=CECOFAD type,Visit and fishing,Visit only,Deployment after fishing,Deployment only,Modification after fishing,Modification only,Retrieval after fishing,Retrieval only,Abandonment after fishing,Abandonment only,Sinking after fishing,Sinking only,Replacment after fishing,Replacment only,Other activity after fishing,Other activity only
+columns.es=
+repeatVariable.1.name=typeObjetId
+repeatVariable.1.type=java.lang.String
+repeatVariable.1.request=Select distinct (om.standardCode) \
+From ObjectMaterialImpl om \
+Where om.standardCode is not null \
+And om.standardCode != '' \
+And (om.standardCode In (Select Distinct(dcp.computedWhenArrivingSimplifiedObjectType) \
+From fr.ird.observe.entities.data.ps.common.TripImpl m \
+Join m.routeLogbook r \
+Join r.activity a \
+Join a.floatingObject dcp With dcp.computedWhenArrivingSimplifiedObjectType Is Not Null \
+Where m.id In :tripId ) Or om.standardCode In (Select Distinct(dcp.computedWhenLeavingSimplifiedObjectType) \
+From fr.ird.observe.entities.data.ps.common.TripImpl m \
+Join m.routeLogbook r \
+Join r.activity a \
+Join a.floatingObject dcp With dcp.computedWhenLeavingSimplifiedObjectType Is Not Null \
+Where m.id In :tripId )) \
+Order by om.standardCode
+request.1.location=0,0
+request.1.layout=row
+request.1.request=Select concat(str(om.standardCode) , ' - ', om.@i18nColumnName@) \
+From ObjectMaterialImpl om \
+Where \
+om.standardCode = :typeObjetId \
+And om.status != 0
+request.1.repeat.name=typeObjetId
+request.1.repeat.layout=column
+request.2.location=1,0
+request.2.layout=row
+request.2.request=Select \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#1' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#1' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#8' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#8' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#4' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#4' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#5' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#5' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#7' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#7' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#9' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#9' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#10' Or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3') And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#10' Or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3') And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End) \
+From fr.ird.observe.entities.data.ps.common.TripImpl m \
+Join m.routeLogbook r \
+Join r.activity a \
+Join a.floatingObject dcp With dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId Or dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
+Where \
+m.id In :tripId
+request.2.repeat.name=typeObjetId
+request.2.repeat.layout=column
+request.2.comment=visite + peche / visite - peche / Deploiement + peche / Deploiement - peche / Modifie + peche / Modifie - peche / Retire + peche / Retire - peche / Abandonne + peche / Abandonne - peche / Coule + peche / Coule - peche / Remplace + peche / Remplace - peche / Autre ou ancien peche + peche / Autre ou ancien peche - peche / Nombre de tortues
=====================================
core/persistence/report/src/main/resources/META-INF/report/default/ps/psLogbookFobUsageMinimal.report
=====================================
@@ -0,0 +1,88 @@
+###
+# #%L
+# ObServe Core :: Persistence :: Report
+# %%
+# Copyright (C) 2008 - 2023 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%
+###
+modelType=PS
+name=Livre de bord - Utilisation des FOB, tableau simplifiée
+name.en=Logbook - FOB usage, simplified version
+name.es=
+description=Tableau récapitulatif des FOB rencontrés, par types CECOFAD et types d’actions regroupés (rencontrés et pêchés, rencontrés non pêchés, déployés)
+description.en=Total number of found FOB,per CECOFAD types and action type (Visited fishing,Visited not fishing, deployed)
+description.es=
+columns=Type de FOB,Rencontrés pêchés,Rencontrés non pêchés,Déployés
+columns.en=FOB type,Visited fishing,Visiting no fishing,Deployed
+columns.es=
+repeatVariable.1.name=typeObjetId
+repeatVariable.1.type=java.lang.String
+repeatVariable.1.request=Select distinct (om.standardCode) \
+From ObjectMaterialImpl om \
+Where om.standardCode is not null \
+And om.standardCode != '' \
+And (om.standardCode In (Select Distinct(dcp.computedWhenArrivingSimplifiedObjectType) \
+From fr.ird.observe.entities.data.ps.common.TripImpl m \
+Join m.routeLogbook r \
+Join r.activity a \
+Join a.floatingObject dcp With dcp.computedWhenArrivingSimplifiedObjectType Is Not Null \
+Where m.id In :tripId ) Or om.standardCode In (Select Distinct(dcp.computedWhenLeavingSimplifiedObjectType) \
+From fr.ird.observe.entities.data.ps.common.TripImpl m \
+Join m.routeLogbook r \
+Join r.activity a \
+Join a.floatingObject dcp With dcp.computedWhenLeavingSimplifiedObjectType Is Not Null \
+Where m.id In :tripId )) \
+Order by om.standardCode
+repeatVariable.1.comment=liste des types CECOFAD en presence sur les donnees selectionnees
+request.1.location=0,0
+request.1.layout=row
+request.1.request=Select concat(str(om.standardCode) , ' - ', om.@i18nColumnName@) \
+From ObjectMaterialImpl om \
+Where \
+om.standardCode = :typeObjetId \
+And om.status != 0
+request.1.repeat.name=typeObjetId
+request.1.repeat.layout=column
+request.2.location=1,0
+request.2.layout=row
+request.2.request=Select \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' And (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#8' \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#4' \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#5' \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#7' \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#9' \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#10' \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3') Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' And (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#8' \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#4' \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#5' \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#7' \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#9' \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#10' \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3') Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#1' Then 1 Else 0 End) \
+From fr.ird.observe.entities.data.ps.common.TripImpl m \
+Join m.routeLogbook r \
+Join r.activity a \
+Join a.floatingObject dcp With dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId Or dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId \
+Where \
+m.id In :tripId
+request.2.repeat.name=typeObjetId
+request.2.repeat.layout=column
+request.2.comment=rencontres + peches / rencontres - peches / deployes / Nombre de tortues
=====================================
core/persistence/report/src/main/resources/META-INF/report/embedded.list
=====================================
@@ -10,6 +10,8 @@ default/ps/psLocalmarketBatch.report
default/ps/psLocalmarketSample.report
default/ps/psLocalmarketSurvey.report
default/ps/psLogbookActivity.report
+default/ps/psLogbookFobUsageExtended.report
+default/ps/psLogbookFobUsageMinimal.report
default/ps/psLogbookSampleMeasures.report
default/ps/psLogbookSampleSet.report
default/ps/psLogbookSampleSpeciesMeasures.report
=====================================
core/persistence/report/src/test/java/fr/ird/observe/report/ToolsTest.java
=====================================
@@ -47,7 +47,7 @@ import java.util.Objects;
public class ToolsTest {
- public static final int REPORTS_COUNT_COUNT = 35;
+ public static final int REPORTS_COUNT_COUNT = 37;
private static Path reportsPath(Path basedir) {
return basedir.resolve("src").resolve("main").resolve("resources").resolve("META-INF").resolve("report");
=====================================
core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsLogbookFobUsageExtendedReportFixture.java
=====================================
@@ -0,0 +1,49 @@
+package fr.ird.observe.services.service.report.ps;
+
+/*-
+ * #%L
+ * ObServe Core :: Services :: Test
+ * %%
+ * Copyright (C) 2008 - 2023 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%
+ */
+
+import com.google.auto.service.AutoService;
+import fr.ird.observe.report.Report;
+import fr.ird.observe.report.definition.ReportRequestDefinition;
+import fr.ird.observe.report.definition.RequestLayout;
+import fr.ird.observe.services.service.ReportFixture;
+
+import java.util.Iterator;
+
+/**
+ * Created on 17/02/2021.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ * @since 8.0.6
+ */
+(a)AutoService(ReportFixture.class)
+public class PsLogbookFobUsageExtendedReportFixture extends ReportFixture {
+
+ @Override
+ public void assertSyntax(Report report) {
+ super.assertSyntax(report);
+ Iterator<ReportRequestDefinition> requests = getRequestIterator(report);
+ assertReportRequestDimension(requests, RequestLayout.row, 0, 0);
+ assertReportRequestDimension(requests, RequestLayout.row, 1, 0);
+ }
+}
=====================================
core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsLogbookFobUsageMinimalReportFixture.java
=====================================
@@ -0,0 +1,49 @@
+package fr.ird.observe.services.service.report.ps;
+
+/*-
+ * #%L
+ * ObServe Core :: Services :: Test
+ * %%
+ * Copyright (C) 2008 - 2023 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%
+ */
+
+import com.google.auto.service.AutoService;
+import fr.ird.observe.report.Report;
+import fr.ird.observe.report.definition.ReportRequestDefinition;
+import fr.ird.observe.report.definition.RequestLayout;
+import fr.ird.observe.services.service.ReportFixture;
+
+import java.util.Iterator;
+
+/**
+ * Created on 17/02/2021.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ * @since 8.0.6
+ */
+(a)AutoService(ReportFixture.class)
+public class PsLogbookFobUsageMinimalReportFixture extends ReportFixture {
+
+ @Override
+ public void assertSyntax(Report report) {
+ super.assertSyntax(report);
+ Iterator<ReportRequestDefinition> requests = getRequestIterator(report);
+ assertReportRequestDimension(requests, RequestLayout.row, 0, 0);
+ assertReportRequestDimension(requests, RequestLayout.row, 1, 0);
+ }
+}
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psLogbookFobUsageExtended.properties
=====================================
@@ -0,0 +1,31 @@
+###
+# #%L
+# ObServe Core :: Services :: Test
+# %%
+# Copyright (C) 2008 - 2023 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=DFAD - DFAD (FAD dérivant)^0^0^0^0^0^0^0^0^1^0^0^0^0^0^0^0
+result.columns=17
+result.rows=1
+syntax.columns=17
+syntax.columnsHeader=Type de FOB^Visités Pêchés^Visités non Pêchés^Déploiement après Pêches^Déploiement seul^Modifiés Pêchés^Modifiés non Pêchés^Retirés Pêchés^Retirés non Pêchés^Abandonnés Pêchés^Abandonnés non Pêchés^Coulés Pêchés^Coulés non Pêchés^Remplacés Pêchés^Remplacés non Pêchés^Autre Pêchés^Autre non Pêchés
+syntax.description=Tableau récapitulatif des FOB rencontrés, par types CECOFAD et types d’actions (déploiements, simples visites, modifications, diverses modalités de retraits), avec et sans pêche
+syntax.name=Livre de bord - Utilisation des FOB, tableau détaillé
+syntax.nbRequests=2
+syntax.rows=-1
+syntax.rowsHeader=
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psLogbookFobUsageMinimal.properties
=====================================
@@ -0,0 +1,31 @@
+###
+# #%L
+# ObServe Core :: Services :: Test
+# %%
+# Copyright (C) 2008 - 2023 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=DFAD - DFAD (FAD dérivant)^1^0^0
+result.columns=4
+result.rows=1
+syntax.columns=4
+syntax.columnsHeader=Type de FOB^Rencontrés pêchés^Rencontrés non pêchés^Déployés
+syntax.description=Tableau récapitulatif des FOB rencontrés, par types CECOFAD et types d’actions regroupés (rencontrés et pêchés, rencontrés non pêchés, déployés)
+syntax.name=Livre de bord - Utilisation des FOB, tableau simplifiée
+syntax.nbRequests=2
+syntax.rows=-1
+syntax.rowsHeader=
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService.properties
=====================================
@@ -19,4 +19,4 @@
# <http://www.gnu.org/licenses/gpl-3.0.html>.
# #L%
###
-report.count=35
+report.count=37
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/fcf880a9e47248aea607bfd00…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/fcf880a9e47248aea607bfd00…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 3 commits: Mise à jour du rapport psObservationAllActivities
by Tony CHEMIT (@tchemit) 19 Mar '24
by Tony CHEMIT (@tchemit) 19 Mar '24
19 Mar '24
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
584fa484 by Tony Chemit at 2024-03-19T15:00:14+01:00
Mise à jour du rapport psObservationAllActivities
- - - - -
ddc116b2 by Tony Chemit at 2024-03-19T15:00:14+01:00
Ajout du rapport psObservationActivitiesByZone
- - - - -
27355e37 by Tony Chemit at 2024-03-19T15:00:58+01:00
Merge branch 'feature/issue-2848' into develop
Tableaux de synthèse à intégrer - Closes #2848
- - - - -
9 changed files:
- + core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationActivitiesByZone.report
- core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationAllActivities.report
- core/persistence/report/src/main/resources/META-INF/report/embedded.list
- core/persistence/report/src/test/java/fr/ird/observe/report/ToolsTest.java
- + core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationActivitiesByZoneReportFixture.java
- + core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationActivitiesByZone.properties
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationAllActivities.properties
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService.properties
- src/site/markdown/report/embedded-reports.md
Changes:
=====================================
core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationActivitiesByZone.report
=====================================
@@ -0,0 +1,52 @@
+modelType=PS
+name=Observations - Types d'activités par zones FPA
+name.en=Observations - Types of activities by FPA zone crossed
+name.es=
+description=Tableau récapitulatif des types d'activités par zone FPA traversée
+description.en=Summary table of types of activities by FPA zone crossed
+description.es=
+columns=Zone,Visités Pêchés,Visités non Pêchés,Déploiement après Pêches,Déploiement seul,Modifiés Pêchés,Modifiés non Pêchés,Retirés Pêchés,Retirés non Pêchés,Abandonnés Pêchés,Abandonnés non Pêchés,Coulés Pêchés,Coulés non Pêchés,Remplacés Pêchés,Remplacés non Pêchés,Autre Pêchés,Autre non Pêchés,Tortues associées,Total
+columns.en=Zone,Visit and fishing,Visit only,Deployment after fishing,Deployment only,Modification after fishing,Modification only,Retrieval after fishing,Retrieval only,Abandonment after fishing,Abandonment only,Sinking after fishing,Sinking only,Replacment after fishing,Replacment only,Other activity after fishing,Other activity only,Number of turtles associated,Total
+columns.es=
+repeatVariable.1.name=zoneFpaId
+repeatVariable.1.type=java.lang.String
+repeatVariable.1.request=Select z.id \
+From FpaZoneImpl z \
+Where z.id In (Select distinct (a.currentFpaZone.id) \
+ From fr.ird.observe.entities.data.ps.common.TripImpl m \
+ Join m.routeObs r \
+ Join r.activity a With a.currentFpaZone Is Not NULL \
+ Where m.id In :tripId And a.floatingObject Is Not Empty) \
+Order By z.code, z.@i18nColumnName@
+request.1.location=0,0
+request.1.layout=row
+request.1.request=Select concat(a.currentFpaZone.code , ' - ', a.currentFpaZone.@i18nColumnName@), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#2' And a.vesselActivity = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#2' And a.vesselActivity != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#1' And a.vesselActivity = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#1' And a.vesselActivity != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#8' And a.vesselActivity = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#8' And a.vesselActivity != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#4' And a.vesselActivity = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#4' And a.vesselActivity != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#5' And a.vesselActivity = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#5' And a.vesselActivity != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#7' And a.vesselActivity = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#7' And a.vesselActivity != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#9' And a.vesselActivity = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#9' And a.vesselActivity != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When ( dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#10' Or dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#3' ) And a.vesselActivity = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When ( dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#10' Or dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#3' ) And a.vesselActivity != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.objectObservedSpecies Is Not Empty Then (Select Sum(efo.count) From dcp.objectObservedSpecies efo Where efo.species.speciesGroup.id = 'fr.ird.referential.common.SpeciesGroup#1239832683690#0.24333033683679461') Else 0 End) \
+From fr.ird.observe.entities.data.ps.common.TripImpl m \
+Join m.routeObs r \
+Join r.activity a With a.currentFpaZone.id = :zoneFpaId \
+Join a.floatingObject dcp \
+Where m.id In :tripId
+request.1.repeat.name=zoneFpaId
+request.1.repeat.layout=column
+request.1.comment=visite + peche / visite - peche / Deploiement + peche / Deploiement - peche / Modifie + peche / Modifie - peche / Retire + peche / Retire - peche / Abandonne + peche / Abandonne - peche / Coule + peche / Coule - peche / Remplace + peche / Remplace - peche / Autre ou ancien peche + peche / Autre ou ancien peche - peche / Nombre de tortues
+operations.1.type=SumIntRow
+operations.1.parameters=0|1
+operations.2.type=SumIntColumn
+operations.2.parameters=0|1
=====================================
core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationAllActivities.report
=====================================
@@ -20,22 +20,25 @@
# #L%
###
modelType=PS
-name=Observations - Toutes les activités et leurs positions
-name.en=Observations - Activities with their geographic position
+name=Observations - Toutes les activités, leurs positions et zones FPA
+name.en=Observations - Activities with their geographic position and FPA zones
name.es=
description=Afficher toutes les activités et leurs positions géographiques
description.en=Display activities with their geographic position
description.es=
-columns=Jour,Heure observation,Latitude,Longitude,Activité,Commentaire
-columns.en=Date,Hour,Latitude,Longitude,Activity,Comment
+columns=Jour,Heure observation,Latitude,Longitude,Activité (code),Activité (nom),Zone FPA (code),Zone FPA (nom),Commentaire
+columns.en=Date,Hour,Latitude,Longitude,Activity (code), Activity (label),FPA zone (code), FPA zone (label), Comment
columns.es=
request.1.location=0,0
request.1.layout=row
-request.1.request=Select r.date, Cast(a.time As java.sql.Time), a.latitude, a.longitude, ab.@i18nColumnName@, a.comment \
+request.1.request=Select r.date, Cast(a.time As java.sql.Time), a.latitude, a.longitude, ab.code, ab.@i18nColumnName@, z.code, z.@i18nColumnName@, a.comment \
From TripImpl m \
Join m.routeObs r \
Join r.activity a \
Join a.vesselActivity ab \
+Left Join a.currentFpaZone z \
Where \
m.id In :tripId \
Order By r.date, a.time
+
+
=====================================
core/persistence/report/src/main/resources/META-INF/report/embedded.list
=====================================
@@ -17,6 +17,7 @@ default/ps/psLogbookSampleSpeciesMeasuresCount.report
default/ps/psLogbookTrip.report
default/ps/psLogbookWellPlan.report
default/ps/psLogbookWellPlanCheck.report
+default/ps/psObservationActivitiesByZone.report
default/ps/psObservationActivityWithComment.report
default/ps/psObservationAllActivities.report
default/ps/psObservationCatch.report
=====================================
core/persistence/report/src/test/java/fr/ird/observe/report/ToolsTest.java
=====================================
@@ -47,7 +47,7 @@ import java.util.Objects;
public class ToolsTest {
- public static final int REPORTS_COUNT_COUNT = 34;
+ public static final int REPORTS_COUNT_COUNT = 35;
private static Path reportsPath(Path basedir) {
return basedir.resolve("src").resolve("main").resolve("resources").resolve("META-INF").resolve("report");
=====================================
core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationActivitiesByZoneReportFixture.java
=====================================
@@ -0,0 +1,47 @@
+package fr.ird.observe.services.service.report.ps;
+
+/*-
+ * #%L
+ * ObServe Core :: Services :: Test
+ * %%
+ * Copyright (C) 2008 - 2024 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%
+ */
+
+import com.google.auto.service.AutoService;
+import fr.ird.observe.report.Report;
+import fr.ird.observe.report.definition.ReportRequestDefinition;
+import fr.ird.observe.report.definition.RequestLayout;
+import fr.ird.observe.services.service.ReportFixture;
+
+import java.util.Iterator;
+
+/**
+ * Created at 15/03/2024.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ * @since 9.3.0
+ */
+(a)AutoService(ReportFixture.class)
+public class PsObservationActivitiesByZoneReportFixture extends ReportFixture {
+ @Override
+ public void assertSyntax(Report report) {
+ super.assertSyntax(report);
+ Iterator<ReportRequestDefinition> requests = getRequestIterator(report);
+ assertReportRequestDimension(requests, RequestLayout.row, 0, 0);
+ }
+}
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationActivitiesByZone.properties
=====================================
@@ -0,0 +1,33 @@
+###
+# #%L
+# ObServe Core :: Services :: Test
+# %%
+# Copyright (C) 2008 - 2024 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.rows=-1
+syntax.columns=19
+syntax.columnsHeader=Zone^Visités Pêchés^Visités non Pêchés^Déploiement après Pêches^Déploiement seul^Modifiés Pêchés^Modifiés non Pêchés^Retirés Pêchés^Retirés non Pêchés^Abandonnés Pêchés^Abandonnés non Pêchés^Coulés Pêchés^Coulés non Pêchés^Remplacés Pêchés^Remplacés non Pêchés^Autre Pêchés^Autre non Pêchés^Tortues associées^Total
+syntax.rowsHeader=
+syntax.nbRequests=1
+result.columns=19
+result.rows=3
+result.0=CIV - Côte d'Ivoire^1^9^1^0^0^0^0^0^0^0^0^0^0^0^0^0^0^11
+result.1=LBR - Libéria^0^7^0^27^0^0^0^0^0^0^0^0^0^0^0^0^0^34
+result.2=Total^1^16^1^27^0^0^0^0^0^0^0^0^0^0^0^0^0^45
+syntax.name=Observations - Types d'activités par zones FPA
+syntax.description=Tableau récapitulatif des types d'activités par zone FPA traversée
\ No newline at end of file
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationAllActivities.properties
=====================================
@@ -19,152 +19,152 @@
# <http://www.gnu.org/licenses/gpl-3.0.html>.
# #L%
###
-result.0=30/03/2019^18:00^5.2833^-4.0^Au port^Départ du port de pêche pour la fin de la marée
-result.1=30/03/2019^19:00^5.1667^-4.0^Transit (route sans recherche)^Route de nuit
-result.2=31/03/2019^06:13^3.95^-5.2667^Recherche (général)^null
-result.3=31/03/2019^06:54^3.95^-5.35^Thonier arrivant sur le système détecté^null
-result.4=31/03/2019^07:50^3.9667^-5.35^Pêche (larguage du skiff)^null
-result.5=31/03/2019^10:55^3.9833^-5.2833^Thonier arrivant sur le système détecté^null
-result.6=31/03/2019^11:24^3.9833^-5.2667^Pêche (larguage du skiff)^null
-result.7=31/03/2019^14:56^3.95^-5.3333^Thonier arrivant sur le système détecté^
-result.8=31/03/2019^15:05^3.95^-5.3333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.9=31/03/2019^16:11^3.8167^-5.4167^Thonier arrivant sur le système détecté^
-result.10=31/03/2019^16:22^3.8333^-5.4167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.11=31/03/2019^16:53^3.7833^-5.4833^Thonier arrivant sur le système détecté^
-result.12=31/03/2019^17:03^3.7833^-5.4833^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.13=31/03/2019^18:03^3.7833^-5.4667^Recherche (général)^null
-result.14=31/03/2019^18:44^3.8667^-5.4833^Fin de veille^null
-result.15=31/03/2019^19:00^3.9^-5.5^En dérive de nuit (moteur stoppé)^null
-result.16=01/04/2019^06:15^3.9833^-5.3167^Recherche (général)^null
-result.17=01/04/2019^07:43^3.8333^-5.2667^Thonier arrivant sur le système détecté^
-result.18=01/04/2019^07:56^3.8333^-5.25^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.19=01/04/2019^08:15^3.8833^-5.2333^Recherche (général)^null
-result.20=01/04/2019^08:41^3.9333^-5.2833^Thonier arrivant sur le système détecté^null
-result.21=01/04/2019^09:41^3.9167^-5.25^Pêche (larguage du skiff)^null
-result.22=01/04/2019^09:41^3.9167^-5.25^Pêche (larguage du skiff)^null
-result.23=01/04/2019^12:15^3.9^-5.2833^Recherche (général)^null
-result.24=01/04/2019^12:34^3.9333^-5.3^Thonier arrivant sur le système détecté^null
-result.25=01/04/2019^12:40^3.9333^-5.3^Pêche (larguage du skiff)^null
-result.26=01/04/2019^16:15^3.8833^-5.2667^Recherche (général)^null
-result.27=01/04/2019^16:38^3.9333^-5.3^Thonier arrivant sur le système détecté^null
-result.28=01/04/2019^16:51^3.9333^-5.3^Pêche (larguage du skiff)^
-result.29=01/04/2019^21:17^3.95^-5.2167^Fin de veille^null
-result.30=01/04/2019^21:18^3.95^-5.2167^Transit (route sans recherche)^Route jusqu'à 22H
-result.31=02/04/2019^06:15^3.9^-5.1833^Recherche (général)^null
-result.32=02/04/2019^06:57^3.9333^-5.25^Thonier arrivant sur le système détecté^null
-result.33=02/04/2019^07:11^3.95^-5.25^Pêche (larguage du skiff)^
-result.34=02/04/2019^10:15^3.9167^-5.2167^Recherche (général)^null
-result.35=02/04/2019^12:15^3.8833^-5.25^Recherche (général)^null
-result.36=02/04/2019^13:58^3.9^-4.9333^Thonier arrivant sur le système détecté^
-result.37=02/04/2019^14:15^3.9^-4.9333^Thonier arrivant sur le système détecté^null
-result.38=02/04/2019^14:22^3.9^-4.95^Pêche (larguage du skiff)^null
-result.39=02/04/2019^18:44^3.8833^-4.95^Fin de veille^null
-result.40=02/04/2019^19:12^3.8667^-5.0^En dérive de nuit (moteur stoppé)^null
-result.41=03/04/2019^06:15^3.9^-4.9^Thonier arrivant sur le système détecté^
-result.42=03/04/2019^07:16^3.8833^-4.95^Thonier arrivant sur le système détecté^null
-result.43=03/04/2019^07:51^3.8833^-4.9333^Pêche (larguage du skiff)^null
-result.44=03/04/2019^10:15^3.8833^-4.9167^Thonier arrivant sur le système détecté^Banc sous autre senneur
-result.45=03/04/2019^12:15^3.9^-4.9167^Thonier arrivant sur le système détecté^
-result.46=03/04/2019^14:15^3.9^-4.8833^Recherche (général)^null
-result.47=03/04/2019^15:28^3.9667^-4.85^Thonier arrivant sur le système détecté^
-result.48=03/04/2019^15:36^3.9667^-4.85^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.49=03/04/2019^16:15^3.8833^-4.9167^Recherche (général)^null
-result.50=03/04/2019^18:15^3.8667^-4.9833^Recherche (général)^null
-result.51=03/04/2019^18:42^3.8333^-5.05^Fin de veille^null
-result.52=03/04/2019^18:50^3.8167^-5.05^En dérive de nuit (moteur stoppé)^null
-result.53=04/04/2019^06:12^3.9^-4.8667^Recherche (général)^
-result.54=04/04/2019^08:12^3.8667^-4.8833^Recherche (général)^null
-result.55=04/04/2019^10:12^3.6^-4.6167^Recherche (général)^null
-result.56=04/04/2019^12:04^3.3^-4.4333^Thonier arrivant sur le système détecté^
-result.57=04/04/2019^12:12^3.3^-4.4333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.58=04/04/2019^14:12^3.05^-4.7^Recherche (général)^null
-result.59=04/04/2019^15:43^2.8667^-4.9167^Thonier arrivant sur le système détecté^
-result.60=04/04/2019^15:46^2.8667^-4.9167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.61=04/04/2019^16:12^2.8167^-5.0^Recherche (général)^null
-result.62=04/04/2019^18:12^2.6333^-5.3333^Recherche (général)^null
-result.63=04/04/2019^18:41^2.6^-5.4167^Fin de veille^null
-result.64=04/04/2019^18:42^2.6^-5.4167^Route de nuit vers objet^Route toute la nuit
-result.65=05/04/2019^06:20^1.5167^-7.4^Thonier arrivant sur le système détecté^
-result.66=05/04/2019^06:28^1.5^-7.4167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.67=05/04/2019^07:02^1.5^-7.5333^Changement de zone FPA^null
-result.68=05/04/2019^07:11^1.5^-7.55^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.69=05/04/2019^07:34^1.5^-7.6333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.70=05/04/2019^08:03^1.4667^-7.6833^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.71=05/04/2019^08:20^1.4333^-7.7167^Recherche (général)^null
-result.72=05/04/2019^08:32^1.4^-7.7333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.73=05/04/2019^08:38^1.3833^-7.75^Thonier arrivant sur le système détecté^
-result.74=05/04/2019^08:50^1.3667^-7.7333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.75=05/04/2019^09:07^1.4^-7.7667^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.76=05/04/2019^09:37^1.45^-7.8667^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.77=05/04/2019^10:02^1.4833^-7.9167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.78=05/04/2019^10:20^1.5^-7.9667^Recherche (général)^null
-result.79=05/04/2019^10:29^1.4833^-7.9833^Thonier arrivant sur le système détecté^
-result.80=05/04/2019^10:41^1.5^-8.0^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.81=05/04/2019^11:03^1.5333^-8.05^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.82=05/04/2019^11:31^1.5833^-8.1167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.83=05/04/2019^12:00^1.65^-8.1833^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.84=05/04/2019^12:20^1.7333^-8.2333^Recherche (général)^null
-result.85=05/04/2019^12:35^1.75^-8.2667^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.86=05/04/2019^13:04^1.8167^-8.3167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.87=05/04/2019^13:30^1.85^-8.3333^Thonier arrivant sur le système détecté^
-result.88=05/04/2019^13:38^1.8667^-8.3333^Opération sur objet flottant (visite, pose, modification, récupération)^
-result.89=05/04/2019^14:00^1.9167^-8.3667^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.90=05/04/2019^14:19^1.95^-8.4167^Thonier arrivant sur le système détecté^
-result.91=05/04/2019^14:26^1.95^-8.4167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.92=05/04/2019^15:05^2.0667^-8.4333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.93=05/04/2019^15:35^2.15^-8.4333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.94=05/04/2019^15:36^2.15^-8.4333^Thonier arrivant sur le système détecté^
-result.95=05/04/2019^15:46^2.15^-8.4333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.96=05/04/2019^16:02^2.2^-8.4333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.97=05/04/2019^16:20^2.2167^-8.4167^Recherche (général)^null
-result.98=05/04/2019^16:36^2.2667^-8.4^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.99=05/04/2019^16:46^2.2333^-8.3833^Thonier arrivant sur le système détecté^
-result.100=05/04/2019^16:53^2.2333^-8.3833^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.101=05/04/2019^17:08^2.2667^-8.3667^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.102=05/04/2019^17:17^2.2833^-8.35^Thonier arrivant sur le système détecté^
-result.103=05/04/2019^17:24^2.2833^-8.35^Opération sur objet flottant (visite, pose, modification, récupération)^
-result.104=05/04/2019^17:34^2.3^-8.3333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.105=05/04/2019^17:37^2.3167^-8.3333^Fin de veille^null
-result.106=05/04/2019^18:00^2.3667^-8.3167^Thonier arrivant sur le système détecté^
-result.107=05/04/2019^18:15^2.35^-8.3167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.108=05/04/2019^18:40^2.3333^-8.35^En dérive de nuit (moteur stoppé)^null
-result.109=06/04/2019^06:35^2.35^-8.3333^Avaries en mer^Avarie au niveau du moteur, navire stoppé (réparation en cours)
-result.110=06/04/2019^12:05^2.3333^-8.3333^Avaries en mer^Avarie au niveau du moteur, navire stoppé (réparation en cours)
-result.111=06/04/2019^17:55^2.3667^-8.2833^Transit (route sans recherche)^Réparation de l'avarie terminée.
-result.112=06/04/2019^18:00^2.3667^-8.2833^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.113=06/04/2019^18:16^2.3833^-8.25^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.114=06/04/2019^18:26^2.4^-8.2167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.115=06/04/2019^18:36^2.4167^-8.2^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.116=06/04/2019^18:46^2.45^-8.1833^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.117=06/04/2019^18:57^2.4667^-8.15^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.118=06/04/2019^19:05^2.4833^-8.1333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.119=06/04/2019^19:06^2.4833^-8.1333^Transit (route sans recherche)^Route de nuit
-result.120=07/04/2019^06:24^3.4333^-6.2^Changement de zone FPA^Changement de zone effectué le 06/04/2019 à 22H35 T.U à la position 02°45N et 007°33 W
-result.121=07/04/2019^08:24^3.65^-5.8667^Recherche (général)^null
-result.122=07/04/2019^10:24^3.8167^-5.5^Recherche (général)^null
-result.123=07/04/2019^12:24^3.9167^-5.1167^Thonier arrivant sur le système détecté^
-result.124=07/04/2019^12:43^3.9167^-5.1^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.125=07/04/2019^12:52^3.9167^-5.0833^Thonier arrivant sur le système détecté^
-result.126=07/04/2019^14:18^3.9^-5.0833^Thonier arrivant sur le système détecté^null
-result.127=07/04/2019^14:21^3.9^-5.0833^Pêche (larguage du skiff)^null
-result.128=07/04/2019^18:24^3.9^-4.8833^Recherche (général)^null
-result.129=07/04/2019^18:33^3.9^-4.8667^Fin de veille^Averse
-result.130=07/04/2019^18:34^3.9^-4.8667^Transit (route sans recherche)^Route de nuit jusqu'à 1H
-result.131=08/04/2019^06:30^4.0667^-3.45^Transit (route sans recherche)^navire en approche pour le début de l'aviataillement
-result.132=08/04/2019^07:30^4.0667^-3.45^Autres (à préciser dans les notes)^Début de l'aviatillement en gasoil.
-result.133=08/04/2019^11:34^4.1833^-3.3333^Autres (à préciser dans les notes)^Fin avitaillement en gasoil, poursuite de la route
-result.134=08/04/2019^12:30^4.3167^-3.4167^Recherche (général)^null
-result.135=08/04/2019^14:30^4.6^-3.6^Recherche (général)^null
-result.136=08/04/2019^16:00^4.8167^-3.75^Fin de veille^null
-result.137=08/04/2019^16:30^4.8833^-3.8167^Transit (route sans recherche)^
-result.138=08/04/2019^18:30^5.1^-3.95^Transit (route sans recherche)^null
-result.139=08/04/2019^21:05^5.2833^-4.0167^Au port^Navire au port de pêche d'Abidjan.
-syntax.name=Observations - Toutes les activités et leurs positions
+result.0=30/03/2019^18:00^5.2833^-4.0^0^Au port^CIV^Côte d'Ivoire^Départ du port de pêche pour la fin de la marée
+result.1=30/03/2019^19:00^5.1667^-4.0^1^Transit (route sans recherche)^CIV^Côte d'Ivoire^Route de nuit
+result.2=31/03/2019^06:13^3.95^-5.2667^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.3=31/03/2019^06:54^3.95^-5.35^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.4=31/03/2019^07:50^3.9667^-5.35^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^null
+result.5=31/03/2019^10:55^3.9833^-5.2833^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.6=31/03/2019^11:24^3.9833^-5.2667^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^null
+result.7=31/03/2019^14:56^3.95^-5.3333^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.8=31/03/2019^15:05^3.95^-5.3333^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.9=31/03/2019^16:11^3.8167^-5.4167^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.10=31/03/2019^16:22^3.8333^-5.4167^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.11=31/03/2019^16:53^3.7833^-5.4833^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.12=31/03/2019^17:03^3.7833^-5.4833^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.13=31/03/2019^18:03^3.7833^-5.4667^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.14=31/03/2019^18:44^3.8667^-5.4833^16^Fin de veille^CIV^Côte d'Ivoire^null
+result.15=31/03/2019^19:00^3.9^-5.5^9^En dérive de nuit (moteur stoppé)^CIV^Côte d'Ivoire^null
+result.16=01/04/2019^06:15^3.9833^-5.3167^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.17=01/04/2019^07:43^3.8333^-5.2667^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.18=01/04/2019^07:56^3.8333^-5.25^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.19=01/04/2019^08:15^3.8833^-5.2333^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.20=01/04/2019^08:41^3.9333^-5.2833^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.21=01/04/2019^09:41^3.9167^-5.25^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^null
+result.22=01/04/2019^09:41^3.9167^-5.25^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^null
+result.23=01/04/2019^12:15^3.9^-5.2833^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.24=01/04/2019^12:34^3.9333^-5.3^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.25=01/04/2019^12:40^3.9333^-5.3^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^null
+result.26=01/04/2019^16:15^3.8833^-5.2667^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.27=01/04/2019^16:38^3.9333^-5.3^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.28=01/04/2019^16:51^3.9333^-5.3^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^
+result.29=01/04/2019^21:17^3.95^-5.2167^16^Fin de veille^CIV^Côte d'Ivoire^null
+result.30=01/04/2019^21:18^3.95^-5.2167^1^Transit (route sans recherche)^CIV^Côte d'Ivoire^Route jusqu'à 22H
+result.31=02/04/2019^06:15^3.9^-5.1833^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.32=02/04/2019^06:57^3.9333^-5.25^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.33=02/04/2019^07:11^3.95^-5.25^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^
+result.34=02/04/2019^10:15^3.9167^-5.2167^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.35=02/04/2019^12:15^3.8833^-5.25^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.36=02/04/2019^13:58^3.9^-4.9333^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.37=02/04/2019^14:15^3.9^-4.9333^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.38=02/04/2019^14:22^3.9^-4.95^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^null
+result.39=02/04/2019^18:44^3.8833^-4.95^16^Fin de veille^CIV^Côte d'Ivoire^null
+result.40=02/04/2019^19:12^3.8667^-5.0^9^En dérive de nuit (moteur stoppé)^CIV^Côte d'Ivoire^null
+result.41=03/04/2019^06:15^3.9^-4.9^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.42=03/04/2019^07:16^3.8833^-4.95^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.43=03/04/2019^07:51^3.8833^-4.9333^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^null
+result.44=03/04/2019^10:15^3.8833^-4.9167^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^Banc sous autre senneur
+result.45=03/04/2019^12:15^3.9^-4.9167^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.46=03/04/2019^14:15^3.9^-4.8833^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.47=03/04/2019^15:28^3.9667^-4.85^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.48=03/04/2019^15:36^3.9667^-4.85^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.49=03/04/2019^16:15^3.8833^-4.9167^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.50=03/04/2019^18:15^3.8667^-4.9833^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.51=03/04/2019^18:42^3.8333^-5.05^16^Fin de veille^CIV^Côte d'Ivoire^null
+result.52=03/04/2019^18:50^3.8167^-5.05^9^En dérive de nuit (moteur stoppé)^CIV^Côte d'Ivoire^null
+result.53=04/04/2019^06:12^3.9^-4.8667^2^Recherche (général)^CIV^Côte d'Ivoire^
+result.54=04/04/2019^08:12^3.8667^-4.8833^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.55=04/04/2019^10:12^3.6^-4.6167^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.56=04/04/2019^12:04^3.3^-4.4333^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.57=04/04/2019^12:12^3.3^-4.4333^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.58=04/04/2019^14:12^3.05^-4.7^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.59=04/04/2019^15:43^2.8667^-4.9167^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.60=04/04/2019^15:46^2.8667^-4.9167^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.61=04/04/2019^16:12^2.8167^-5.0^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.62=04/04/2019^18:12^2.6333^-5.3333^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.63=04/04/2019^18:41^2.6^-5.4167^16^Fin de veille^CIV^Côte d'Ivoire^null
+result.64=04/04/2019^18:42^2.6^-5.4167^18^Route de nuit vers objet^CIV^Côte d'Ivoire^Route toute la nuit
+result.65=05/04/2019^06:20^1.5167^-7.4^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.66=05/04/2019^06:28^1.5^-7.4167^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.67=05/04/2019^07:02^1.5^-7.5333^21^Changement de zone FPA^CIV^Côte d'Ivoire^null
+result.68=05/04/2019^07:11^1.5^-7.55^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.69=05/04/2019^07:34^1.5^-7.6333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.70=05/04/2019^08:03^1.4667^-7.6833^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.71=05/04/2019^08:20^1.4333^-7.7167^2^Recherche (général)^LBR^Libéria^null
+result.72=05/04/2019^08:32^1.4^-7.7333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.73=05/04/2019^08:38^1.3833^-7.75^5^Thonier arrivant sur le système détecté^LBR^Libéria^
+result.74=05/04/2019^08:50^1.3667^-7.7333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.75=05/04/2019^09:07^1.4^-7.7667^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.76=05/04/2019^09:37^1.45^-7.8667^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.77=05/04/2019^10:02^1.4833^-7.9167^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.78=05/04/2019^10:20^1.5^-7.9667^2^Recherche (général)^LBR^Libéria^null
+result.79=05/04/2019^10:29^1.4833^-7.9833^5^Thonier arrivant sur le système détecté^LBR^Libéria^
+result.80=05/04/2019^10:41^1.5^-8.0^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.81=05/04/2019^11:03^1.5333^-8.05^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.82=05/04/2019^11:31^1.5833^-8.1167^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.83=05/04/2019^12:00^1.65^-8.1833^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.84=05/04/2019^12:20^1.7333^-8.2333^2^Recherche (général)^LBR^Libéria^null
+result.85=05/04/2019^12:35^1.75^-8.2667^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.86=05/04/2019^13:04^1.8167^-8.3167^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.87=05/04/2019^13:30^1.85^-8.3333^5^Thonier arrivant sur le système détecté^LBR^Libéria^
+result.88=05/04/2019^13:38^1.8667^-8.3333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^
+result.89=05/04/2019^14:00^1.9167^-8.3667^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.90=05/04/2019^14:19^1.95^-8.4167^5^Thonier arrivant sur le système détecté^LBR^Libéria^
+result.91=05/04/2019^14:26^1.95^-8.4167^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.92=05/04/2019^15:05^2.0667^-8.4333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.93=05/04/2019^15:35^2.15^-8.4333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.94=05/04/2019^15:36^2.15^-8.4333^5^Thonier arrivant sur le système détecté^LBR^Libéria^
+result.95=05/04/2019^15:46^2.15^-8.4333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.96=05/04/2019^16:02^2.2^-8.4333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.97=05/04/2019^16:20^2.2167^-8.4167^2^Recherche (général)^LBR^Libéria^null
+result.98=05/04/2019^16:36^2.2667^-8.4^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.99=05/04/2019^16:46^2.2333^-8.3833^5^Thonier arrivant sur le système détecté^LBR^Libéria^
+result.100=05/04/2019^16:53^2.2333^-8.3833^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.101=05/04/2019^17:08^2.2667^-8.3667^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.102=05/04/2019^17:17^2.2833^-8.35^5^Thonier arrivant sur le système détecté^LBR^Libéria^
+result.103=05/04/2019^17:24^2.2833^-8.35^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^
+result.104=05/04/2019^17:34^2.3^-8.3333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.105=05/04/2019^17:37^2.3167^-8.3333^16^Fin de veille^LBR^Libéria^null
+result.106=05/04/2019^18:00^2.3667^-8.3167^5^Thonier arrivant sur le système détecté^LBR^Libéria^
+result.107=05/04/2019^18:15^2.35^-8.3167^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.108=05/04/2019^18:40^2.3333^-8.35^9^En dérive de nuit (moteur stoppé)^LBR^Libéria^null
+result.109=06/04/2019^06:35^2.35^-8.3333^11^Avaries en mer^LBR^Libéria^Avarie au niveau du moteur, navire stoppé (réparation en cours)
+result.110=06/04/2019^12:05^2.3333^-8.3333^11^Avaries en mer^LBR^Libéria^Avarie au niveau du moteur, navire stoppé (réparation en cours)
+result.111=06/04/2019^17:55^2.3667^-8.2833^1^Transit (route sans recherche)^LBR^Libéria^Réparation de l'avarie terminée.
+result.112=06/04/2019^18:00^2.3667^-8.2833^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.113=06/04/2019^18:16^2.3833^-8.25^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.114=06/04/2019^18:26^2.4^-8.2167^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.115=06/04/2019^18:36^2.4167^-8.2^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.116=06/04/2019^18:46^2.45^-8.1833^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.117=06/04/2019^18:57^2.4667^-8.15^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.118=06/04/2019^19:05^2.4833^-8.1333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.119=06/04/2019^19:06^2.4833^-8.1333^1^Transit (route sans recherche)^LBR^Libéria^Route de nuit
+result.120=07/04/2019^06:24^3.4333^-6.2^21^Changement de zone FPA^null^null^Changement de zone effectué le 06/04/2019 à 22H35 T.U à la position 02°45N et 007°33 W
+result.121=07/04/2019^08:24^3.65^-5.8667^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.122=07/04/2019^10:24^3.8167^-5.5^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.123=07/04/2019^12:24^3.9167^-5.1167^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.124=07/04/2019^12:43^3.9167^-5.1^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.125=07/04/2019^12:52^3.9167^-5.0833^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.126=07/04/2019^14:18^3.9^-5.0833^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.127=07/04/2019^14:21^3.9^-5.0833^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^null
+result.128=07/04/2019^18:24^3.9^-4.8833^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.129=07/04/2019^18:33^3.9^-4.8667^16^Fin de veille^CIV^Côte d'Ivoire^Averse
+result.130=07/04/2019^18:34^3.9^-4.8667^1^Transit (route sans recherche)^CIV^Côte d'Ivoire^Route de nuit jusqu'à 1H
+result.131=08/04/2019^06:30^4.0667^-3.45^1^Transit (route sans recherche)^CIV^Côte d'Ivoire^navire en approche pour le début de l'aviataillement
+result.132=08/04/2019^07:30^4.0667^-3.45^99^Autres (à préciser dans les notes)^CIV^Côte d'Ivoire^Début de l'aviatillement en gasoil.
+result.133=08/04/2019^11:34^4.1833^-3.3333^99^Autres (à préciser dans les notes)^CIV^Côte d'Ivoire^Fin avitaillement en gasoil, poursuite de la route
+result.134=08/04/2019^12:30^4.3167^-3.4167^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.135=08/04/2019^14:30^4.6^-3.6^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.136=08/04/2019^16:00^4.8167^-3.75^16^Fin de veille^CIV^Côte d'Ivoire^null
+result.137=08/04/2019^16:30^4.8833^-3.8167^1^Transit (route sans recherche)^CIV^Côte d'Ivoire^
+result.138=08/04/2019^18:30^5.1^-3.95^1^Transit (route sans recherche)^CIV^Côte d'Ivoire^null
+result.139=08/04/2019^21:05^5.2833^-4.0167^0^Au port^CIV^Côte d'Ivoire^Navire au port de pêche d'Abidjan.
+syntax.name=Observations - Toutes les activités, leurs positions et zones FPA
syntax.description=Afficher toutes les activités et leurs positions géographiques
syntax.rows=-1
-syntax.columns=6
-syntax.columnsHeader=Jour^Heure observation^Latitude^Longitude^Activité^Commentaire
+syntax.columns=9
+syntax.columnsHeader=Jour^Heure observation^Latitude^Longitude^Activité (code)^Activité (nom)^Zone FPA (code)^Zone FPA (nom)^Commentaire
syntax.rowsHeader=
syntax.nbRequests=1
-result.columns=6
+result.columns=9
result.rows=140
\ No newline at end of file
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService.properties
=====================================
@@ -19,4 +19,4 @@
# <http://www.gnu.org/licenses/gpl-3.0.html>.
# #L%
###
-report.count=34
+report.count=35
=====================================
src/site/markdown/report/embedded-reports.md
=====================================
@@ -86,6 +86,10 @@ Livre de bord - Vérification des plan de cuves
Observations - Activités avec comment et leurs positions
+## psObservationActivitiesByZone
+
+Observations - Types d'activités par zones FPA
+
### psObservationAllActivities
Observations - Toutes les activités et leurs positions
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/4b1fe74f44edf4753fe8cd62…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/4b1fe74f44edf4753fe8cd62…
You're receiving this email because of your account on gitlab.com.
1
0
19 Mar '24
Tony CHEMIT deleted branch feature/issue-2848 at ultreiaio / ird-observe
--
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][feature/issue-2848] 14 commits: Optimisation du rapport Livre de bord - Vérification des plan de cuves - Closes #2849
by Tony CHEMIT (@tchemit) 19 Mar '24
by Tony CHEMIT (@tchemit) 19 Mar '24
19 Mar '24
Tony CHEMIT pushed to branch feature/issue-2848 at ultreiaio / ird-observe
Commits:
b5b80021 by Tony Chemit at 2024-03-18T11:00:40+01:00
Optimisation du rapport Livre de bord - Vérification des plan de cuves - Closes #2849
- - - - -
56d7291a by Tony Chemit at 2024-03-18T11:00:40+01:00
Optimisation du rapport Livre de bord - Plan de cuves - Closes #2850
- - - - -
294f63b2 by Tony Chemit at 2024-03-18T11:00:46+01:00
Optimisation du rapport Observations - Utilisation des FOB, tableau simplifiée - Closes #2851
- - - - -
7f181c46 by Tony Chemit at 2024-03-18T11:00:53+01:00
Optimisation du rapport Observations - Utilisation des FOB, tableau détaillé - Closes #2852
- - - - -
8aa68e2b by Tony Chemit at 2024-03-18T11:00:53+01:00
Lors d'exports massifs de données, le token expire rapidement et fait échouer la suite du processus - Closes #2839
- - - - -
8634165e by Tony Chemit at 2024-03-18T11:00:53+01:00
Amélioration de la taille des colonnes du tableau des résultats d'un rapport - Closes #2853
- - - - -
e06ff9e9 by Tony Chemit at 2024-03-19T11:22:17+01:00
Fix one i18n translation
- - - - -
11ea9d2d by Tony Chemit at 2024-03-19T14:20:44+01:00
Review DataManager code (no more logic in the tasks)
- - - - -
f0d95762 by Tony Chemit at 2024-03-19T14:20:44+01:00
Reduce log in ReferentialIdsBuilder
- - - - -
ed8c4a22 by Tony Chemit at 2024-03-19T14:20:44+01:00
Fix DataSource IO in long actions
- - - - -
b3cab5a2 by Tony Chemit at 2024-03-19T14:20:44+01:00
Perte de connection au serveur lors d'envoie massif de marées - Closes #2854
- - - - -
4b1fe74f by Tony Chemit at 2024-03-19T14:20:44+01:00
update pom
- - - - -
584fa484 by Tony Chemit at 2024-03-19T15:00:14+01:00
Mise à jour du rapport psObservationAllActivities
- - - - -
ddc116b2 by Tony Chemit at 2024-03-19T15:00:14+01:00
Ajout du rapport psObservationActivitiesByZone
- - - - -
30 changed files:
- client/core/src/main/java/fr/ird/observe/client/datasource/api/data/CopyDataTask.java
- client/core/src/main/java/fr/ird/observe/client/datasource/api/data/DataManager.java
- client/core/src/main/java/fr/ird/observe/client/datasource/api/data/DataTaskSupport.java
- client/core/src/main/java/fr/ird/observe/client/datasource/api/data/DeleteDataTask.java
- client/core/src/main/java/fr/ird/observe/client/datasource/api/data/InsertMissingReferentialTask.java
- client/core/src/main/java/fr/ird/observe/client/datasource/api/data/TaskSide.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/export/actions/Prepare.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/ReportModel.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/actions/Apply.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/validate/actions/Start.java
- client/runner/src/main/i18n/translations/client-runner_en_GB.properties
- client/runner/src/main/i18n/translations/client-runner_es_ES.properties
- client/runner/src/main/i18n/translations/client-runner_fr_FR.properties
- core/persistence/report/src/main/resources/META-INF/report/default/ps/psLogbookWellPlan.report
- core/persistence/report/src/main/resources/META-INF/report/default/ps/psLogbookWellPlanCheck.report
- + core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationActivitiesByZone.report
- core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationAllActivities.report
- core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationFobUsageExtended.report
- core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationFobUsageMinimal.report
- core/persistence/report/src/main/resources/META-INF/report/embedded.list
- core/persistence/report/src/test/java/fr/ird/observe/report/ToolsTest.java
- core/services/client/src/main/java/fr/ird/observe/services/client/ObserveServiceFactoryClient.java
- + core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationActivitiesByZoneReportFixture.java
- core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationFobUsageExtendedReportFixture.java
- core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationFobUsageMinimalReportFixture.java
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psLogbookWellPlanCheck.properties
- + core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationActivitiesByZone.properties
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationAllActivities.properties
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationFobUsageExtended.properties
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationFobUsageMinimal.properties
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/8b17856eae5fad301c30b137…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/8b17856eae5fad301c30b137…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 6 commits: Fix one i18n translation
by Tony CHEMIT (@tchemit) 19 Mar '24
by Tony CHEMIT (@tchemit) 19 Mar '24
19 Mar '24
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
e06ff9e9 by Tony Chemit at 2024-03-19T11:22:17+01:00
Fix one i18n translation
- - - - -
11ea9d2d by Tony Chemit at 2024-03-19T14:20:44+01:00
Review DataManager code (no more logic in the tasks)
- - - - -
f0d95762 by Tony Chemit at 2024-03-19T14:20:44+01:00
Reduce log in ReferentialIdsBuilder
- - - - -
ed8c4a22 by Tony Chemit at 2024-03-19T14:20:44+01:00
Fix DataSource IO in long actions
- - - - -
b3cab5a2 by Tony Chemit at 2024-03-19T14:20:44+01:00
Perte de connection au serveur lors d'envoie massif de marées - Closes #2854
- - - - -
4b1fe74f by Tony Chemit at 2024-03-19T14:20:44+01:00
update pom
- - - - -
14 changed files:
- client/core/src/main/java/fr/ird/observe/client/datasource/api/data/CopyDataTask.java
- client/core/src/main/java/fr/ird/observe/client/datasource/api/data/DataManager.java
- client/core/src/main/java/fr/ird/observe/client/datasource/api/data/DataTaskSupport.java
- client/core/src/main/java/fr/ird/observe/client/datasource/api/data/DeleteDataTask.java
- client/core/src/main/java/fr/ird/observe/client/datasource/api/data/InsertMissingReferentialTask.java
- client/core/src/main/java/fr/ird/observe/client/datasource/api/data/TaskSide.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/actions/Apply.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/validate/actions/Start.java
- client/runner/src/main/i18n/translations/client-runner_en_GB.properties
- client/runner/src/main/i18n/translations/client-runner_es_ES.properties
- client/runner/src/main/i18n/translations/client-runner_fr_FR.properties
- core/services/client/src/main/java/fr/ird/observe/services/client/ObserveServiceFactoryClient.java
- pom.xml
- toolkit/persistence/src/main/java/fr/ird/observe/spi/referential/ReferentialIdsBuilder.java
Changes:
=====================================
client/core/src/main/java/fr/ird/observe/client/datasource/api/data/CopyDataTask.java
=====================================
@@ -22,22 +22,13 @@ package fr.ird.observe.client.datasource.api.data;
* #L%
*/
-import fr.ird.observe.client.datasource.api.ObserveSwingDataSource;
-import fr.ird.observe.dto.ProgressionModel;
import fr.ird.observe.dto.ToolkitIdLabel;
import fr.ird.observe.navigation.tree.selection.SelectionTreeModel;
import fr.ird.observe.navigation.tree.selection.SelectionTreeNodeBean;
-import fr.ird.observe.services.service.data.ExportDataRequest;
-import fr.ird.observe.services.service.data.ExportDataResult;
-import fr.ird.observe.services.service.data.ImportDataRequest;
-import fr.ird.observe.services.service.data.ImportDataResult;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
import java.util.function.BiFunction;
import java.util.stream.Stream;
-import static io.ultreia.java4all.i18n.I18n.n;
import static io.ultreia.java4all.i18n.I18n.t;
/**
@@ -48,7 +39,6 @@ import static io.ultreia.java4all.i18n.I18n.t;
*/
public class CopyDataTask extends DataTaskSupport {
- private static final Logger log = LogManager.getLogger(CopyDataTask.class);
private final boolean dataExistOnOpposite;
private final ToolkitIdLabel data;
private final String prefix;
@@ -65,30 +55,6 @@ public class CopyDataTask extends DataTaskSupport {
this.prefix = prefix;
}
- public void consume(ProgressionModel progressModel, ObserveSwingDataSource incomingSource, ObserveSwingDataSource targetSource) {
- String tripId = data.getTopiaId();
- String incomingSourceLabel = incomingSource.getLabel();
- String targetSourceLabel = targetSource.getLabel();
- progressModel.setMessage(t("observe.ui.datasource.editor.actions.data.copy", targetSourceLabel, prefix, data));
- ExportDataRequest exportDataRequest = new ExportDataRequest(!targetSource.isLocal(), tripId);
- ExportDataResult exportDataResult = incomingSource.getDataManagementService().exportData(exportDataRequest);
- logExportResult(progressModel, n("observe.ui.datasource.editor.actions.data.export.result"),
- incomingSourceLabel,
- exportDataResult);
-
- ImportDataRequest importDataRequest = new ImportDataRequest(exportDataResult);
- log.info("Use import script: " + importDataRequest.getSqlContent().getLocation());
- ImportDataResult importDataResult = targetSource.getDataManagementService().importData(importDataRequest);
- logImportResult(progressModel, n("observe.ui.datasource.editor.actions.data.import.result"),
- n("observe.ui.datasource.editor.actions.data.delete.result"),
- targetSourceLabel,
- importDataResult);
-
- if (targetSource.isLocal()) {
- targetSource.setModified(true);
- }
- }
-
public final ToolkitIdLabel getData() {
return data;
}
@@ -111,31 +77,4 @@ public class CopyDataTask extends DataTaskSupport {
return dataExistOnOpposite;
}
- void logExportResult(ProgressionModel progressModel,
- String i18nKey,
- String sourceLabel,
- ExportDataResult tripResult) {
- String message = sendLogResultMessage(progressModel, i18nKey, sourceLabel, prefix, data, tripResult.getTime());
- log.info(message);
- }
-
- void logImportResult(ProgressionModel progressModel,
- String importI18nKey,
- String deleteI18nKey,
- String sourceLabel,
- ImportDataResult tripResult) {
- if (tripResult.isDeleted()) {
- String message = sendLogResultMessage(progressModel, deleteI18nKey, sourceLabel, prefix, data, tripResult.getDeleteTime());
- log.info(message);
- } else {
- progressModel.increments();
- }
- if (tripResult.isImported()) {
- String message = sendLogResultMessage(progressModel, importI18nKey, sourceLabel, prefix, data, tripResult.getImportTime());
- log.info(message);
- } else {
- progressModel.increments();
- }
- }
-
}
=====================================
client/core/src/main/java/fr/ird/observe/client/datasource/api/data/DataManager.java
=====================================
@@ -23,12 +23,38 @@ package fr.ird.observe.client.datasource.api.data;
*/
import fr.ird.observe.client.datasource.api.ObserveSwingDataSource;
+import fr.ird.observe.client.datasource.usage.UsageForDisplayUIHandler;
+import fr.ird.observe.dto.I18nDecoratorHelper;
import fr.ird.observe.dto.ProgressionModel;
+import fr.ird.observe.dto.ToolkitIdLabel;
+import fr.ird.observe.dto.referential.ReferentialDto;
+import fr.ird.observe.services.service.data.DataManagementService;
+import fr.ird.observe.services.service.data.DeleteDataRequest;
+import fr.ird.observe.services.service.data.DeleteDataResult;
+import fr.ird.observe.services.service.data.ExportDataRequest;
+import fr.ird.observe.services.service.data.ExportDataResult;
+import fr.ird.observe.services.service.data.ImportDataRequest;
+import fr.ird.observe.services.service.data.ImportDataResult;
+import fr.ird.observe.services.service.data.MissingReferentialRequest;
+import fr.ird.observe.services.service.data.MissingReferentialResult;
+import fr.ird.observe.services.service.referential.ReferentialIds;
+import fr.ird.observe.services.service.referential.ReferentialService;
import io.ultreia.java4all.application.template.spi.GenerateTemplate;
-import io.ultreia.java4all.lang.TwoSideContext;
+import io.ultreia.java4all.lang.Strings;
+import io.ultreia.java4all.util.SingletonSupplier;
+import io.ultreia.java4all.util.TwoSideContext;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import java.util.Collection;
+import java.util.Map;
import java.util.Objects;
+import java.util.Set;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
+
+import static io.ultreia.java4all.i18n.I18n.n;
+import static io.ultreia.java4all.i18n.I18n.t;
/**
* Hi-level object to perform business data management (says: delete some trip, copy some trip, insert missing referential, ...)
@@ -40,10 +66,15 @@ import java.util.Objects;
*/
@GenerateTemplate(template = "showMissingReferential.ftl")
public class DataManager {
+ private static final Logger log = LogManager.getLogger(DataManager.class);
/**
* Data sources by side.
*/
private final TwoSideContext<TaskSide, ObserveSwingDataSource> dataSources;
+ /**
+ * {@link DataManagementService} supplier by side.
+ */
+ private final TwoSideContext<TaskSide, Supplier<DataManagementService>> dataManagementServices;
/**
* Progression model.
*/
@@ -61,6 +92,7 @@ public class DataManager {
return rightSource;
}
};
+ this.dataManagementServices = dataSources.then(s -> SingletonSupplier.of(s::getDataManagementService));
this.progressModel = Objects.requireNonNull(progressModel);
}
@@ -90,18 +122,113 @@ public class DataManager {
return dataSources;
}
- public void consume(CopyDataTask task) {
- TaskSide taskSide = task.getTaskSide();
- task.consume(progressModel, dataSources.onSameSide(taskSide), dataSources.onOppositeSide(taskSide));
+ void consume(CopyDataTask task) {
+ @SuppressWarnings("resource") ObserveSwingDataSource incomingSource = dataSources.onSameSide(task.getTaskSide());
+ @SuppressWarnings("resource") ObserveSwingDataSource targetSource = dataSources.onOppositeSide(task.getTaskSide());
+ DataManagementService incomingSourceDataManagementService = dataManagementServices.onSameSide(task.getTaskSide()).get();
+ DataManagementService targetSourceDataManagementService = dataManagementServices.onOppositeSide(task.getTaskSide()).get();
+ String tripId = task.getData().getTopiaId();
+ String incomingSourceLabel = incomingSource.getLabel();
+ String targetSourceLabel = targetSource.getLabel();
+ progressModel.setMessage(t("observe.ui.datasource.editor.actions.data.copy", targetSourceLabel, task.getPrefix(), task.getData()));
+ ExportDataRequest exportDataRequest = new ExportDataRequest(!targetSource.isLocal(), tripId);
+ ExportDataResult exportDataResult = incomingSourceDataManagementService.exportData(exportDataRequest);
+
+ String message = sendLogResultMessage(n("observe.ui.datasource.editor.actions.data.export.result"),
+ incomingSourceLabel, task.getPrefix(), task.getData(), exportDataResult.getTime());
+ log.info(message);
+ ImportDataRequest importDataRequest = new ImportDataRequest(exportDataResult);
+ log.info("Use import script: " + importDataRequest.getSqlContent().getLocation());
+ ImportDataResult importDataResult = targetSourceDataManagementService.importData(importDataRequest);
+
+ if (importDataResult.isDeleted()) {
+ message = sendLogResultMessage(n("observe.ui.datasource.editor.actions.data.delete.result"), targetSourceLabel, task.getPrefix(), task.getData(), importDataResult.getDeleteTime());
+ log.info(message);
+ } else {
+ progressModel.increments();
+ }
+ if (importDataResult.isImported()) {
+ message = sendLogResultMessage(n("observe.ui.datasource.editor.actions.data.import.result"), targetSourceLabel, task.getPrefix(), task.getData(), importDataResult.getImportTime());
+ log.info(message);
+ } else {
+ progressModel.increments();
+ }
+ if (targetSource.isLocal()) {
+ targetSource.setModified(true);
+ }
+ }
+
+ void consume(InsertMissingReferentialTask task) {
+ @SuppressWarnings("resource") ObserveSwingDataSource incomingSource = dataSources.onSameSide(task.getTaskSide());
+ @SuppressWarnings("resource") ObserveSwingDataSource targetSource = dataSources.onOppositeSide(task.getTaskSide());
+ progressModel.increments();
+
+ String targetSourceLabel = targetSource.getLabel();
+
+ ReferentialService targetReferentialService = targetSource.getReferentialService();
+ ReferentialIds targetSourceReferential = targetReferentialService.getReferentialIds();
+ MissingReferentialRequest missingReferentialRequest = MissingReferentialRequest.of(targetSourceReferential.getIds(), task.getIdsToCopy().toArray(new String[0]));
+ MissingReferentialResult missingReferentialResult = incomingSource.getRootOpenableService().computeMissingReferential(task.getDataType(), missingReferentialRequest);
+ progressModel.increments();
+
+ if (missingReferentialResult == null) {
+ progressModel.increments();
+ return;
+ }
+
+ // there is some referential to add to target source
+
+ Map<Class<? extends ReferentialDto>, Set<ToolkitIdLabel>> usages = incomingSource.getReferentialMap(missingReferentialResult.getMissingIds());
+
+ boolean response = UsageForDisplayUIHandler.showMissingReferential(this.getMessage(), usages, targetSourceLabel);
+
+ if (!response) {
+ progressModel.increments();
+ throw new UserCancelException();
+ }
+
+ StringBuilder parameters = new StringBuilder();
+
+ for (Class<? extends ReferentialDto> key : usages.keySet()) {
+ Set<ToolkitIdLabel> references = usages.get(key);
+ String type = t(I18nDecoratorHelper.getType(key));
+ String labels = references.stream().map(Object::toString).collect(Collectors.joining("\n\t * "));
+ parameters.append(t("observe.ui.datasource.editor.actions.data.import.add.missing.referential.for.type", targetSourceLabel, references.size(), type, labels));
+ parameters.append("\n");
+ }
+
+ progressModel.setMessage(t("observe.ui.datasource.editor.actions.data.import.add.missing.referential", targetSourceLabel, parameters.toString()));
+
+ targetReferentialService.insertMissingReferential(missingReferentialResult.getSqlCode());
}
- public void consume(InsertMissingReferentialTask task) {
- TaskSide taskSide = task.getTaskSide();
- task.consume(progressModel, this::getMessage, dataSources.onSameSide(taskSide), dataSources.onOppositeSide(taskSide));
+ void consume(DeleteDataTask task) {
+ @SuppressWarnings("resource") ObserveSwingDataSource targetSource = dataSources.onSameSide(task.getTaskSide());
+ DataManagementService targetSourceDataManagementService = dataManagementServices.onSameSide(task.getTaskSide()).get();
+ String targetSourceLabel = targetSource.getLabel();
+ String dataId = task.getData().getTopiaId();
+
+ progressModel.setMessage(t("observe.ui.datasource.editor.actions.data.delete", targetSourceLabel, task.getPrefix(), task.getData()));
+ DeleteDataRequest deleteDataRequest = new DeleteDataRequest(dataId);
+ DeleteDataResult deleteDataResult = targetSourceDataManagementService.deleteData(deleteDataRequest);
+
+ String message = sendLogResultMessage(n("observe.ui.datasource.editor.actions.data.delete.result"),
+ targetSourceLabel, task.getPrefix(), task.getData(), deleteDataResult.getTime());
+ log.info(message);
+
+ if (targetSource.isLocal()) {
+ targetSource.setModified(true);
+ }
}
- public void consume(DeleteDataTask task) {
- TaskSide taskSide = task.getTaskSide();
- task.consume(progressModel, dataSources.onSameSide(taskSide));
+ String sendLogResultMessage(String i18nKey,
+ String sourceLabel,
+ String prefix,
+ ToolkitIdLabel data,
+ long time) {
+ String timeStr = Strings.convertTime(time);
+ String message = Strings.leftPad(timeStr, 20) + " - " + t(i18nKey, sourceLabel, prefix, data);
+ progressModel.setMessage(message);
+ return message;
}
}
=====================================
client/core/src/main/java/fr/ird/observe/client/datasource/api/data/DataTaskSupport.java
=====================================
@@ -22,15 +22,9 @@ package fr.ird.observe.client.datasource.api.data;
* #L%
*/
-import fr.ird.observe.dto.ProgressionModel;
-import fr.ird.observe.dto.ToolkitIdLabel;
-import io.ultreia.java4all.lang.Strings;
-
import javax.swing.Icon;
import java.util.Objects;
-import static io.ultreia.java4all.i18n.I18n.t;
-
/**
* Created on 03/08/16.
*
@@ -62,16 +56,5 @@ public abstract class DataTaskSupport {
}
public abstract int stepCount();
- String sendLogResultMessage(ProgressionModel progressModel,
- String i18nKey,
- String sourceLabel,
- String prefix,
- ToolkitIdLabel data,
- long time) {
- String timeStr = Strings.convertTime(time);
- String message = Strings.leftPad(timeStr, 20) + " - " + t(i18nKey, sourceLabel, prefix, data);
- progressModel.setMessage(message);
- return message;
- }
}
=====================================
client/core/src/main/java/fr/ird/observe/client/datasource/api/data/DeleteDataTask.java
=====================================
@@ -22,21 +22,14 @@ package fr.ird.observe.client.datasource.api.data;
* #L%
*/
-import fr.ird.observe.client.datasource.api.ObserveSwingDataSource;
-import fr.ird.observe.dto.ProgressionModel;
import fr.ird.observe.dto.ToolkitIdLabel;
import fr.ird.observe.navigation.tree.selection.SelectionTreeModel;
import fr.ird.observe.navigation.tree.selection.SelectionTreeNodeBean;
-import fr.ird.observe.services.service.data.DeleteDataRequest;
-import fr.ird.observe.services.service.data.DeleteDataResult;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
import java.util.Objects;
import java.util.function.BiFunction;
import java.util.stream.Stream;
-import static io.ultreia.java4all.i18n.I18n.n;
import static io.ultreia.java4all.i18n.I18n.t;
/**
@@ -47,7 +40,6 @@ import static io.ultreia.java4all.i18n.I18n.t;
*/
public class DeleteDataTask extends DataTaskSupport {
- private static final Logger log = LogManager.getLogger(DeleteDataTask.class);
private final String prefix;
private final ToolkitIdLabel data;
@@ -62,21 +54,6 @@ public class DeleteDataTask extends DataTaskSupport {
this.data = Objects.requireNonNull(data);
}
- public void consume(ProgressionModel progressModel, ObserveSwingDataSource targetSource) {
- String targetSourceLabel = targetSource.getLabel();
- String dataId = data.getTopiaId();
-
- progressModel.setMessage(t("observe.ui.datasource.editor.actions.data.delete", targetSourceLabel, prefix, data));
- DeleteDataRequest deleteDataRequest = new DeleteDataRequest(dataId);
- DeleteDataResult deleteDataResult = targetSource.getDataManagementService().deleteData(deleteDataRequest);
- logDeleteResult(progressModel, n("observe.ui.datasource.editor.actions.data.delete.result"),
- targetSourceLabel,
- deleteDataResult);
- if (targetSource.isLocal()) {
- targetSource.setModified(true);
- }
- }
-
@Override
public int stepCount() {
return 2;
@@ -87,12 +64,11 @@ public class DeleteDataTask extends DataTaskSupport {
return t(super.getLabel(), prefix, data);
}
- void logDeleteResult(ProgressionModel progressModel,
- String deleteI18nKey,
- String sourceLabel,
- DeleteDataResult tripResult) {
- String message = sendLogResultMessage(progressModel, deleteI18nKey, sourceLabel, prefix, data, tripResult.getTime());
- log.info(message);
+ public String getPrefix() {
+ return prefix;
}
+ public ToolkitIdLabel getData() {
+ return data;
+ }
}
=====================================
client/core/src/main/java/fr/ird/observe/client/datasource/api/data/InsertMissingReferentialTask.java
=====================================
@@ -22,27 +22,11 @@ package fr.ird.observe.client.datasource.api.data;
* #L%
*/
-import fr.ird.observe.client.datasource.api.ObserveSwingDataSource;
-import fr.ird.observe.client.datasource.usage.UsageForDisplayUIHandler;
-import fr.ird.observe.dto.I18nDecoratorHelper;
-import fr.ird.observe.dto.ProgressionModel;
-import fr.ird.observe.dto.ToolkitIdLabel;
import fr.ird.observe.dto.data.RootOpenableDto;
-import fr.ird.observe.dto.referential.ReferentialDto;
-import fr.ird.observe.services.service.data.MissingReferentialRequest;
-import fr.ird.observe.services.service.data.MissingReferentialResult;
-import fr.ird.observe.services.service.referential.ReferentialIds;
-import fr.ird.observe.services.service.referential.ReferentialService;
import io.ultreia.java4all.i18n.I18n;
import java.util.Collection;
-import java.util.Map;
import java.util.Objects;
-import java.util.Set;
-import java.util.function.Supplier;
-import java.util.stream.Collectors;
-
-import static io.ultreia.java4all.i18n.I18n.t;
/**
* Created on 12/11/2021.
@@ -75,46 +59,12 @@ public class InsertMissingReferentialTask extends DataTaskSupport {
return 3;
}
- public void consume(ProgressionModel progressModel, Supplier<String> messageSupplier, ObserveSwingDataSource incomingSource, ObserveSwingDataSource targetSource) {
- progressModel.increments();
-
- String targetSourceLabel = targetSource.getLabel();
-
- ReferentialService targetReferentialService = targetSource.getReferentialService();
- ReferentialIds targetSourceReferential = targetReferentialService.getReferentialIds();
- MissingReferentialRequest missingReferentialRequest = MissingReferentialRequest.of(targetSourceReferential.getIds(), idsToCopy.toArray(new String[0]));
- MissingReferentialResult missingReferentialResult = incomingSource.getRootOpenableService().computeMissingReferential(dataType, missingReferentialRequest);
- progressModel.increments();
-
- if (missingReferentialResult == null) {
- progressModel.increments();
- return;
- }
-
- // there is some referential to add to target source
-
- Map<Class<? extends ReferentialDto>, Set<ToolkitIdLabel>> usages = incomingSource.getReferentialMap(missingReferentialResult.getMissingIds());
-
- boolean response = UsageForDisplayUIHandler.showMissingReferential(messageSupplier.get(), usages, targetSourceLabel);
-
- if (!response) {
- progressModel.increments();
- throw new UserCancelException();
- }
-
- StringBuilder parameters = new StringBuilder();
-
- for (Class<? extends ReferentialDto> key : usages.keySet()) {
- Set<ToolkitIdLabel> references = usages.get(key);
- String type = t(I18nDecoratorHelper.getType(key));
- String labels = references.stream().map(Object::toString).collect(Collectors.joining("\n\t * "));
- parameters.append(t("observe.ui.datasource.editor.actions.data.import.add.missing.referential.for.type", targetSourceLabel, references.size(), type, labels));
- parameters.append("\n");
- }
-
- progressModel.setMessage(t("observe.ui.datasource.editor.actions.data.import.add.missing.referential", targetSourceLabel, parameters.toString()));
+ public Class<? extends RootOpenableDto> getDataType() {
+ return dataType;
+ }
- targetReferentialService.insertMissingReferential(missingReferentialResult.getSqlCode());
+ public Collection<String> getIdsToCopy() {
+ return idsToCopy;
}
}
=====================================
client/core/src/main/java/fr/ird/observe/client/datasource/api/data/TaskSide.java
=====================================
@@ -24,7 +24,7 @@ package fr.ird.observe.client.datasource.api.data;
import fr.ird.observe.client.util.UIHelper;
import io.ultreia.java4all.i18n.I18n;
-import io.ultreia.java4all.lang.TwoSide;
+import io.ultreia.java4all.util.TwoSide;
import javax.swing.Icon;
=====================================
client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/actions/Apply.java
=====================================
@@ -32,6 +32,11 @@ import fr.ird.observe.client.datasource.api.data.DataTaskSupport;
import fr.ird.observe.client.datasource.api.data.InsertMissingReferentialTask;
import fr.ird.observe.client.datasource.api.data.TaskSide;
import fr.ird.observe.client.datasource.api.data.UserCancelException;
+import fr.ird.observe.datasource.security.BabModelVersionException;
+import fr.ird.observe.datasource.security.DataSourceCreateWithNoReferentialImportException;
+import fr.ird.observe.datasource.security.DatabaseConnexionNotAuthorizedException;
+import fr.ird.observe.datasource.security.DatabaseNotFoundException;
+import fr.ird.observe.datasource.security.IncompatibleDataSourceCreateConfigurationException;
import fr.ird.observe.dto.ProgressionModel;
import fr.ird.observe.dto.data.RootOpenableDto;
import io.ultreia.java4all.lang.Strings;
@@ -69,14 +74,12 @@ public class Apply extends DataSynchroUIActionSupport {
addAdminWorker(getUi().getStart().getToolTipText(), this::doApply);
}
- private WizardState doApply() {
+ private WizardState doApply() throws BabModelVersionException, DataSourceCreateWithNoReferentialImportException, DatabaseNotFoundException, IncompatibleDataSourceCreateConfigurationException, DatabaseConnexionNotAuthorizedException {
DataSynchroModel stepModel = ui.getStepModel();
DataSelectionTreePaneModel leftModel = stepModel.getModel(true);
String moduleName = leftModel.getSelectionDataModel().getConfig().getModuleName();
Class<? extends RootOpenableDto> dataType = "ps".equals(moduleName) ? fr.ird.observe.dto.data.ps.common.TripDto.class : fr.ird.observe.dto.data.ll.common.TripDto.class;
- ObserveSwingDataSource leftSource = leftModel.getSource();
- ObserveSwingDataSource rightSource = stepModel.getModel(false).getSource();
DefaultListModel<DataTaskSupport> tasks = stepModel.getTasks();
Set<String> idsToCopyToLeft = new LinkedHashSet<>();
@@ -107,21 +110,26 @@ public class Apply extends DataSynchroUIActionSupport {
log.info("Total step computed: " + stepCount);
ProgressionModel progressModel = stepModel.getProgressModel();
progressModel.setMaximum(stepCount);
- DataManager dataManager = new DataManager(progressModel, leftSource, rightSource);
- long t00 = TimeLog.getTime();
- progressModel.increments();
- try {
- dataManager.consume(finalTasksToConsume);
- sendMessage(t("observe.ui.datasource.editor.actions.operation.message.done", new Date(), Strings.convertTime(TimeLog.getTime() - t00)));
- return WizardState.SUCCESSED;
- } catch (Exception e) {
- progressModel.increments();
- if (e instanceof UserCancelException) {
- return WizardState.CANCELED;
+
+ try (ObserveSwingDataSource leftSource = openSource(leftModel.getSource())) {
+ try (ObserveSwingDataSource rightSource = openSource(stepModel.getModel(false).getSource())) {
+ long t00 = TimeLog.getTime();
+ progressModel.increments();
+ try {
+ DataManager dataManager = new DataManager(progressModel, leftSource, rightSource);
+ dataManager.consume(finalTasksToConsume);
+ sendMessage(t("observe.ui.datasource.editor.actions.operation.message.done", new Date(), Strings.convertTime(TimeLog.getTime() - t00)));
+ return WizardState.SUCCESSED;
+ } catch (Exception e) {
+ progressModel.increments();
+ if (e instanceof UserCancelException) {
+ return WizardState.CANCELED;
+ }
+ throw e;
+ } finally {
+ log.warn(String.format("Expected count: %d - final step count: %d", stepCount, progressModel.getValue()));
+ }
}
- throw e;
- } finally {
- log.warn(String.format("Expected count: %d - final step count: %d", stepCount, progressModel.getValue()));
}
}
=====================================
client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/validate/actions/Start.java
=====================================
@@ -148,76 +148,74 @@ public class Start extends ValidateUIActionSupport {
SelectionTreeModel dataModel = model.getSelectDataModel().getSelectionDataModel();
- ObserveSwingDataSource dataSourceToValidate = model.getConfigModel().getLeftSourceModel().getSource();
+ try (ObserveSwingDataSource dataSourceToValidate = model.getConfigModel().getLeftSourceModel().getSource()) {
+ int stepsCount = computeStepCount(dataSourceToValidate, dataModel);
+ log.info("Step count: {}", stepsCount);
+ ProgressionModel progressModel = stepModel.getProgressModel();
+ progressModel.setMaximum(stepsCount);
+ progressModel.setValue(0);
+
+ if (!dataSourceToValidate.isOpen()) {
+ dataSourceToValidate.open();
+ progressModel.increments();
+ }
- int stepsCount = computeStepCount(dataSourceToValidate, dataModel);
- log.info("Step count: {}", stepsCount);
- ProgressionModel progressModel = stepModel.getProgressModel();
- progressModel.setMaximum(stepsCount);
- progressModel.setValue(0);
+ ValidateService validateService = dataSourceToValidate.getValidateService();
- if (!dataSourceToValidate.isOpen()) {
- dataSourceToValidate.open();
- progressModel.increments();
- }
+ Set<NuitonValidatorScope> scopes = stepModel.getScopes();
+ String contextName = stepModel.getContextName();
+ ValidationResult result;
- ValidateService validateService = dataSourceToValidate.getValidateService();
+ ValidationRequestConfiguration configuration = stepModel.toValidationRequestConfiguration();
+ if (dataModel.getConfig().isLoadReferential()) {
- Set<NuitonValidatorScope> scopes = stepModel.getScopes();
- String contextName = stepModel.getContextName();
+ ReferentialValidationRequest request = new ReferentialValidationRequest();
- ValidationResult result;
+ request.setReferentialTypes(dataModel.getSelectedReferential());
+ request.setScopes(scopes);
+ request.setValidationContext(contextName);
- ValidationRequestConfiguration configuration = stepModel.toValidationRequestConfiguration();
- if (dataModel.getConfig().isLoadReferential()) {
+ progressModel.increments();
+ result = validateService.validateReferential(configuration, request);
+ progressModel.increments();
- ReferentialValidationRequest request = new ReferentialValidationRequest();
+ } else if (dataModel.getConfig().isLoadData()) {
- request.setReferentialTypes(dataModel.getSelectedReferential());
- request.setScopes(scopes);
- request.setValidationContext(contextName);
-
- progressModel.increments();
- result = validateService.validateReferential(configuration, request);
- progressModel.increments();
+ try (ValidationResultBuilder resultBuilder = ValidationResultBuilder.create()) {
+ List<ToolkitIdLabel> selectedData = new LinkedList<>(dataModel.getSelectedData());
+ Class<? extends RootOpenableDto> dataType = dataModel.getRequest().getModuleName().equals("ps") ? fr.ird.observe.dto.data.ps.common.TripDto.class : fr.ird.observe.dto.data.ll.common.TripDto.class;
+ Decorator decorator = getDecoratorService().getToolkitIdLabelDecoratorByType(dataType);
+ selectedData.forEach(d -> d.registerDecorator(decorator));
+ decorator.sort(selectedData, 0);
+ int max = selectedData.size();
+ int index = 1;
+ for (ToolkitIdLabel datum : selectedData) {
- } else if (dataModel.getConfig().isLoadData()) {
+ String id = datum.getId();
- try (ValidationResultBuilder resultBuilder = ValidationResultBuilder.create()) {
- List<ToolkitIdLabel> selectedData = new LinkedList<>(dataModel.getSelectedData());
- Class<? extends RootOpenableDto> dataType = dataModel.getRequest().getModuleName().equals("ps") ? fr.ird.observe.dto.data.ps.common.TripDto.class : fr.ird.observe.dto.data.ll.common.TripDto.class;
- Decorator decorator = getDecoratorService().getToolkitIdLabelDecoratorByType(dataType);
- selectedData.forEach(d -> d.registerDecorator(decorator));
- decorator.sort(selectedData, 0);
- int max = selectedData.size();
- int index = 1;
- for (ToolkitIdLabel datum : selectedData) {
+ DataValidationRequest request = new DataValidationRequest();
+ request.setDataIds(Collections.singleton(id));
+ request.setScopes(scopes);
+ request.setValidationContext(contextName);
- String id = datum.getId();
+ sendMessage(String.format("[ %4d - %4d ] ", index, max) + t("observe.ui.datasource.editor.actions.validate.message.validate.trip", datum));
- DataValidationRequest request = new DataValidationRequest();
- request.setDataIds(Collections.singleton(id));
- request.setScopes(scopes);
- request.setValidationContext(contextName);
-
- sendMessage(String.format("[ %4d - %4d ] ", index, max) + t("observe.ui.datasource.editor.actions.validate.message.validate.trip", datum));
-
- progressModel.increments();
- result = validateService.validateData(configuration, request);
- progressModel.increments();
- resultBuilder.addResult(result);
- index++;
+ progressModel.increments();
+ result = validateService.validateData(configuration, request);
+ progressModel.increments();
+ resultBuilder.addResult(result);
+ index++;
+ }
+ result = resultBuilder.build();
}
- result = resultBuilder.build();
- }
- } else {
- throw new IllegalStateException();
+ } else {
+ throw new IllegalStateException();
+ }
+ progressModel.increments();
+ stepModel.setValidationResult(result);
+ log.info("Step count (at the end): {} vs computed {}", progressModel.getValue(), stepsCount);
}
- dataSourceToValidate.close();
- progressModel.increments();
- stepModel.setValidationResult(result);
- log.info("Step count (at the end): {} vs computed {}", progressModel.getValue(), stepsCount);
}
private void generateReportFile(ValidateModel validationModel) throws IOException {
=====================================
client/runner/src/main/i18n/translations/client-runner_en_GB.properties
=====================================
@@ -548,7 +548,7 @@ observe.ui.datasource.editor.actions.exportData.title=Export data
observe.ui.datasource.editor.actions.exportData.title.tip=Export data
observe.ui.datasource.editor.actions.operation.configuration=Configuration of operations
observe.ui.datasource.editor.actions.operation.message.canceled=Operation <%1$s> canceled.
-observe.ui.datasource.editor.actions.operation.message.done=Operation done at %1$td/%1$tm/%1$tY à %1$tH\:%1$tM\:%1$tS (duration\: %s).
+observe.ui.datasource.editor.actions.operation.message.done=Operation done at %1$td/%1$tm/%1$tY à %1$tH\:%1$tM\:%1$tS (duration\: %2$s).
observe.ui.datasource.editor.actions.operation.message.failed=Operation has failed.
observe.ui.datasource.editor.actions.operation.message.needFix=Operation need fix.
observe.ui.datasource.editor.actions.operation.message.running=Operation <%1$s> is running...
=====================================
client/runner/src/main/i18n/translations/client-runner_es_ES.properties
=====================================
@@ -548,7 +548,7 @@ observe.ui.datasource.editor.actions.exportData.title=Exportar los datos
observe.ui.datasource.editor.actions.exportData.title.tip=Exportar los datos de usuario
observe.ui.datasource.editor.actions.operation.configuration=Configuración de las operaciones
observe.ui.datasource.editor.actions.operation.message.canceled=La operación <%1$s> fue cancelada.
-observe.ui.datasource.editor.actions.operation.message.done=Operación terminada el %1$td/%1$tm/%1$tY a %1$tH\:%1$tM\:%1$tS (duration\: %s).
+observe.ui.datasource.editor.actions.operation.message.done=Operación terminada el %1$td/%1$tm/%1$tY a %1$tH\:%1$tM\:%1$tS (duration\: %2$s).
observe.ui.datasource.editor.actions.operation.message.failed=La operación falló
observe.ui.datasource.editor.actions.operation.message.needFix=La operación necesita correcciones.
observe.ui.datasource.editor.actions.operation.message.running=La operación < %1$s > se está ejecutando...
=====================================
client/runner/src/main/i18n/translations/client-runner_fr_FR.properties
=====================================
@@ -548,7 +548,7 @@ observe.ui.datasource.editor.actions.exportData.title=Exporter les données
observe.ui.datasource.editor.actions.exportData.title.tip=Exporter les données utilisateurs vers une base centrale
observe.ui.datasource.editor.actions.operation.configuration=Configuration des opérations
observe.ui.datasource.editor.actions.operation.message.canceled=L'opération <%1$s> a été annulée.
-observe.ui.datasource.editor.actions.operation.message.done=Opération terminée le %1$td/%1$tm/%1$tY à %1$tH\:%1$tM\:%1$tS (temps écoulé \: %s).
+observe.ui.datasource.editor.actions.operation.message.done=Opération terminée le %1$td/%1$tm/%1$tY à %1$tH\:%1$tM\:%1$tS (temps écoulé \: %2$s).
observe.ui.datasource.editor.actions.operation.message.failed=L'opération a échouée
observe.ui.datasource.editor.actions.operation.message.needFix=L'opération requière des corrections.
observe.ui.datasource.editor.actions.operation.message.running=L'opération < %1$s > est en cours d'exécution...
=====================================
core/services/client/src/main/java/fr/ird/observe/services/client/ObserveServiceFactoryClient.java
=====================================
@@ -37,6 +37,7 @@ import org.apache.hc.client5.http.cookie.BasicCookieStore;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
import org.apache.hc.client5.http.impl.io.BasicHttpClientConnectionManager;
+import org.apache.hc.core5.http.io.SocketConfig;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -62,6 +63,7 @@ public class ObserveServiceFactoryClient implements ObserveServiceFactory {
if (responseBuilder == null) {
int timeout = serviceInitializer.getInitializerConfig().getHttpTimeout();
ConnectionConfig connConfig = ConnectionConfig.custom()
+ .setTimeToLive(200, TimeUnit.MILLISECONDS)
.setSocketTimeout(timeout, TimeUnit.MILLISECONDS)
.build();
BasicHttpClientConnectionManager cm = new BasicHttpClientConnectionManager();
=====================================
pom.xml
=====================================
@@ -23,7 +23,7 @@
<parent>
<groupId>io.ultreia.maven</groupId>
<artifactId>pom</artifactId>
- <version>2024.12</version>
+ <version>2024.13</version>
</parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
=====================================
toolkit/persistence/src/main/java/fr/ird/observe/spi/referential/ReferentialIdsBuilder.java
=====================================
@@ -99,7 +99,7 @@ public class ReferentialIdsBuilder {
long t0 = TimeLog.getTime();
List<String> count = persistenceContext.getSqlSupport().findMultipleResult(realSql, r -> r.getString(1));
- TIME_LOG.log(t0, "Get referential ids", realSql);
+ TIME_LOG.log(t0, "Get referential ids", String.format(TopiaEntitySqlReplicatePlanTask.applyIds(task.getSelectSql(), selectClause, "in (" + this.ids.size() + ")"), columnName));
if (!count.isEmpty()) {
result.computeIfAbsent(dtoType, e -> new TreeSet<>()).addAll(count);
}
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/8634165ecaf550c3d999cf04…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/8634165ecaf550c3d999cf04…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 6 commits: Optimisation du rapport Livre de bord - Vérification des plan de cuves - Closes #2849
by Tony CHEMIT (@tchemit) 18 Mar '24
by Tony CHEMIT (@tchemit) 18 Mar '24
18 Mar '24
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
b5b80021 by Tony Chemit at 2024-03-18T11:00:40+01:00
Optimisation du rapport Livre de bord - Vérification des plan de cuves - Closes #2849
- - - - -
56d7291a by Tony Chemit at 2024-03-18T11:00:40+01:00
Optimisation du rapport Livre de bord - Plan de cuves - Closes #2850
- - - - -
294f63b2 by Tony Chemit at 2024-03-18T11:00:46+01:00
Optimisation du rapport Observations - Utilisation des FOB, tableau simplifiée - Closes #2851
- - - - -
7f181c46 by Tony Chemit at 2024-03-18T11:00:53+01:00
Optimisation du rapport Observations - Utilisation des FOB, tableau détaillé - Closes #2852
- - - - -
8aa68e2b by Tony Chemit at 2024-03-18T11:00:53+01:00
Lors d'exports massifs de données, le token expire rapidement et fait échouer la suite du processus - Closes #2839
- - - - -
8634165e by Tony Chemit at 2024-03-18T11:00:53+01:00
Amélioration de la taille des colonnes du tableau des résultats d'un rapport - Closes #2853
- - - - -
11 changed files:
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/export/actions/Prepare.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/ReportModel.java
- core/persistence/report/src/main/resources/META-INF/report/default/ps/psLogbookWellPlan.report
- core/persistence/report/src/main/resources/META-INF/report/default/ps/psLogbookWellPlanCheck.report
- core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationFobUsageExtended.report
- core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationFobUsageMinimal.report
- core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationFobUsageExtendedReportFixture.java
- core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationFobUsageMinimalReportFixture.java
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psLogbookWellPlanCheck.properties
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationFobUsageExtended.properties
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationFobUsageMinimal.properties
Changes:
=====================================
client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/export/actions/Prepare.java
=====================================
@@ -58,7 +58,7 @@ public class Prepare extends ExportUIActionSupport {
addAdminWorker(ui.getPrepare().getToolTipText(), this::doPrepareAction0);
}
- private WizardState doPrepareAction0() throws Exception {
+ private WizardState doPrepareAction0() {
AdminUIModel model = ui.getModel();
List<CopyDataTask> data = CopyDataTask.of(TaskSide.FROM_LEFT, model.getSelectDataModel().getSelectionDataModel()).collect(Collectors.toList());
@@ -70,10 +70,6 @@ public class Prepare extends ExportUIActionSupport {
ConfigModel configModel = model.getConfigModel();
ObserveSwingDataSource targetSource = configModel.getRightSourceModel().getSafeSourceNotOpened();
- if (!targetSource.canWriteData()) {
- throw new IllegalStateException(String.format("Can't export if target source (%s) has no data rights", targetSource.getLabel()));
- }
-
ObserveSwingDataSource incomingSource = configModel.getLeftSourceModel().getSafeSourceNotOpened();
stepModel.setData(data);
=====================================
client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/ReportModel.java
=====================================
@@ -57,7 +57,11 @@ import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
import java.awt.BorderLayout;
+import java.awt.Component;
import java.awt.event.ItemEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
@@ -508,6 +512,9 @@ public class ReportModel extends AdminActionModel {
if (reportColumnRenderersParameters != null) {
reportColumnRenderersParameters.consumeColumnRenderersSwing(resultTable);
}
+ resizeColumnWidth(resultTable,-1);
+
+
} catch (Exception e) {
clearResult(ui);
throw e;
@@ -516,6 +523,30 @@ public class ReportModel extends AdminActionModel {
}
}
+ public static void resizeColumnWidth(JXTable table, int maxWidth) {
+ final TableColumnModel columnModel = table.getColumnModel();
+ for (int column = 0; column < table.getColumnCount(); column++) {
+ // Account for header size
+ TableColumn tableColumn = table.getColumnModel().getColumn(column);
+ TableCellRenderer renderer = tableColumn.getCellRenderer();
+ if (renderer==null) {
+ renderer = table.getTableHeader().getDefaultRenderer();
+ }
+ Component component = renderer.getTableCellRendererComponent(table, tableColumn.getHeaderValue(), false, false, -1, column);
+ double width = component.getPreferredSize().width;
+ for (int row = 0; row < table.getRowCount(); row++) {
+ renderer = table.getCellRenderer(row, column);
+ Component comp = table.prepareRenderer(renderer, row, column);
+ width = Math.max(comp.getPreferredSize().width + 1, width);
+ }
+ if (maxWidth>0 && width > maxWidth) {
+ width = maxWidth;
+ }
+ tableColumn.setPreferredWidth((int) width);
+ log.debug("Column {} - width (min/max/pref): {} {}/{}/{}", tableColumn.getModelIndex(), tableColumn.getWidth(), tableColumn.getMinWidth(), tableColumn.getMaxWidth(), tableColumn.getPreferredWidth());
+ }
+ }
+
private void clearResult(ReportUI ui) {
getResultModel().clear();
ui.getConfigurationPane().setTitle(null);
=====================================
core/persistence/report/src/main/resources/META-INF/report/default/ps/psLogbookWellPlan.report
=====================================
@@ -39,19 +39,16 @@ w.well, \
r.date, \
a.number, \
Cast(a.time As java.sql.Time), \
-species.@i18nColumnName@, \
-weightCategory.@i18nColumnName@, \
+was.species.@i18nColumnName@, \
+was.weightCategory.@i18nColumnName@, \
was.weight \
From TripImpl t \
Join t.well w \
Join w.wellActivity wa \
Join wa.wellActivitySpecies was \
-Join was.species species \
-Join was.weightCategory weightCategory \
Join t.routeLogbook r \
Join r.activity a \
Join t.vessel vessel \
Left Join a.vesselActivity vesselActivity \
-Left Join a.schoolType schoolType \
Where t.id In :tripId and wa.activity = a \
Order By vessel.code,t.startDate,t.endDate,w.well,r.date,a.time
=====================================
core/persistence/report/src/main/resources/META-INF/report/default/ps/psLogbookWellPlanCheck.report
=====================================
@@ -29,16 +29,6 @@ description.es=
columns=Code bateau,Nom bateau,Date départ,Date arrivée,Date de route,Numéro activité,Heure activité,Logbook YFT,Logbook SKJ,Logbook BET,Logbook ALB,Logbook Autres,Plan de cuves YFT,Plan de cuves SKJ,Plan de cuves BET,Plan de cuves ALB,Plan de cuves Autres,Logbook Total,Plan de cuves Total,Différence
columns.en=Vessel code,Vessel name,Departure date,Landing date,Day of route,Activity number,Activity hour,Logbook YFT,Logbook SKJ,Logbook BET,Logbook ALB,Logbook others,Well plan YFT,Well plan SKJ,Well plan BET,Well plan ALB,Well plan others,Logbook Total,Well plan Total,Difference
columns.es=
-repeatVariable.1.name=activity
-repeatVariable.1.type=fr.ird.observe.entities.data.ps.logbook.Activity
-repeatVariable.1.request=Select a \
-From TripImpl t \
-Join t.routeLogbook r \
-Join r.activity a \
-Join t.vessel vessel \
-Left Join a.vesselActivity vesselActivity \
-Where t.id In :tripId and vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' \
-Order By vessel.code,t.startDate,r.date,a.number,a.time
request.1.location=0,0
request.1.layout=row
request.1.request=Select vessel.code,\
@@ -47,74 +37,33 @@ t.startDate, \
t.endDate, \
r.date, \
a.number, \
-Cast(a.time As java.sql.Time) \
-From TripImpl t \
-Join t.routeLogbook r \
-Join r.activity a \
-Join t.vessel vessel \
-Where t.id In :tripId and a = :activity
-request.1.repeat.name=activity
-request.1.repeat.layout=column
-request.2.location=7,0
-request.2.layout=row
-request.2.request=Select \
-Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then ct.weight Else 0.0 End), \
-Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then ct.weight Else 0.0 End), \
-Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then ct.weight Else 0.0 End), \
-Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685476#0.5618871286604711' Then ct.weight Else 0.0 End), \
-Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then 0.0 \
+Cast(a.time As java.sql.Time), \
+(Select Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then ct.weight Else 0.0 End) From a.catches ct), \
+(Select Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then ct.weight Else 0.0 End) From a.catches ct), \
+(Select Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then ct.weight Else 0.0 End) From a.catches ct), \
+(Select Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685476#0.5618871286604711' Then ct.weight Else 0.0 End) From a.catches ct), \
+(Select Sum(CASE ct.species.id 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#1239832685476#0.5618871286604711' Then 0.0 \
-Else ct.weight End) \
-From TripImpl t \
-Join t.routeLogbook r \
-Join r.activity a \
-Join a.catches ct \
-Where t.id In :tripId and a = :activity
-request.2.repeat.name=activity
-request.2.repeat.layout=column
-request.3.location=12,0
-request.3.layout=row
-request.3.request=Select \
-Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then was.weight Else 0.0 End), \
-Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then was.weight Else 0.0 End), \
-Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then was.weight Else 0.0 End), \
-Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685476#0.5618871286604711' Then was.weight Else 0.0 End), \
-Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then 0.0 \
+Else ct.weight End) From a.catches ct), \
+(Select Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then was.weight Else 0.0 End) From WellActivityImpl wa Join wa.wellActivitySpecies was Where wa.activity = a), \
+(Select Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then was.weight Else 0.0 End) From WellActivityImpl wa Join wa.wellActivitySpecies was Where wa.activity = a), \
+(Select Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then was.weight Else 0.0 End) From WellActivityImpl wa Join wa.wellActivitySpecies was Where wa.activity = a), \
+(Select Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685476#0.5618871286604711' Then was.weight Else 0.0 End) From WellActivityImpl wa Join wa.wellActivitySpecies was Where wa.activity = a), \
+(Select Sum(CASE was.species.id 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#1239832685476#0.5618871286604711' Then 0.0 \
-Else was.weight End) \
-From TripImpl t \
-Join t.well w \
-Join w.wellActivity wa \
-Join wa.wellActivitySpecies was \
-Where t.id In :tripId and wa.activity = :activity
-request.3.repeat.name=activity
-request.3.repeat.layout=column
-request.4.location=17,0
-request.4.layout=row
-request.4.request=Select \
-Sum(ct.weight) \
+Else was.weight End) From WellActivityImpl wa Join wa.wellActivitySpecies was Where wa.activity = a), \
+(Select Sum(ct.weight) From a.catches ct), \
+(Select Sum(was.weight) From WellActivityImpl wa Join wa.wellActivitySpecies was Where wa.activity = a) \
From TripImpl t \
Join t.routeLogbook r \
-Join r.activity a \
-Join a.catches ct \
-Where t.id In :tripId and a = :activity
-request.4.repeat.name=activity
-request.4.repeat.layout=column
-request.5.location=18,0
-request.5.layout=row
-request.5.request=Select \
-Sum(was.weight) \
-From TripImpl t \
-Join t.well w \
-Join w.wellActivity wa \
-Join wa.wellActivitySpecies was \
-Where t.id In :tripId and wa.activity = :activity
-request.5.repeat.name=activity
-request.5.repeat.layout=column
+Join r.activity a With a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' \
+Join t.vessel vessel \
+Where t.id In :tripId \
+Order By vessel.code,t.startDate,r.date,a.number,a.time
operations.1.type=SubtractColum
operations.1.parameters=17|18|19
operations.2.type=SumColumn
=====================================
core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationFobUsageExtended.report
=====================================
@@ -33,17 +33,20 @@ repeatVariable.1.name=typeObjetId
repeatVariable.1.type=java.lang.String
repeatVariable.1.request=Select distinct (om.standardCode) \
From ObjectMaterialImpl om \
-Where standardCode is not null \
-And standardCode != '' \
-And (Select Count(dcp) \
+Where om.standardCode is not null \
+And om.standardCode != '' \
+And (om.standardCode In (Select Distinct(dcp.computedWhenArrivingSimplifiedObjectType) \
From fr.ird.observe.entities.data.ps.common.TripImpl m \
Join m.routeObs r \
Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and (dcp.computedWhenArrivingSimplifiedObjectType = om.standardCode Or dcp.computedWhenLeavingSimplifiedObjectType = om.standardCode) \
-) > 0
+Join a.floatingObject dcp With dcp.computedWhenArrivingSimplifiedObjectType Is Not Null \
+Where m.id In :tripId ) Or om.standardCode In (Select Distinct(dcp.computedWhenLeavingSimplifiedObjectType) \
+From fr.ird.observe.entities.data.ps.common.TripImpl m \
+Join m.routeObs r \
+Join r.activity a \
+Join a.floatingObject dcp With dcp.computedWhenLeavingSimplifiedObjectType Is Not Null \
+Where m.id In :tripId )) \
+Order by om.standardCode
request.1.location=0,0
request.1.layout=row
request.1.request=Select concat(str(om.standardCode) , ' - ', om.@i18nColumnName@) \
@@ -55,258 +58,30 @@ request.1.repeat.name=typeObjetId
request.1.repeat.layout=column
request.2.location=1,0
request.2.layout=row
-request.2.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
+request.2.request=Select \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#1' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#1' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#8' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#8' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#4' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#4' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#5' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#5' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#7' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#7' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#9' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#9' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#10' Or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3') And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#10' Or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3') And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectObservedSpecies Is Not Empty Then (Select Sum(efo.count) From dcp.objectObservedSpecies efo Where efo.species.speciesGroup.id = 'fr.ird.referential.common.SpeciesGroup#1239832683690#0.24333033683679461') Else 0 End) \
+From fr.ird.observe.entities.data.ps.common.TripImpl m \
+Join m.routeObs r \
+Join r.activity a \
+Join a.floatingObject dcp With dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId Or dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
+Where \
+m.id In :tripId
request.2.repeat.name=typeObjetId
request.2.repeat.layout=column
-request.2.comment=visite + peche
-request.3.location=2,0
-request.3.layout=row
-request.3.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.3.repeat.name=typeObjetId
-request.3.repeat.layout=column
-request.3.comment=visite - peche
-request.4.location=3,0
-request.4.layout=row
-request.4.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#1' \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.4.repeat.name=typeObjetId
-request.4.repeat.layout=column
-request.4.comment=Deploiement + peche
-request.5.location=4,0
-request.5.layout=row
-request.5.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#1' \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.5.repeat.name=typeObjetId
-request.5.repeat.layout=column
-request.5.comment=Deploiement - peche
-request.6.location=5,0
-request.6.layout=row
-request.6.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#8' \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.6.repeat.name=typeObjetId
-request.6.repeat.layout=column
-request.6.comment=Modifie + peche
-request.7.location=6,0
-request.7.layout=row
-request.7.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#8' \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.7.repeat.name=typeObjetId
-request.7.repeat.layout=column
-request.7.comment=Modifie - peche
-request.8.location=7,0
-request.8.layout=row
-request.8.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#4' \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.8.repeat.name=typeObjetId
-request.8.repeat.layout=column
-request.8.comment=Retire + peche
-request.9.location=8,0
-request.9.layout=row
-request.9.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#4' \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.9.repeat.name=typeObjetId
-request.9.repeat.layout=column
-request.9.comment=Retire - peche
-request.10.location=9,0
-request.10.layout=row
-request.10.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#5' \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.10.repeat.name=typeObjetId
-request.10.repeat.layout=column
-request.10.comment=Abandonne + peche
-request.11.location=10,0
-request.11.layout=row
-request.11.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#5' \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.11.repeat.name=typeObjetId
-request.11.repeat.layout=column
-request.11.comment=Abandonne - peche
-request.12.location=11,0
-request.12.layout=row
-request.12.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#7' \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.12.repeat.name=typeObjetId
-request.12.repeat.layout=column
-request.12.comment=Coule + peche
-request.13.location=12,0
-request.13.layout=row
-request.13.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#7' \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.13.repeat.name=typeObjetId
-request.13.repeat.layout=column
-request.13.comment=Coule - peche
-request.14.location=13,0
-request.14.layout=row
-request.14.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#9' \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.14.repeat.name=typeObjetId
-request.14.repeat.layout=column
-request.14.comment=Remplace + peche
-request.15.location=14,0
-request.15.layout=row
-request.15.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#9' \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.15.repeat.name=typeObjetId
-request.15.repeat.layout=column
-request.15.comment=Remplace - peche
-request.16.location=15,0
-request.16.layout=row
-request.16.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#10' \
-or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3') \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.16.repeat.name=typeObjetId
-request.16.repeat.layout=column
-request.16.comment=Autre ou ancien peche + peche
-request.17.location=16,0
-request.17.layout=row
-request.17.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#10' \
-or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3') \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.17.repeat.name=typeObjetId
-request.17.repeat.layout=column
-request.17.comment=Autre ou ancien peche - peche
-request.18.location=17,0
-request.18.layout=row
-request.18.request=Select Sum(efo.count) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Join dcp.objectObservedSpecies efo \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and efo.species.speciesGroup.id = 'fr.ird.referential.common.SpeciesGroup#1239832683690#0.24333033683679461'
-request.18.repeat.name=typeObjetId
-request.18.repeat.layout=column
-request.18.comment=Nombre de tortues
+request.2.comment=visite + peche / visite - peche / Deploiement + peche / Deploiement - peche / Modifie + peche / Modifie - peche / Retire + peche / Retire - peche / Abandonne + peche / Abandonne - peche / Coule + peche / Coule - peche / Remplace + peche / Remplace - peche / Autre ou ancien peche + peche / Autre ou ancien peche - peche / Nombre de tortues
=====================================
core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationFobUsageMinimal.report
=====================================
@@ -33,17 +33,20 @@ repeatVariable.1.name=typeObjetId
repeatVariable.1.type=java.lang.String
repeatVariable.1.request=Select distinct (om.standardCode) \
From ObjectMaterialImpl om \
-Where standardCode is not null \
-And standardCode != '' \
-And (Select Count(dcp) \
+Where om.standardCode is not null \
+And om.standardCode != '' \
+And (om.standardCode In (Select Distinct(dcp.computedWhenArrivingSimplifiedObjectType) \
From fr.ird.observe.entities.data.ps.common.TripImpl m \
Join m.routeObs r \
Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and (dcp.computedWhenArrivingSimplifiedObjectType = om.standardCode Or dcp.computedWhenLeavingSimplifiedObjectType = om.standardCode) \
-) > 0
+Join a.floatingObject dcp With dcp.computedWhenArrivingSimplifiedObjectType Is Not Null \
+Where m.id In :tripId ) Or om.standardCode In (Select Distinct(dcp.computedWhenLeavingSimplifiedObjectType) \
+From fr.ird.observe.entities.data.ps.common.TripImpl m \
+Join m.routeObs r \
+Join r.activity a \
+Join a.floatingObject dcp With dcp.computedWhenLeavingSimplifiedObjectType Is Not Null \
+Where m.id In :tripId )) \
+Order by om.standardCode
repeatVariable.1.comment=liste des types CECOFAD en presence sur les donnees selectionnees
request.1.location=0,0
request.1.layout=row
@@ -56,74 +59,31 @@ request.1.repeat.name=typeObjetId
request.1.repeat.layout=column
request.2.location=1,0
request.2.layout=row
-request.2.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' \
-and (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' \
+request.2.request=Select \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' And (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#8' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#4' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#5' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#7' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#9' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#10' \
-or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3')
-request.2.repeat.name=typeObjetId
-request.2.repeat.layout=column
-request.2.comment=rencontres + peches
-request.3.location=2,0
-request.3.layout=row
-request.3.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' \
-and (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3') Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' And (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#8' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#4' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#5' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#7' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#9' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#10' \
-or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3')
-request.3.repeat.name=typeObjetId
-request.3.repeat.layout=column
-request.3.comment=rencontres - peches
-request.4.location=3,0
-request.4.layout=row
-request.4.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#1'
-request.4.repeat.name=typeObjetId
-request.4.repeat.layout=column
-request.4.comment=deployes
-request.5.location=4,0
-request.5.layout=row
-request.5.request=Select Sum(efo.count) \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3') Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#1' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectObservedSpecies Is Not Empty Then (Select Sum(efo.count) From dcp.objectObservedSpecies efo Where efo.species.speciesGroup.id = 'fr.ird.referential.common.SpeciesGroup#1239832683690#0.24333033683679461') Else 0 End) \
From fr.ird.observe.entities.data.ps.common.TripImpl m \
Join m.routeObs r \
Join r.activity a \
-Join a.floatingObject dcp \
-Join dcp.objectObservedSpecies efo \
+Join a.floatingObject dcp With dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId Or dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId \
Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and efo.species.speciesGroup.id = 'fr.ird.referential.common.SpeciesGroup#1239832683690#0.24333033683679461'
-request.5.repeat.name=typeObjetId
-request.5.repeat.layout=column
-request.5.comment=Nombre de tortues
+m.id In :tripId
+request.2.repeat.name=typeObjetId
+request.2.repeat.layout=column
+request.2.comment=rencontres + peches / rencontres - peches / deployes / Nombre de tortues
=====================================
core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationFobUsageExtendedReportFixture.java
=====================================
@@ -45,6 +45,5 @@ public class PsObservationFobUsageExtendedReportFixture extends ReportFixture {
Iterator<ReportRequestDefinition> requests = getRequestIterator(report);
assertReportRequestDimension(requests, RequestLayout.row, 0, 0);
assertReportRequestDimension(requests, RequestLayout.row, 1, 0);
- assertReportRequestDimension(requests, RequestLayout.row, 2, 0);
}
}
=====================================
core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationFobUsageMinimalReportFixture.java
=====================================
@@ -45,6 +45,5 @@ public class PsObservationFobUsageMinimalReportFixture extends ReportFixture {
Iterator<ReportRequestDefinition> requests = getRequestIterator(report);
assertReportRequestDimension(requests, RequestLayout.row, 0, 0);
assertReportRequestDimension(requests, RequestLayout.row, 1, 0);
- assertReportRequestDimension(requests, RequestLayout.row, 2, 0);
}
}
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psLogbookWellPlanCheck.properties
=====================================
@@ -25,7 +25,7 @@ syntax.rows=-1
syntax.columns=20
syntax.columnsHeader=Code bateau^Nom bateau^Date départ^Date arrivée^Date de route^Numéro activité^Heure activité^Logbook YFT^Logbook SKJ^Logbook BET^Logbook ALB^Logbook Autres^Plan de cuves YFT^Plan de cuves SKJ^Plan de cuves BET^Plan de cuves ALB^Plan de cuves Autres^Logbook Total^Plan de cuves Total^Différence
syntax.rowsHeader=
-syntax.nbRequests=5
+syntax.nbRequests=1
result.columns=20
result.rows=4
result.0=483^CAP BOJADOR^30/03/2019^08/04/2019^30/03/2019^1^15:12^0.0^123.0^43.0^0.0^0.0^0.0^0.0^12.0^0.0^0.0^166.0^12.0^154.0
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationFobUsageExtended.properties
=====================================
@@ -19,14 +19,14 @@
# <http://www.gnu.org/licenses/gpl-3.0.html>.
# #L%
###
-result.0=FOB - FOB^0^1^0^0^0^0^0^0^0^0^0^0^0^0^0^0^null
-result.1=DFAD - DFAD (FAD dérivant)^1^15^1^27^0^0^0^0^0^0^0^0^0^0^0^0^null
+result.0=DFAD - DFAD (FAD dérivant)^1^15^1^27^0^0^0^0^0^0^0^0^0^0^0^0^0
+result.1=FOB - FOB^0^1^0^0^0^0^0^0^0^0^0^0^0^0^0^0^0
result.columns=18
result.rows=2
syntax.columns=18
syntax.columnsHeader=Type de FOB^Visités Pêchés^Visités non Pêchés^Déploiement après Pêches^Déploiement seul^Modifiés Pêchés^Modifiés non Pêchés^Retirés Pêchés^Retirés non Pêchés^Abandonnés Pêchés^Abandonnés non Pêchés^Coulés Pêchés^Coulés non Pêchés^Remplacés Pêchés^Remplacés non Pêchés^Autre Pêchés^Autre non Pêchés^Tortues associées
syntax.description=Tableau récapitulatif des FOB rencontrés, par types CECOFAD et types d’actions (déploiements, simples visites, modifications, diverses modalités de retraits), avec et sans pêche, et nombres de tortues observées
syntax.name=Observations - Utilisation des FOB, tableau détaillé
-syntax.nbRequests=18
+syntax.nbRequests=2
syntax.rows=-1
syntax.rowsHeader=
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationFobUsageMinimal.properties
=====================================
@@ -19,14 +19,14 @@
# <http://www.gnu.org/licenses/gpl-3.0.html>.
# #L%
###
-result.0=FOB - FOB^0^1^0^null
-result.1=DFAD - DFAD (FAD dérivant)^1^15^28^null
+result.0=DFAD - DFAD (FAD dérivant)^1^15^28^0
+result.1=FOB - FOB^0^1^0^0
result.columns=5
result.rows=2
syntax.columns=5
syntax.columnsHeader=Type de FOB^Rencontrés pêchés^Rencontrés non pêchés^Déployés^Tortues associées
syntax.description=Tableau récapitulatif des FOB rencontrés, par types CECOFAD et types d’actions regroupés (rencontrés et pêchés, rencontrés non pêchés, déployés), et nombres de tortues observées
syntax.name=Observations - Utilisation des FOB, tableau simplifiée
-syntax.nbRequests=5
+syntax.nbRequests=2
syntax.rows=-1
syntax.rowsHeader=
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/c1eb65e2a2206c88041278a2…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/c1eb65e2a2206c88041278a2…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 2 commits: Lors d'exports massifs de données, le token expire rapidement et fait échouer...
by Tony CHEMIT (@tchemit) 18 Mar '24
by Tony CHEMIT (@tchemit) 18 Mar '24
18 Mar '24
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
a7ca15f7 by Tony Chemit at 2024-03-18T08:26:56+01:00
Lors d'exports massifs de données, le token expire rapidement et fait échouer la suite du processus - Closes #2839
- - - - -
c1eb65e2 by Tony Chemit at 2024-03-18T09:23:24+01:00
Amélioration de la taille des colonnes du tableau des résultats d'un rapport - Closes #2853
- - - - -
2 changed files:
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/export/actions/Prepare.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/ReportModel.java
Changes:
=====================================
client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/export/actions/Prepare.java
=====================================
@@ -58,7 +58,7 @@ public class Prepare extends ExportUIActionSupport {
addAdminWorker(ui.getPrepare().getToolTipText(), this::doPrepareAction0);
}
- private WizardState doPrepareAction0() throws Exception {
+ private WizardState doPrepareAction0() {
AdminUIModel model = ui.getModel();
List<CopyDataTask> data = CopyDataTask.of(TaskSide.FROM_LEFT, model.getSelectDataModel().getSelectionDataModel()).collect(Collectors.toList());
@@ -70,10 +70,6 @@ public class Prepare extends ExportUIActionSupport {
ConfigModel configModel = model.getConfigModel();
ObserveSwingDataSource targetSource = configModel.getRightSourceModel().getSafeSourceNotOpened();
- if (!targetSource.canWriteData()) {
- throw new IllegalStateException(String.format("Can't export if target source (%s) has no data rights", targetSource.getLabel()));
- }
-
ObserveSwingDataSource incomingSource = configModel.getLeftSourceModel().getSafeSourceNotOpened();
stepModel.setData(data);
=====================================
client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/ReportModel.java
=====================================
@@ -57,7 +57,11 @@ import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
import java.awt.BorderLayout;
+import java.awt.Component;
import java.awt.event.ItemEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
@@ -508,6 +512,9 @@ public class ReportModel extends AdminActionModel {
if (reportColumnRenderersParameters != null) {
reportColumnRenderersParameters.consumeColumnRenderersSwing(resultTable);
}
+ resizeColumnWidth(resultTable,-1);
+
+
} catch (Exception e) {
clearResult(ui);
throw e;
@@ -516,6 +523,30 @@ public class ReportModel extends AdminActionModel {
}
}
+ public static void resizeColumnWidth(JXTable table, int maxWidth) {
+ final TableColumnModel columnModel = table.getColumnModel();
+ for (int column = 0; column < table.getColumnCount(); column++) {
+ // Account for header size
+ TableColumn tableColumn = table.getColumnModel().getColumn(column);
+ TableCellRenderer renderer = tableColumn.getCellRenderer();
+ if (renderer==null) {
+ renderer = table.getTableHeader().getDefaultRenderer();
+ }
+ Component component = renderer.getTableCellRendererComponent(table, tableColumn.getHeaderValue(), false, false, -1, column);
+ double width = component.getPreferredSize().width;
+ for (int row = 0; row < table.getRowCount(); row++) {
+ renderer = table.getCellRenderer(row, column);
+ Component comp = table.prepareRenderer(renderer, row, column);
+ width = Math.max(comp.getPreferredSize().width + 1, width);
+ }
+ if (maxWidth>0 && width > maxWidth) {
+ width = maxWidth;
+ }
+ tableColumn.setPreferredWidth((int) width);
+ log.debug("Column {} - width (min/max/pref): {} {}/{}/{}", tableColumn.getModelIndex(), tableColumn.getWidth(), tableColumn.getMinWidth(), tableColumn.getMaxWidth(), tableColumn.getPreferredWidth());
+ }
+ }
+
private void clearResult(ReportUI ui) {
getResultModel().clear();
ui.getConfigurationPane().setTitle(null);
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/c375649ae2eaba140213ff6e…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/c375649ae2eaba140213ff6e…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][feature/issue-2848] 7 commits: Add more TimeLog and fix log.debug issues in ReportRequestExecutor
by Tony CHEMIT (@tchemit) 16 Mar '24
by Tony CHEMIT (@tchemit) 16 Mar '24
16 Mar '24
Tony CHEMIT pushed to branch feature/issue-2848 at ultreiaio / ird-observe
Commits:
88b13f8a by Tony Chemit at 2024-03-16T13:06:10+01:00
Add more TimeLog and fix log.debug issues in ReportRequestExecutor
- - - - -
71e34b77 by Tony Chemit at 2024-03-16T13:15:56+01:00
Optimisation du rapport Livre de bord - Vérification des plan de cuves - Closes #2849
- - - - -
0a4cdf76 by Tony Chemit at 2024-03-16T13:33:34+01:00
Optimisation du rapport Livre de bord - Plan de cuves - Closes #2850
- - - - -
d07f7bc5 by Tony Chemit at 2024-03-16T15:48:14+01:00
Optimisation du rapport Observations - Utilisation des FOB, tableau simplifiée - Closes #2851
- - - - -
c375649a by Tony Chemit at 2024-03-16T15:48:14+01:00
Optimisation du rapport Observations - Utilisation des FOB, tableau détaillé - Closes #2852
- - - - -
327f2a86 by Tony Chemit at 2024-03-16T15:49:36+01:00
Mise à jour du rapport psObservationAllActivities
- - - - -
8b17856e by Tony Chemit at 2024-03-16T15:59:00+01:00
Ajout du rapport psObservationActivitiesByZone
- - - - -
19 changed files:
- core/persistence/report/src/main/resources/META-INF/report/default/ps/psLogbookWellPlan.report
- core/persistence/report/src/main/resources/META-INF/report/default/ps/psLogbookWellPlanCheck.report
- + core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationActivitiesByZone.report
- core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationAllActivities.report
- core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationFobUsageExtended.report
- core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationFobUsageMinimal.report
- core/persistence/report/src/main/resources/META-INF/report/embedded.list
- core/persistence/report/src/test/java/fr/ird/observe/report/ToolsTest.java
- + core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationActivitiesByZoneReportFixture.java
- core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationFobUsageExtendedReportFixture.java
- core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationFobUsageMinimalReportFixture.java
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psLogbookWellPlanCheck.properties
- + core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationActivitiesByZone.properties
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationAllActivities.properties
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationFobUsageExtended.properties
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationFobUsageMinimal.properties
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService.properties
- src/site/markdown/report/embedded-reports.md
- toolkit/api-report/src/main/java/fr/ird/observe/report/ReportRequestExecutor.java
Changes:
=====================================
core/persistence/report/src/main/resources/META-INF/report/default/ps/psLogbookWellPlan.report
=====================================
@@ -39,19 +39,16 @@ w.well, \
r.date, \
a.number, \
Cast(a.time As java.sql.Time), \
-species.@i18nColumnName@, \
-weightCategory.@i18nColumnName@, \
+was.species.@i18nColumnName@, \
+was.weightCategory.@i18nColumnName@, \
was.weight \
From TripImpl t \
Join t.well w \
Join w.wellActivity wa \
Join wa.wellActivitySpecies was \
-Join was.species species \
-Join was.weightCategory weightCategory \
Join t.routeLogbook r \
Join r.activity a \
Join t.vessel vessel \
Left Join a.vesselActivity vesselActivity \
-Left Join a.schoolType schoolType \
Where t.id In :tripId and wa.activity = a \
Order By vessel.code,t.startDate,t.endDate,w.well,r.date,a.time
=====================================
core/persistence/report/src/main/resources/META-INF/report/default/ps/psLogbookWellPlanCheck.report
=====================================
@@ -29,16 +29,6 @@ description.es=
columns=Code bateau,Nom bateau,Date départ,Date arrivée,Date de route,Numéro activité,Heure activité,Logbook YFT,Logbook SKJ,Logbook BET,Logbook ALB,Logbook Autres,Plan de cuves YFT,Plan de cuves SKJ,Plan de cuves BET,Plan de cuves ALB,Plan de cuves Autres,Logbook Total,Plan de cuves Total,Différence
columns.en=Vessel code,Vessel name,Departure date,Landing date,Day of route,Activity number,Activity hour,Logbook YFT,Logbook SKJ,Logbook BET,Logbook ALB,Logbook others,Well plan YFT,Well plan SKJ,Well plan BET,Well plan ALB,Well plan others,Logbook Total,Well plan Total,Difference
columns.es=
-repeatVariable.1.name=activity
-repeatVariable.1.type=fr.ird.observe.entities.data.ps.logbook.Activity
-repeatVariable.1.request=Select a \
-From TripImpl t \
-Join t.routeLogbook r \
-Join r.activity a \
-Join t.vessel vessel \
-Left Join a.vesselActivity vesselActivity \
-Where t.id In :tripId and vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' \
-Order By vessel.code,t.startDate,r.date,a.number,a.time
request.1.location=0,0
request.1.layout=row
request.1.request=Select vessel.code,\
@@ -47,74 +37,33 @@ t.startDate, \
t.endDate, \
r.date, \
a.number, \
-Cast(a.time As java.sql.Time) \
-From TripImpl t \
-Join t.routeLogbook r \
-Join r.activity a \
-Join t.vessel vessel \
-Where t.id In :tripId and a = :activity
-request.1.repeat.name=activity
-request.1.repeat.layout=column
-request.2.location=7,0
-request.2.layout=row
-request.2.request=Select \
-Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then ct.weight Else 0.0 End), \
-Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then ct.weight Else 0.0 End), \
-Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then ct.weight Else 0.0 End), \
-Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685476#0.5618871286604711' Then ct.weight Else 0.0 End), \
-Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then 0.0 \
+Cast(a.time As java.sql.Time), \
+(Select Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then ct.weight Else 0.0 End) From fr.ird.observe.entities.data.ps.logbook.ActivityImpl aa Join a.catches ct Where aa = a), \
+(Select Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then ct.weight Else 0.0 End) From fr.ird.observe.entities.data.ps.logbook.ActivityImpl aa Join a.catches ct Where aa = a), \
+(Select Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then ct.weight Else 0.0 End) From fr.ird.observe.entities.data.ps.logbook.ActivityImpl aa Join a.catches ct Where aa = a), \
+(Select Sum(CASE ct.species.id When 'fr.ird.referential.common.Species#1239832685476#0.5618871286604711' Then ct.weight Else 0.0 End) From fr.ird.observe.entities.data.ps.logbook.ActivityImpl aa Join a.catches ct Where aa = a), \
+(Select Sum(CASE ct.species.id 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#1239832685476#0.5618871286604711' Then 0.0 \
-Else ct.weight End) \
-From TripImpl t \
-Join t.routeLogbook r \
-Join r.activity a \
-Join a.catches ct \
-Where t.id In :tripId and a = :activity
-request.2.repeat.name=activity
-request.2.repeat.layout=column
-request.3.location=12,0
-request.3.layout=row
-request.3.request=Select \
-Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then was.weight Else 0.0 End), \
-Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then was.weight Else 0.0 End), \
-Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then was.weight Else 0.0 End), \
-Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685476#0.5618871286604711' Then was.weight Else 0.0 End), \
-Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then 0.0 \
+Else ct.weight End) From fr.ird.observe.entities.data.ps.logbook.ActivityImpl aa Join a.catches ct Where aa = a), \
+(Select Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685474#0.8943253454598569' Then was.weight Else 0.0 End) From WellActivityImpl wa Join wa.wellActivitySpecies was Where wa.activity = a), \
+(Select Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685474#0.975344121171992' Then was.weight Else 0.0 End) From WellActivityImpl wa Join wa.wellActivitySpecies was Where wa.activity = a), \
+(Select Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685475#0.13349466123905152' Then was.weight Else 0.0 End) From WellActivityImpl wa Join wa.wellActivitySpecies was Where wa.activity = a), \
+(Select Sum(CASE was.species.id When 'fr.ird.referential.common.Species#1239832685476#0.5618871286604711' Then was.weight Else 0.0 End) From WellActivityImpl wa Join wa.wellActivitySpecies was Where wa.activity = a), \
+(Select Sum(CASE was.species.id 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#1239832685476#0.5618871286604711' Then 0.0 \
-Else was.weight End) \
-From TripImpl t \
-Join t.well w \
-Join w.wellActivity wa \
-Join wa.wellActivitySpecies was \
-Where t.id In :tripId and wa.activity = :activity
-request.3.repeat.name=activity
-request.3.repeat.layout=column
-request.4.location=17,0
-request.4.layout=row
-request.4.request=Select \
-Sum(ct.weight) \
+Else was.weight End) From WellActivityImpl wa Join wa.wellActivitySpecies was Where wa.activity = a), \
+(Select Sum(ct.weight) From fr.ird.observe.entities.data.ps.logbook.ActivityImpl aa Join a.catches ct Where aa = a), \
+(Select Sum(was.weight) From WellActivityImpl wa Join wa.wellActivitySpecies was Where wa.activity = a) \
From TripImpl t \
Join t.routeLogbook r \
-Join r.activity a \
-Join a.catches ct \
-Where t.id In :tripId and a = :activity
-request.4.repeat.name=activity
-request.4.repeat.layout=column
-request.5.location=18,0
-request.5.layout=row
-request.5.request=Select \
-Sum(was.weight) \
-From TripImpl t \
-Join t.well w \
-Join w.wellActivity wa \
-Join wa.wellActivitySpecies was \
-Where t.id In :tripId and wa.activity = :activity
-request.5.repeat.name=activity
-request.5.repeat.layout=column
+Join r.activity a With a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' \
+Join t.vessel vessel \
+Where t.id In :tripId \
+Order By vessel.code,t.startDate,r.date,a.number,a.time
operations.1.type=SubtractColum
operations.1.parameters=17|18|19
operations.2.type=SumColumn
=====================================
core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationActivitiesByZone.report
=====================================
@@ -0,0 +1,60 @@
+modelType=PS
+name=Observations - Types d'activités par zones FPA
+name.en=
+name.es=
+description=Tableau récapitulatif des types d'activités par zone FPA traversée
+description.en=
+description.es=
+columns=Zone,Visités Pêchés,Visités non Pêchés,Déploiement après Pêches,Déploiement seul,Modifiés Pêchés,Modifiés non Pêchés,Retirés Pêchés,Retirés non Pêchés,Abandonnés Pêchés,Abandonnés non Pêchés,Coulés Pêchés,Coulés non Pêchés,Remplacés Pêchés,Remplacés non Pêchés,Autre Pêchés,Autre non Pêchés,Tortues associées,Total
+columns.en=
+columns.es=
+repeatVariable.1.name=zoneFpaId
+repeatVariable.1.type=java.lang.String
+repeatVariable.1.request=Select z.id \
+From FpaZoneImpl z \
+Where z.id In (Select distinct (a.currentFpaZone.id) \
+ From fr.ird.observe.entities.data.ps.common.TripImpl m \
+ Join m.routeObs r \
+ Join r.activity a With a.currentFpaZone Is Not NULL \
+ Where m.id In :tripId And a.floatingObject Is Not Empty) \
+Order By z.code, z.@i18nColumnName@
+request.1.location=0,0
+request.1.layout=row
+request.1.request=Select concat(str(z.code) , ' - ', z.@i18nColumnName@) \
+From FpaZoneImpl z \
+Where \
+z.id = :zoneFpaId
+request.1.repeat.name=zoneFpaId
+request.1.repeat.layout=column
+request.2.location=1,0
+request.2.layout=row
+request.2.request=Select \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#2' And a.vesselActivity = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#2' And a.vesselActivity != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#1' And a.vesselActivity = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#1' And a.vesselActivity != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#8' And a.vesselActivity = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#8' And a.vesselActivity != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#4' And a.vesselActivity = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#4' And a.vesselActivity != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#5' And a.vesselActivity = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#5' And a.vesselActivity != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#7' And a.vesselActivity = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#7' And a.vesselActivity != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#9' And a.vesselActivity = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#9' And a.vesselActivity != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When ( dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#10' Or dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#3' ) And a.vesselActivity = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+SUM(CASE When ( dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#10' Or dcp.objectOperation = 'fr.ird.referential.ps.common.ObjectOperation#0#3' ) And a.vesselActivity != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.objectObservedSpecies Is Not Empty Then (Select Sum(efo.count) From fr.ird.observe.entities.data.ps.observation.FloatingObjectImpl dcp1 Join dcp1.objectObservedSpecies efo With efo.species.speciesGroup.id = 'fr.ird.referential.common.SpeciesGroup#1239832683690#0.24333033683679461' Where dcp1 = dcp) Else 0 End) \
+From fr.ird.observe.entities.data.ps.common.TripImpl m \
+Join m.routeObs r \
+Join r.activity a With a.currentFpaZone.id = :zoneFpaId \
+Join a.floatingObject dcp \
+Where m.id In :tripId
+request.2.repeat.name=zoneFpaId
+request.2.repeat.layout=column
+request.2.comment=visite + peche / visite - peche / Deploiement + peche / Deploiement - peche / Modifie + peche / Modifie - peche / Retire + peche / Retire - peche / Abandonne + peche / Abandonne - peche / Coule + peche / Coule - peche / Remplace + peche / Remplace - peche / Autre ou ancien peche + peche / Autre ou ancien peche - peche / Nombre de tortues
+operations.1.type=SumIntRow
+operations.1.parameters=0|1
+operations.2.type=SumIntColumn
+operations.2.parameters=0|1
=====================================
core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationAllActivities.report
=====================================
@@ -20,22 +20,25 @@
# #L%
###
modelType=PS
-name=Observations - Toutes les activités et leurs positions
-name.en=Observations - Activities with their geographic position
+name=Observations - Toutes les activités, leurs positions et zones FPA
+name.en=Observations - Activities with their geographic position and FPA zones
name.es=
description=Afficher toutes les activités et leurs positions géographiques
description.en=Display activities with their geographic position
description.es=
-columns=Jour,Heure observation,Latitude,Longitude,Activité,Commentaire
-columns.en=Date,Hour,Latitude,Longitude,Activity,Comment
+columns=Jour,Heure observation,Latitude,Longitude,Activité (code),Activité (nom),Zone FPA (code),Zone FPA (nom),Commentaire
+columns.en=Date,Hour,Latitude,Longitude,Activity (code), Activity (label),FPA zone (code), FPA zone (label), Comment
columns.es=
request.1.location=0,0
request.1.layout=row
-request.1.request=Select r.date, Cast(a.time As java.sql.Time), a.latitude, a.longitude, ab.@i18nColumnName@, a.comment \
+request.1.request=Select r.date, Cast(a.time As java.sql.Time), a.latitude, a.longitude, ab.code, ab.@i18nColumnName@, z.code, z.@i18nColumnName@, a.comment \
From TripImpl m \
Join m.routeObs r \
Join r.activity a \
Join a.vesselActivity ab \
+Left Join a.currentFpaZone z \
Where \
m.id In :tripId \
Order By r.date, a.time
+
+
=====================================
core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationFobUsageExtended.report
=====================================
@@ -33,17 +33,20 @@ repeatVariable.1.name=typeObjetId
repeatVariable.1.type=java.lang.String
repeatVariable.1.request=Select distinct (om.standardCode) \
From ObjectMaterialImpl om \
-Where standardCode is not null \
-And standardCode != '' \
-And (Select Count(dcp) \
+Where om.standardCode is not null \
+And om.standardCode != '' \
+And (om.standardCode In (Select Distinct(dcp.computedWhenArrivingSimplifiedObjectType) \
From fr.ird.observe.entities.data.ps.common.TripImpl m \
Join m.routeObs r \
Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and (dcp.computedWhenArrivingSimplifiedObjectType = om.standardCode Or dcp.computedWhenLeavingSimplifiedObjectType = om.standardCode) \
-) > 0
+Join a.floatingObject dcp With dcp.computedWhenArrivingSimplifiedObjectType Is Not Null \
+Where m.id In :tripId ) Or om.standardCode In (Select Distinct(dcp.computedWhenLeavingSimplifiedObjectType) \
+From fr.ird.observe.entities.data.ps.common.TripImpl m \
+Join m.routeObs r \
+Join r.activity a \
+Join a.floatingObject dcp With dcp.computedWhenLeavingSimplifiedObjectType Is Not Null \
+Where m.id In :tripId )) \
+Order by om.standardCode
request.1.location=0,0
request.1.layout=row
request.1.request=Select concat(str(om.standardCode) , ' - ', om.@i18nColumnName@) \
@@ -55,258 +58,30 @@ request.1.repeat.name=typeObjetId
request.1.repeat.layout=column
request.2.location=1,0
request.2.layout=row
-request.2.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
+request.2.request=Select \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#1' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#1' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#8' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#8' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#4' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#4' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#5' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#5' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#7' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#7' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#9' And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#9' And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#10' Or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3') And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#10' Or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3') And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectObservedSpecies Is Not Empty Then (Select Sum(efo.count) From fr.ird.observe.entities.data.ps.observation.FloatingObjectImpl dcp1 Join dcp1.objectObservedSpecies efo With efo.species.speciesGroup.id = 'fr.ird.referential.common.SpeciesGroup#1239832683690#0.24333033683679461' Where dcp1 = dcp) Else 0 End) \
+From fr.ird.observe.entities.data.ps.common.TripImpl m \
+Join m.routeObs r \
+Join r.activity a \
+Join a.floatingObject dcp With dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId Or dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
+Where \
+m.id In :tripId
request.2.repeat.name=typeObjetId
request.2.repeat.layout=column
-request.2.comment=visite + peche
-request.3.location=2,0
-request.3.layout=row
-request.3.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.3.repeat.name=typeObjetId
-request.3.repeat.layout=column
-request.3.comment=visite - peche
-request.4.location=3,0
-request.4.layout=row
-request.4.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#1' \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.4.repeat.name=typeObjetId
-request.4.repeat.layout=column
-request.4.comment=Deploiement + peche
-request.5.location=4,0
-request.5.layout=row
-request.5.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#1' \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.5.repeat.name=typeObjetId
-request.5.repeat.layout=column
-request.5.comment=Deploiement - peche
-request.6.location=5,0
-request.6.layout=row
-request.6.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#8' \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.6.repeat.name=typeObjetId
-request.6.repeat.layout=column
-request.6.comment=Modifie + peche
-request.7.location=6,0
-request.7.layout=row
-request.7.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#8' \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.7.repeat.name=typeObjetId
-request.7.repeat.layout=column
-request.7.comment=Modifie - peche
-request.8.location=7,0
-request.8.layout=row
-request.8.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#4' \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.8.repeat.name=typeObjetId
-request.8.repeat.layout=column
-request.8.comment=Retire + peche
-request.9.location=8,0
-request.9.layout=row
-request.9.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#4' \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.9.repeat.name=typeObjetId
-request.9.repeat.layout=column
-request.9.comment=Retire - peche
-request.10.location=9,0
-request.10.layout=row
-request.10.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#5' \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.10.repeat.name=typeObjetId
-request.10.repeat.layout=column
-request.10.comment=Abandonne + peche
-request.11.location=10,0
-request.11.layout=row
-request.11.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#5' \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.11.repeat.name=typeObjetId
-request.11.repeat.layout=column
-request.11.comment=Abandonne - peche
-request.12.location=11,0
-request.12.layout=row
-request.12.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#7' \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.12.repeat.name=typeObjetId
-request.12.repeat.layout=column
-request.12.comment=Coule + peche
-request.13.location=12,0
-request.13.layout=row
-request.13.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#7' \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.13.repeat.name=typeObjetId
-request.13.repeat.layout=column
-request.13.comment=Coule - peche
-request.14.location=13,0
-request.14.layout=row
-request.14.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#9' \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.14.repeat.name=typeObjetId
-request.14.repeat.layout=column
-request.14.comment=Remplace + peche
-request.15.location=14,0
-request.15.layout=row
-request.15.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#9' \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.15.repeat.name=typeObjetId
-request.15.repeat.layout=column
-request.15.comment=Remplace - peche
-request.16.location=15,0
-request.16.layout=row
-request.16.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#10' \
-or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3') \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.16.repeat.name=typeObjetId
-request.16.repeat.layout=column
-request.16.comment=Autre ou ancien peche + peche
-request.17.location=16,0
-request.17.layout=row
-request.17.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#10' \
-or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3') \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586'
-request.17.repeat.name=typeObjetId
-request.17.repeat.layout=column
-request.17.comment=Autre ou ancien peche - peche
-request.18.location=17,0
-request.18.layout=row
-request.18.request=Select Sum(efo.count) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Join dcp.objectObservedSpecies efo \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and efo.species.speciesGroup.id = 'fr.ird.referential.common.SpeciesGroup#1239832683690#0.24333033683679461'
-request.18.repeat.name=typeObjetId
-request.18.repeat.layout=column
-request.18.comment=Nombre de tortues
+request.2.comment=visite + peche / visite - peche / Deploiement + peche / Deploiement - peche / Modifie + peche / Modifie - peche / Retire + peche / Retire - peche / Abandonne + peche / Abandonne - peche / Coule + peche / Coule - peche / Remplace + peche / Remplace - peche / Autre ou ancien peche + peche / Autre ou ancien peche - peche / Nombre de tortues
=====================================
core/persistence/report/src/main/resources/META-INF/report/default/ps/psObservationFobUsageMinimal.report
=====================================
@@ -33,17 +33,20 @@ repeatVariable.1.name=typeObjetId
repeatVariable.1.type=java.lang.String
repeatVariable.1.request=Select distinct (om.standardCode) \
From ObjectMaterialImpl om \
-Where standardCode is not null \
-And standardCode != '' \
-And (Select Count(dcp) \
+Where om.standardCode is not null \
+And om.standardCode != '' \
+And (om.standardCode In (Select Distinct(dcp.computedWhenArrivingSimplifiedObjectType) \
From fr.ird.observe.entities.data.ps.common.TripImpl m \
Join m.routeObs r \
Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and (dcp.computedWhenArrivingSimplifiedObjectType = om.standardCode Or dcp.computedWhenLeavingSimplifiedObjectType = om.standardCode) \
-) > 0
+Join a.floatingObject dcp With dcp.computedWhenArrivingSimplifiedObjectType Is Not Null \
+Where m.id In :tripId ) Or om.standardCode In (Select Distinct(dcp.computedWhenLeavingSimplifiedObjectType) \
+From fr.ird.observe.entities.data.ps.common.TripImpl m \
+Join m.routeObs r \
+Join r.activity a \
+Join a.floatingObject dcp With dcp.computedWhenLeavingSimplifiedObjectType Is Not Null \
+Where m.id In :tripId )) \
+Order by om.standardCode
repeatVariable.1.comment=liste des types CECOFAD en presence sur les donnees selectionnees
request.1.location=0,0
request.1.layout=row
@@ -56,74 +59,31 @@ request.1.repeat.name=typeObjetId
request.1.repeat.layout=column
request.2.location=1,0
request.2.layout=row
-request.2.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' \
-and (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' \
+request.2.request=Select \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And a.vesselActivity.id = 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' And (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#8' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#4' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#5' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#7' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#9' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#10' \
-or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3')
-request.2.repeat.name=typeObjetId
-request.2.repeat.layout=column
-request.2.comment=rencontres + peches
-request.3.location=2,0
-request.3.layout=row
-request.3.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' \
-and (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3') Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And a.vesselActivity.id != 'fr.ird.referential.ps.common.VesselActivity#1239832675369#0.12552908048322586' And (dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#2' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#8' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#4' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#5' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#7' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#9' \
or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#10' \
-or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3')
-request.3.repeat.name=typeObjetId
-request.3.repeat.layout=column
-request.3.comment=rencontres - peches
-request.4.location=3,0
-request.4.layout=row
-request.4.request=Select Count(dcp) \
-From fr.ird.observe.entities.data.ps.common.TripImpl m \
-Join m.routeObs r \
-Join r.activity a \
-Join a.floatingObject dcp \
-Where \
-m.id In :tripId \
-and dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId \
-and dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#1'
-request.4.repeat.name=typeObjetId
-request.4.repeat.layout=column
-request.4.comment=deployes
-request.5.location=4,0
-request.5.layout=row
-request.5.request=Select Sum(efo.count) \
+or dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#3') Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId And dcp.objectOperation.id = 'fr.ird.referential.ps.common.ObjectOperation#0#1' Then 1 Else 0 End), \
+Sum(Case When dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId And dcp.objectObservedSpecies Is Not Empty Then (Select Sum(efo.count) From fr.ird.observe.entities.data.ps.observation.FloatingObjectImpl dcp1 Join dcp1.objectObservedSpecies efo With efo.species.speciesGroup.id = 'fr.ird.referential.common.SpeciesGroup#1239832683690#0.24333033683679461' Where dcp1 = dcp) Else 0 End) \
From fr.ird.observe.entities.data.ps.common.TripImpl m \
Join m.routeObs r \
Join r.activity a \
-Join a.floatingObject dcp \
-Join dcp.objectObservedSpecies efo \
+Join a.floatingObject dcp With dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId Or dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId \
Where \
-m.id In :tripId \
-and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \
-and efo.species.speciesGroup.id = 'fr.ird.referential.common.SpeciesGroup#1239832683690#0.24333033683679461'
-request.5.repeat.name=typeObjetId
-request.5.repeat.layout=column
-request.5.comment=Nombre de tortues
+m.id In :tripId
+request.2.repeat.name=typeObjetId
+request.2.repeat.layout=column
+request.2.comment=rencontres + peches / rencontres - peches / deployes / Nombre de tortues
=====================================
core/persistence/report/src/main/resources/META-INF/report/embedded.list
=====================================
@@ -17,6 +17,7 @@ default/ps/psLogbookSampleSpeciesMeasuresCount.report
default/ps/psLogbookTrip.report
default/ps/psLogbookWellPlan.report
default/ps/psLogbookWellPlanCheck.report
+default/ps/psObservationActivitiesByZone.report
default/ps/psObservationActivityWithComment.report
default/ps/psObservationAllActivities.report
default/ps/psObservationCatch.report
=====================================
core/persistence/report/src/test/java/fr/ird/observe/report/ToolsTest.java
=====================================
@@ -47,7 +47,7 @@ import java.util.Objects;
public class ToolsTest {
- public static final int REPORTS_COUNT_COUNT = 34;
+ public static final int REPORTS_COUNT_COUNT = 35;
private static Path reportsPath(Path basedir) {
return basedir.resolve("src").resolve("main").resolve("resources").resolve("META-INF").resolve("report");
=====================================
core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationActivitiesByZoneReportFixture.java
=====================================
@@ -0,0 +1,48 @@
+package fr.ird.observe.services.service.report.ps;
+
+/*-
+ * #%L
+ * ObServe Core :: Services :: Test
+ * %%
+ * Copyright (C) 2008 - 2024 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%
+ */
+
+import com.google.auto.service.AutoService;
+import fr.ird.observe.report.Report;
+import fr.ird.observe.report.definition.ReportRequestDefinition;
+import fr.ird.observe.report.definition.RequestLayout;
+import fr.ird.observe.services.service.ReportFixture;
+
+import java.util.Iterator;
+
+/**
+ * Created at 15/03/2024.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ * @since 9.3.0
+ */
+(a)AutoService(ReportFixture.class)
+public class PsObservationActivitiesByZoneReportFixture extends ReportFixture {
+ @Override
+ public void assertSyntax(Report report) {
+ super.assertSyntax(report);
+ Iterator<ReportRequestDefinition> requests = getRequestIterator(report);
+ assertReportRequestDimension(requests, RequestLayout.row, 0, 0);
+ assertReportRequestDimension(requests, RequestLayout.row, 1, 0);
+ }
+}
=====================================
core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationFobUsageExtendedReportFixture.java
=====================================
@@ -45,6 +45,5 @@ public class PsObservationFobUsageExtendedReportFixture extends ReportFixture {
Iterator<ReportRequestDefinition> requests = getRequestIterator(report);
assertReportRequestDimension(requests, RequestLayout.row, 0, 0);
assertReportRequestDimension(requests, RequestLayout.row, 1, 0);
- assertReportRequestDimension(requests, RequestLayout.row, 2, 0);
}
}
=====================================
core/services/test/src/main/java/fr/ird/observe/services/service/report/ps/PsObservationFobUsageMinimalReportFixture.java
=====================================
@@ -45,6 +45,5 @@ public class PsObservationFobUsageMinimalReportFixture extends ReportFixture {
Iterator<ReportRequestDefinition> requests = getRequestIterator(report);
assertReportRequestDimension(requests, RequestLayout.row, 0, 0);
assertReportRequestDimension(requests, RequestLayout.row, 1, 0);
- assertReportRequestDimension(requests, RequestLayout.row, 2, 0);
}
}
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psLogbookWellPlanCheck.properties
=====================================
@@ -25,7 +25,7 @@ syntax.rows=-1
syntax.columns=20
syntax.columnsHeader=Code bateau^Nom bateau^Date départ^Date arrivée^Date de route^Numéro activité^Heure activité^Logbook YFT^Logbook SKJ^Logbook BET^Logbook ALB^Logbook Autres^Plan de cuves YFT^Plan de cuves SKJ^Plan de cuves BET^Plan de cuves ALB^Plan de cuves Autres^Logbook Total^Plan de cuves Total^Différence
syntax.rowsHeader=
-syntax.nbRequests=5
+syntax.nbRequests=1
result.columns=20
result.rows=4
result.0=483^CAP BOJADOR^30/03/2019^08/04/2019^30/03/2019^1^15:12^0.0^123.0^43.0^0.0^0.0^0.0^0.0^12.0^0.0^0.0^166.0^12.0^154.0
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationActivitiesByZone.properties
=====================================
@@ -0,0 +1,33 @@
+###
+# #%L
+# ObServe Core :: Services :: Test
+# %%
+# Copyright (C) 2008 - 2024 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.rows=-1
+syntax.columns=19
+syntax.columnsHeader=Zone^Visités Pêchés^Visités non Pêchés^Déploiement après Pêches^Déploiement seul^Modifiés Pêchés^Modifiés non Pêchés^Retirés Pêchés^Retirés non Pêchés^Abandonnés Pêchés^Abandonnés non Pêchés^Coulés Pêchés^Coulés non Pêchés^Remplacés Pêchés^Remplacés non Pêchés^Autre Pêchés^Autre non Pêchés^Tortues associées^Total
+syntax.rowsHeader=
+syntax.nbRequests=2
+result.columns=19
+result.rows=3
+result.0=CIV - Côte d'Ivoire^1^9^1^0^0^0^0^0^0^0^0^0^0^0^0^0^0^11
+result.1=LBR - Libéria^0^7^0^27^0^0^0^0^0^0^0^0^0^0^0^0^0^34
+result.2=Total^1^16^1^27^0^0^0^0^0^0^0^0^0^0^0^0^0^45
+syntax.name=Observations - Types d'activités par zones FPA
+syntax.description=Tableau récapitulatif des types d'activités par zone FPA traversée
\ No newline at end of file
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationAllActivities.properties
=====================================
@@ -19,152 +19,152 @@
# <http://www.gnu.org/licenses/gpl-3.0.html>.
# #L%
###
-result.0=30/03/2019^18:00^5.2833^-4.0^Au port^Départ du port de pêche pour la fin de la marée
-result.1=30/03/2019^19:00^5.1667^-4.0^Transit (route sans recherche)^Route de nuit
-result.2=31/03/2019^06:13^3.95^-5.2667^Recherche (général)^null
-result.3=31/03/2019^06:54^3.95^-5.35^Thonier arrivant sur le système détecté^null
-result.4=31/03/2019^07:50^3.9667^-5.35^Pêche (larguage du skiff)^null
-result.5=31/03/2019^10:55^3.9833^-5.2833^Thonier arrivant sur le système détecté^null
-result.6=31/03/2019^11:24^3.9833^-5.2667^Pêche (larguage du skiff)^null
-result.7=31/03/2019^14:56^3.95^-5.3333^Thonier arrivant sur le système détecté^
-result.8=31/03/2019^15:05^3.95^-5.3333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.9=31/03/2019^16:11^3.8167^-5.4167^Thonier arrivant sur le système détecté^
-result.10=31/03/2019^16:22^3.8333^-5.4167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.11=31/03/2019^16:53^3.7833^-5.4833^Thonier arrivant sur le système détecté^
-result.12=31/03/2019^17:03^3.7833^-5.4833^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.13=31/03/2019^18:03^3.7833^-5.4667^Recherche (général)^null
-result.14=31/03/2019^18:44^3.8667^-5.4833^Fin de veille^null
-result.15=31/03/2019^19:00^3.9^-5.5^En dérive de nuit (moteur stoppé)^null
-result.16=01/04/2019^06:15^3.9833^-5.3167^Recherche (général)^null
-result.17=01/04/2019^07:43^3.8333^-5.2667^Thonier arrivant sur le système détecté^
-result.18=01/04/2019^07:56^3.8333^-5.25^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.19=01/04/2019^08:15^3.8833^-5.2333^Recherche (général)^null
-result.20=01/04/2019^08:41^3.9333^-5.2833^Thonier arrivant sur le système détecté^null
-result.21=01/04/2019^09:41^3.9167^-5.25^Pêche (larguage du skiff)^null
-result.22=01/04/2019^09:41^3.9167^-5.25^Pêche (larguage du skiff)^null
-result.23=01/04/2019^12:15^3.9^-5.2833^Recherche (général)^null
-result.24=01/04/2019^12:34^3.9333^-5.3^Thonier arrivant sur le système détecté^null
-result.25=01/04/2019^12:40^3.9333^-5.3^Pêche (larguage du skiff)^null
-result.26=01/04/2019^16:15^3.8833^-5.2667^Recherche (général)^null
-result.27=01/04/2019^16:38^3.9333^-5.3^Thonier arrivant sur le système détecté^null
-result.28=01/04/2019^16:51^3.9333^-5.3^Pêche (larguage du skiff)^
-result.29=01/04/2019^21:17^3.95^-5.2167^Fin de veille^null
-result.30=01/04/2019^21:18^3.95^-5.2167^Transit (route sans recherche)^Route jusqu'à 22H
-result.31=02/04/2019^06:15^3.9^-5.1833^Recherche (général)^null
-result.32=02/04/2019^06:57^3.9333^-5.25^Thonier arrivant sur le système détecté^null
-result.33=02/04/2019^07:11^3.95^-5.25^Pêche (larguage du skiff)^
-result.34=02/04/2019^10:15^3.9167^-5.2167^Recherche (général)^null
-result.35=02/04/2019^12:15^3.8833^-5.25^Recherche (général)^null
-result.36=02/04/2019^13:58^3.9^-4.9333^Thonier arrivant sur le système détecté^
-result.37=02/04/2019^14:15^3.9^-4.9333^Thonier arrivant sur le système détecté^null
-result.38=02/04/2019^14:22^3.9^-4.95^Pêche (larguage du skiff)^null
-result.39=02/04/2019^18:44^3.8833^-4.95^Fin de veille^null
-result.40=02/04/2019^19:12^3.8667^-5.0^En dérive de nuit (moteur stoppé)^null
-result.41=03/04/2019^06:15^3.9^-4.9^Thonier arrivant sur le système détecté^
-result.42=03/04/2019^07:16^3.8833^-4.95^Thonier arrivant sur le système détecté^null
-result.43=03/04/2019^07:51^3.8833^-4.9333^Pêche (larguage du skiff)^null
-result.44=03/04/2019^10:15^3.8833^-4.9167^Thonier arrivant sur le système détecté^Banc sous autre senneur
-result.45=03/04/2019^12:15^3.9^-4.9167^Thonier arrivant sur le système détecté^
-result.46=03/04/2019^14:15^3.9^-4.8833^Recherche (général)^null
-result.47=03/04/2019^15:28^3.9667^-4.85^Thonier arrivant sur le système détecté^
-result.48=03/04/2019^15:36^3.9667^-4.85^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.49=03/04/2019^16:15^3.8833^-4.9167^Recherche (général)^null
-result.50=03/04/2019^18:15^3.8667^-4.9833^Recherche (général)^null
-result.51=03/04/2019^18:42^3.8333^-5.05^Fin de veille^null
-result.52=03/04/2019^18:50^3.8167^-5.05^En dérive de nuit (moteur stoppé)^null
-result.53=04/04/2019^06:12^3.9^-4.8667^Recherche (général)^
-result.54=04/04/2019^08:12^3.8667^-4.8833^Recherche (général)^null
-result.55=04/04/2019^10:12^3.6^-4.6167^Recherche (général)^null
-result.56=04/04/2019^12:04^3.3^-4.4333^Thonier arrivant sur le système détecté^
-result.57=04/04/2019^12:12^3.3^-4.4333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.58=04/04/2019^14:12^3.05^-4.7^Recherche (général)^null
-result.59=04/04/2019^15:43^2.8667^-4.9167^Thonier arrivant sur le système détecté^
-result.60=04/04/2019^15:46^2.8667^-4.9167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.61=04/04/2019^16:12^2.8167^-5.0^Recherche (général)^null
-result.62=04/04/2019^18:12^2.6333^-5.3333^Recherche (général)^null
-result.63=04/04/2019^18:41^2.6^-5.4167^Fin de veille^null
-result.64=04/04/2019^18:42^2.6^-5.4167^Route de nuit vers objet^Route toute la nuit
-result.65=05/04/2019^06:20^1.5167^-7.4^Thonier arrivant sur le système détecté^
-result.66=05/04/2019^06:28^1.5^-7.4167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.67=05/04/2019^07:02^1.5^-7.5333^Changement de zone FPA^null
-result.68=05/04/2019^07:11^1.5^-7.55^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.69=05/04/2019^07:34^1.5^-7.6333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.70=05/04/2019^08:03^1.4667^-7.6833^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.71=05/04/2019^08:20^1.4333^-7.7167^Recherche (général)^null
-result.72=05/04/2019^08:32^1.4^-7.7333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.73=05/04/2019^08:38^1.3833^-7.75^Thonier arrivant sur le système détecté^
-result.74=05/04/2019^08:50^1.3667^-7.7333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.75=05/04/2019^09:07^1.4^-7.7667^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.76=05/04/2019^09:37^1.45^-7.8667^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.77=05/04/2019^10:02^1.4833^-7.9167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.78=05/04/2019^10:20^1.5^-7.9667^Recherche (général)^null
-result.79=05/04/2019^10:29^1.4833^-7.9833^Thonier arrivant sur le système détecté^
-result.80=05/04/2019^10:41^1.5^-8.0^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.81=05/04/2019^11:03^1.5333^-8.05^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.82=05/04/2019^11:31^1.5833^-8.1167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.83=05/04/2019^12:00^1.65^-8.1833^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.84=05/04/2019^12:20^1.7333^-8.2333^Recherche (général)^null
-result.85=05/04/2019^12:35^1.75^-8.2667^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.86=05/04/2019^13:04^1.8167^-8.3167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.87=05/04/2019^13:30^1.85^-8.3333^Thonier arrivant sur le système détecté^
-result.88=05/04/2019^13:38^1.8667^-8.3333^Opération sur objet flottant (visite, pose, modification, récupération)^
-result.89=05/04/2019^14:00^1.9167^-8.3667^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.90=05/04/2019^14:19^1.95^-8.4167^Thonier arrivant sur le système détecté^
-result.91=05/04/2019^14:26^1.95^-8.4167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.92=05/04/2019^15:05^2.0667^-8.4333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.93=05/04/2019^15:35^2.15^-8.4333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.94=05/04/2019^15:36^2.15^-8.4333^Thonier arrivant sur le système détecté^
-result.95=05/04/2019^15:46^2.15^-8.4333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.96=05/04/2019^16:02^2.2^-8.4333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.97=05/04/2019^16:20^2.2167^-8.4167^Recherche (général)^null
-result.98=05/04/2019^16:36^2.2667^-8.4^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.99=05/04/2019^16:46^2.2333^-8.3833^Thonier arrivant sur le système détecté^
-result.100=05/04/2019^16:53^2.2333^-8.3833^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.101=05/04/2019^17:08^2.2667^-8.3667^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.102=05/04/2019^17:17^2.2833^-8.35^Thonier arrivant sur le système détecté^
-result.103=05/04/2019^17:24^2.2833^-8.35^Opération sur objet flottant (visite, pose, modification, récupération)^
-result.104=05/04/2019^17:34^2.3^-8.3333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.105=05/04/2019^17:37^2.3167^-8.3333^Fin de veille^null
-result.106=05/04/2019^18:00^2.3667^-8.3167^Thonier arrivant sur le système détecté^
-result.107=05/04/2019^18:15^2.35^-8.3167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.108=05/04/2019^18:40^2.3333^-8.35^En dérive de nuit (moteur stoppé)^null
-result.109=06/04/2019^06:35^2.35^-8.3333^Avaries en mer^Avarie au niveau du moteur, navire stoppé (réparation en cours)
-result.110=06/04/2019^12:05^2.3333^-8.3333^Avaries en mer^Avarie au niveau du moteur, navire stoppé (réparation en cours)
-result.111=06/04/2019^17:55^2.3667^-8.2833^Transit (route sans recherche)^Réparation de l'avarie terminée.
-result.112=06/04/2019^18:00^2.3667^-8.2833^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.113=06/04/2019^18:16^2.3833^-8.25^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.114=06/04/2019^18:26^2.4^-8.2167^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.115=06/04/2019^18:36^2.4167^-8.2^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.116=06/04/2019^18:46^2.45^-8.1833^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.117=06/04/2019^18:57^2.4667^-8.15^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.118=06/04/2019^19:05^2.4833^-8.1333^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.119=06/04/2019^19:06^2.4833^-8.1333^Transit (route sans recherche)^Route de nuit
-result.120=07/04/2019^06:24^3.4333^-6.2^Changement de zone FPA^Changement de zone effectué le 06/04/2019 à 22H35 T.U à la position 02°45N et 007°33 W
-result.121=07/04/2019^08:24^3.65^-5.8667^Recherche (général)^null
-result.122=07/04/2019^10:24^3.8167^-5.5^Recherche (général)^null
-result.123=07/04/2019^12:24^3.9167^-5.1167^Thonier arrivant sur le système détecté^
-result.124=07/04/2019^12:43^3.9167^-5.1^Opération sur objet flottant (visite, pose, modification, récupération)^null
-result.125=07/04/2019^12:52^3.9167^-5.0833^Thonier arrivant sur le système détecté^
-result.126=07/04/2019^14:18^3.9^-5.0833^Thonier arrivant sur le système détecté^null
-result.127=07/04/2019^14:21^3.9^-5.0833^Pêche (larguage du skiff)^null
-result.128=07/04/2019^18:24^3.9^-4.8833^Recherche (général)^null
-result.129=07/04/2019^18:33^3.9^-4.8667^Fin de veille^Averse
-result.130=07/04/2019^18:34^3.9^-4.8667^Transit (route sans recherche)^Route de nuit jusqu'à 1H
-result.131=08/04/2019^06:30^4.0667^-3.45^Transit (route sans recherche)^navire en approche pour le début de l'aviataillement
-result.132=08/04/2019^07:30^4.0667^-3.45^Autres (à préciser dans les notes)^Début de l'aviatillement en gasoil.
-result.133=08/04/2019^11:34^4.1833^-3.3333^Autres (à préciser dans les notes)^Fin avitaillement en gasoil, poursuite de la route
-result.134=08/04/2019^12:30^4.3167^-3.4167^Recherche (général)^null
-result.135=08/04/2019^14:30^4.6^-3.6^Recherche (général)^null
-result.136=08/04/2019^16:00^4.8167^-3.75^Fin de veille^null
-result.137=08/04/2019^16:30^4.8833^-3.8167^Transit (route sans recherche)^
-result.138=08/04/2019^18:30^5.1^-3.95^Transit (route sans recherche)^null
-result.139=08/04/2019^21:05^5.2833^-4.0167^Au port^Navire au port de pêche d'Abidjan.
-syntax.name=Observations - Toutes les activités et leurs positions
+result.0=30/03/2019^18:00^5.2833^-4.0^0^Au port^CIV^Côte d'Ivoire^Départ du port de pêche pour la fin de la marée
+result.1=30/03/2019^19:00^5.1667^-4.0^1^Transit (route sans recherche)^CIV^Côte d'Ivoire^Route de nuit
+result.2=31/03/2019^06:13^3.95^-5.2667^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.3=31/03/2019^06:54^3.95^-5.35^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.4=31/03/2019^07:50^3.9667^-5.35^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^null
+result.5=31/03/2019^10:55^3.9833^-5.2833^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.6=31/03/2019^11:24^3.9833^-5.2667^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^null
+result.7=31/03/2019^14:56^3.95^-5.3333^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.8=31/03/2019^15:05^3.95^-5.3333^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.9=31/03/2019^16:11^3.8167^-5.4167^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.10=31/03/2019^16:22^3.8333^-5.4167^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.11=31/03/2019^16:53^3.7833^-5.4833^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.12=31/03/2019^17:03^3.7833^-5.4833^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.13=31/03/2019^18:03^3.7833^-5.4667^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.14=31/03/2019^18:44^3.8667^-5.4833^16^Fin de veille^CIV^Côte d'Ivoire^null
+result.15=31/03/2019^19:00^3.9^-5.5^9^En dérive de nuit (moteur stoppé)^CIV^Côte d'Ivoire^null
+result.16=01/04/2019^06:15^3.9833^-5.3167^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.17=01/04/2019^07:43^3.8333^-5.2667^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.18=01/04/2019^07:56^3.8333^-5.25^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.19=01/04/2019^08:15^3.8833^-5.2333^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.20=01/04/2019^08:41^3.9333^-5.2833^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.21=01/04/2019^09:41^3.9167^-5.25^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^null
+result.22=01/04/2019^09:41^3.9167^-5.25^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^null
+result.23=01/04/2019^12:15^3.9^-5.2833^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.24=01/04/2019^12:34^3.9333^-5.3^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.25=01/04/2019^12:40^3.9333^-5.3^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^null
+result.26=01/04/2019^16:15^3.8833^-5.2667^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.27=01/04/2019^16:38^3.9333^-5.3^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.28=01/04/2019^16:51^3.9333^-5.3^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^
+result.29=01/04/2019^21:17^3.95^-5.2167^16^Fin de veille^CIV^Côte d'Ivoire^null
+result.30=01/04/2019^21:18^3.95^-5.2167^1^Transit (route sans recherche)^CIV^Côte d'Ivoire^Route jusqu'à 22H
+result.31=02/04/2019^06:15^3.9^-5.1833^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.32=02/04/2019^06:57^3.9333^-5.25^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.33=02/04/2019^07:11^3.95^-5.25^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^
+result.34=02/04/2019^10:15^3.9167^-5.2167^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.35=02/04/2019^12:15^3.8833^-5.25^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.36=02/04/2019^13:58^3.9^-4.9333^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.37=02/04/2019^14:15^3.9^-4.9333^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.38=02/04/2019^14:22^3.9^-4.95^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^null
+result.39=02/04/2019^18:44^3.8833^-4.95^16^Fin de veille^CIV^Côte d'Ivoire^null
+result.40=02/04/2019^19:12^3.8667^-5.0^9^En dérive de nuit (moteur stoppé)^CIV^Côte d'Ivoire^null
+result.41=03/04/2019^06:15^3.9^-4.9^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.42=03/04/2019^07:16^3.8833^-4.95^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.43=03/04/2019^07:51^3.8833^-4.9333^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^null
+result.44=03/04/2019^10:15^3.8833^-4.9167^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^Banc sous autre senneur
+result.45=03/04/2019^12:15^3.9^-4.9167^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.46=03/04/2019^14:15^3.9^-4.8833^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.47=03/04/2019^15:28^3.9667^-4.85^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.48=03/04/2019^15:36^3.9667^-4.85^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.49=03/04/2019^16:15^3.8833^-4.9167^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.50=03/04/2019^18:15^3.8667^-4.9833^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.51=03/04/2019^18:42^3.8333^-5.05^16^Fin de veille^CIV^Côte d'Ivoire^null
+result.52=03/04/2019^18:50^3.8167^-5.05^9^En dérive de nuit (moteur stoppé)^CIV^Côte d'Ivoire^null
+result.53=04/04/2019^06:12^3.9^-4.8667^2^Recherche (général)^CIV^Côte d'Ivoire^
+result.54=04/04/2019^08:12^3.8667^-4.8833^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.55=04/04/2019^10:12^3.6^-4.6167^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.56=04/04/2019^12:04^3.3^-4.4333^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.57=04/04/2019^12:12^3.3^-4.4333^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.58=04/04/2019^14:12^3.05^-4.7^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.59=04/04/2019^15:43^2.8667^-4.9167^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.60=04/04/2019^15:46^2.8667^-4.9167^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.61=04/04/2019^16:12^2.8167^-5.0^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.62=04/04/2019^18:12^2.6333^-5.3333^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.63=04/04/2019^18:41^2.6^-5.4167^16^Fin de veille^CIV^Côte d'Ivoire^null
+result.64=04/04/2019^18:42^2.6^-5.4167^18^Route de nuit vers objet^CIV^Côte d'Ivoire^Route toute la nuit
+result.65=05/04/2019^06:20^1.5167^-7.4^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.66=05/04/2019^06:28^1.5^-7.4167^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.67=05/04/2019^07:02^1.5^-7.5333^21^Changement de zone FPA^CIV^Côte d'Ivoire^null
+result.68=05/04/2019^07:11^1.5^-7.55^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.69=05/04/2019^07:34^1.5^-7.6333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.70=05/04/2019^08:03^1.4667^-7.6833^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.71=05/04/2019^08:20^1.4333^-7.7167^2^Recherche (général)^LBR^Libéria^null
+result.72=05/04/2019^08:32^1.4^-7.7333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.73=05/04/2019^08:38^1.3833^-7.75^5^Thonier arrivant sur le système détecté^LBR^Libéria^
+result.74=05/04/2019^08:50^1.3667^-7.7333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.75=05/04/2019^09:07^1.4^-7.7667^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.76=05/04/2019^09:37^1.45^-7.8667^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.77=05/04/2019^10:02^1.4833^-7.9167^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.78=05/04/2019^10:20^1.5^-7.9667^2^Recherche (général)^LBR^Libéria^null
+result.79=05/04/2019^10:29^1.4833^-7.9833^5^Thonier arrivant sur le système détecté^LBR^Libéria^
+result.80=05/04/2019^10:41^1.5^-8.0^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.81=05/04/2019^11:03^1.5333^-8.05^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.82=05/04/2019^11:31^1.5833^-8.1167^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.83=05/04/2019^12:00^1.65^-8.1833^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.84=05/04/2019^12:20^1.7333^-8.2333^2^Recherche (général)^LBR^Libéria^null
+result.85=05/04/2019^12:35^1.75^-8.2667^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.86=05/04/2019^13:04^1.8167^-8.3167^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.87=05/04/2019^13:30^1.85^-8.3333^5^Thonier arrivant sur le système détecté^LBR^Libéria^
+result.88=05/04/2019^13:38^1.8667^-8.3333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^
+result.89=05/04/2019^14:00^1.9167^-8.3667^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.90=05/04/2019^14:19^1.95^-8.4167^5^Thonier arrivant sur le système détecté^LBR^Libéria^
+result.91=05/04/2019^14:26^1.95^-8.4167^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.92=05/04/2019^15:05^2.0667^-8.4333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.93=05/04/2019^15:35^2.15^-8.4333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.94=05/04/2019^15:36^2.15^-8.4333^5^Thonier arrivant sur le système détecté^LBR^Libéria^
+result.95=05/04/2019^15:46^2.15^-8.4333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.96=05/04/2019^16:02^2.2^-8.4333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.97=05/04/2019^16:20^2.2167^-8.4167^2^Recherche (général)^LBR^Libéria^null
+result.98=05/04/2019^16:36^2.2667^-8.4^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.99=05/04/2019^16:46^2.2333^-8.3833^5^Thonier arrivant sur le système détecté^LBR^Libéria^
+result.100=05/04/2019^16:53^2.2333^-8.3833^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.101=05/04/2019^17:08^2.2667^-8.3667^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.102=05/04/2019^17:17^2.2833^-8.35^5^Thonier arrivant sur le système détecté^LBR^Libéria^
+result.103=05/04/2019^17:24^2.2833^-8.35^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^
+result.104=05/04/2019^17:34^2.3^-8.3333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.105=05/04/2019^17:37^2.3167^-8.3333^16^Fin de veille^LBR^Libéria^null
+result.106=05/04/2019^18:00^2.3667^-8.3167^5^Thonier arrivant sur le système détecté^LBR^Libéria^
+result.107=05/04/2019^18:15^2.35^-8.3167^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.108=05/04/2019^18:40^2.3333^-8.35^9^En dérive de nuit (moteur stoppé)^LBR^Libéria^null
+result.109=06/04/2019^06:35^2.35^-8.3333^11^Avaries en mer^LBR^Libéria^Avarie au niveau du moteur, navire stoppé (réparation en cours)
+result.110=06/04/2019^12:05^2.3333^-8.3333^11^Avaries en mer^LBR^Libéria^Avarie au niveau du moteur, navire stoppé (réparation en cours)
+result.111=06/04/2019^17:55^2.3667^-8.2833^1^Transit (route sans recherche)^LBR^Libéria^Réparation de l'avarie terminée.
+result.112=06/04/2019^18:00^2.3667^-8.2833^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.113=06/04/2019^18:16^2.3833^-8.25^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.114=06/04/2019^18:26^2.4^-8.2167^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.115=06/04/2019^18:36^2.4167^-8.2^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.116=06/04/2019^18:46^2.45^-8.1833^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.117=06/04/2019^18:57^2.4667^-8.15^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.118=06/04/2019^19:05^2.4833^-8.1333^13^Opération sur objet flottant (visite, pose, modification, récupération)^LBR^Libéria^null
+result.119=06/04/2019^19:06^2.4833^-8.1333^1^Transit (route sans recherche)^LBR^Libéria^Route de nuit
+result.120=07/04/2019^06:24^3.4333^-6.2^21^Changement de zone FPA^null^null^Changement de zone effectué le 06/04/2019 à 22H35 T.U à la position 02°45N et 007°33 W
+result.121=07/04/2019^08:24^3.65^-5.8667^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.122=07/04/2019^10:24^3.8167^-5.5^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.123=07/04/2019^12:24^3.9167^-5.1167^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.124=07/04/2019^12:43^3.9167^-5.1^13^Opération sur objet flottant (visite, pose, modification, récupération)^CIV^Côte d'Ivoire^null
+result.125=07/04/2019^12:52^3.9167^-5.0833^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^
+result.126=07/04/2019^14:18^3.9^-5.0833^5^Thonier arrivant sur le système détecté^CIV^Côte d'Ivoire^null
+result.127=07/04/2019^14:21^3.9^-5.0833^6^Pêche (larguage du skiff)^CIV^Côte d'Ivoire^null
+result.128=07/04/2019^18:24^3.9^-4.8833^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.129=07/04/2019^18:33^3.9^-4.8667^16^Fin de veille^CIV^Côte d'Ivoire^Averse
+result.130=07/04/2019^18:34^3.9^-4.8667^1^Transit (route sans recherche)^CIV^Côte d'Ivoire^Route de nuit jusqu'à 1H
+result.131=08/04/2019^06:30^4.0667^-3.45^1^Transit (route sans recherche)^CIV^Côte d'Ivoire^navire en approche pour le début de l'aviataillement
+result.132=08/04/2019^07:30^4.0667^-3.45^99^Autres (à préciser dans les notes)^CIV^Côte d'Ivoire^Début de l'aviatillement en gasoil.
+result.133=08/04/2019^11:34^4.1833^-3.3333^99^Autres (à préciser dans les notes)^CIV^Côte d'Ivoire^Fin avitaillement en gasoil, poursuite de la route
+result.134=08/04/2019^12:30^4.3167^-3.4167^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.135=08/04/2019^14:30^4.6^-3.6^2^Recherche (général)^CIV^Côte d'Ivoire^null
+result.136=08/04/2019^16:00^4.8167^-3.75^16^Fin de veille^CIV^Côte d'Ivoire^null
+result.137=08/04/2019^16:30^4.8833^-3.8167^1^Transit (route sans recherche)^CIV^Côte d'Ivoire^
+result.138=08/04/2019^18:30^5.1^-3.95^1^Transit (route sans recherche)^CIV^Côte d'Ivoire^null
+result.139=08/04/2019^21:05^5.2833^-4.0167^0^Au port^CIV^Côte d'Ivoire^Navire au port de pêche d'Abidjan.
+syntax.name=Observations - Toutes les activités, leurs positions et zones FPA
syntax.description=Afficher toutes les activités et leurs positions géographiques
syntax.rows=-1
-syntax.columns=6
-syntax.columnsHeader=Jour^Heure observation^Latitude^Longitude^Activité^Commentaire
+syntax.columns=9
+syntax.columnsHeader=Jour^Heure observation^Latitude^Longitude^Activité (code)^Activité (nom)^Zone FPA (code)^Zone FPA (nom)^Commentaire
syntax.rowsHeader=
syntax.nbRequests=1
-result.columns=6
+result.columns=9
result.rows=140
\ No newline at end of file
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationFobUsageExtended.properties
=====================================
@@ -19,14 +19,14 @@
# <http://www.gnu.org/licenses/gpl-3.0.html>.
# #L%
###
-result.0=FOB - FOB^0^1^0^0^0^0^0^0^0^0^0^0^0^0^0^0^null
-result.1=DFAD - DFAD (FAD dérivant)^1^15^1^27^0^0^0^0^0^0^0^0^0^0^0^0^null
+result.0=DFAD - DFAD (FAD dérivant)^1^15^1^27^0^0^0^0^0^0^0^0^0^0^0^0^0
+result.1=FOB - FOB^0^1^0^0^0^0^0^0^0^0^0^0^0^0^0^0^0
result.columns=18
result.rows=2
syntax.columns=18
syntax.columnsHeader=Type de FOB^Visités Pêchés^Visités non Pêchés^Déploiement après Pêches^Déploiement seul^Modifiés Pêchés^Modifiés non Pêchés^Retirés Pêchés^Retirés non Pêchés^Abandonnés Pêchés^Abandonnés non Pêchés^Coulés Pêchés^Coulés non Pêchés^Remplacés Pêchés^Remplacés non Pêchés^Autre Pêchés^Autre non Pêchés^Tortues associées
syntax.description=Tableau récapitulatif des FOB rencontrés, par types CECOFAD et types d’actions (déploiements, simples visites, modifications, diverses modalités de retraits), avec et sans pêche, et nombres de tortues observées
syntax.name=Observations - Utilisation des FOB, tableau détaillé
-syntax.nbRequests=18
+syntax.nbRequests=2
syntax.rows=-1
syntax.rowsHeader=
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService-psObservationFobUsageMinimal.properties
=====================================
@@ -19,14 +19,14 @@
# <http://www.gnu.org/licenses/gpl-3.0.html>.
# #L%
###
-result.0=FOB - FOB^0^1^0^null
-result.1=DFAD - DFAD (FAD dérivant)^1^15^28^null
+result.0=DFAD - DFAD (FAD dérivant)^1^15^28^0
+result.1=FOB - FOB^0^1^0^0
result.columns=5
result.rows=2
syntax.columns=5
syntax.columnsHeader=Type de FOB^Rencontrés pêchés^Rencontrés non pêchés^Déployés^Tortues associées
syntax.description=Tableau récapitulatif des FOB rencontrés, par types CECOFAD et types d’actions regroupés (rencontrés et pêchés, rencontrés non pêchés, déployés), et nombres de tortues observées
syntax.name=Observations - Utilisation des FOB, tableau simplifiée
-syntax.nbRequests=5
+syntax.nbRequests=2
syntax.rows=-1
syntax.rowsHeader=
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReportService.properties
=====================================
@@ -19,4 +19,4 @@
# <http://www.gnu.org/licenses/gpl-3.0.html>.
# #L%
###
-report.count=34
+report.count=35
=====================================
src/site/markdown/report/embedded-reports.md
=====================================
@@ -86,6 +86,10 @@ Livre de bord - Vérification des plan de cuves
Observations - Activités avec comment et leurs positions
+## psObservationActivitiesByZone
+
+Observations - Types d'activités par zones FPA
+
### psObservationAllActivities
Observations - Toutes les activités et leurs positions
=====================================
toolkit/api-report/src/main/java/fr/ird/observe/report/ReportRequestExecutor.java
=====================================
@@ -107,7 +107,9 @@ public interface ReportRequestExecutor {
String variableName = variable.getName();
if (variable.isValuesLoaded()) {
// variable already loaded
- log.debug(String.format("Do not populate variable %s, variable already loaded.", variableName));
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Do not populate variable %s, variable already loaded.", variableName));
+ }
continue;
}
Map<String, Object> vars = new TreeMap<>();
@@ -178,64 +180,84 @@ public interface ReportRequestExecutor {
}
// remplissage des variables de répétition si nécessaire
populateRepeatVariables(report, tripId);
- log.debug(String.format("Build result for report [%s] on %s", report.getName(), tripId));
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Build result for report [%s] on %s", report.getName(), tripId));
+ }
int rows = report.getRows();
int columns = report.getColumns();
- log.debug(String.format("Dimension : [%d,%d]", rows, columns));
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Dimension : [%d,%d]", rows, columns));
+ }
// lancement de la première opération et la matrice de résultat
DataMatrix result = ReportOperationConsumers.executeReportOperation(this, ExecuteRequests.OPERATION, report, tripId, new DataMatrix());
// lancement des opérations supplémentaires
for (ReportOperationDefinition operation : report.getOperations()) {
DataMatrix tmp = result;
- log.debug(String.format("Apply operation %s to %s", operation, tmp));
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Apply operation %s to %s", operation, tmp));
+ }
result = ReportOperationConsumers.executeReportOperation(this, operation, report, tripId, tmp);
}
- log.debug(String.format("Final result : %s", result));
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Final result : %s", result));
+ }
return result;
}
default DataMatrix executeReportRequest(ReportRequestDefinition request, Report report, Set<String> dataId) {
- Map<String, Object> params = extractParams(report, dataId);
- ReportDefinition reportDefinition = report.definition();
- String hql = i18nContext().translateRequest(reportDefinition, request);
- for (ReportRepeatVariable<?> repeatVariable : report.getRepeatVariables()) {
- if (isVariableUsed(hql, repeatVariable.getName())) {
- // add this repeat variable values to parameters
- params.put(repeatVariable.getName(), repeatVariable.computeIndexList());
+ long t0 = TimeLog.getTime();
+ try {
+ Map<String, Object> params = extractParams(report, dataId);
+ ReportDefinition reportDefinition = report.definition();
+ String hql = i18nContext().translateRequest(reportDefinition, request);
+ for (ReportRepeatVariable<?> repeatVariable : report.getRepeatVariables()) {
+ if (isVariableUsed(hql, repeatVariable.getName())) {
+ // add this repeat variable values to parameters
+ params.put(repeatVariable.getName(), repeatVariable.computeIndexList());
+ }
}
+ return executeReportRequest(reportDefinition, request, params);
+ } finally {
+ TIME_LOG.log(t0, "executeReportRequest", request.toString());
}
- return executeReportRequest(reportDefinition, request, params);
}
default DataMatrix executeReportRequest(ReportRequestDefinition request, Report report, Set<String> dataId, ReportRepeatVariable<?> repeatValues) {
- Map<String, Object> params = extractParams(report, dataId);
- DataMatrix result = new DataMatrix();
- RequestRepeatVariableDefinition requestRepeatVariable = request.getRepeat();
- RequestLayout requestRepeatVariableLayout = requestRepeatVariable.getLayout();
- String repeatVariableName = requestRepeatVariable.getVariableName();
- ReportDefinition reportDefinition = report.definition();
- for (Object repeatValue : repeatValues.getValues()) {
- params.put(repeatVariableName, repeatValue);
- DataMatrix tmp = executeReportRequest(reportDefinition, request, params);
- switch (requestRepeatVariableLayout) {
- case row:
- // add current result on the same row (at the right of the current result)
- tmp.setX(result.getX() + result.getWidth());
- tmp.setY(result.getY());
- break;
- case column:
- // add current result on the same column (at the bottom of the current result)
- tmp.setX(result.getX());
- tmp.setY(result.getY() + result.getHeight());
- break;
+ long t0 = TimeLog.getTime();
+ try {
+ Map<String, Object> params = extractParams(report, dataId);
+ DataMatrix result = new DataMatrix();
+ RequestRepeatVariableDefinition requestRepeatVariable = request.getRepeat();
+ RequestLayout requestRepeatVariableLayout = requestRepeatVariable.getLayout();
+ String repeatVariableName = requestRepeatVariable.getVariableName();
+ ReportDefinition reportDefinition = report.definition();
+ for (Object repeatValue : repeatValues.getValues()) {
+ params.put(repeatVariableName, repeatValue);
+ DataMatrix tmp = executeReportRequest(reportDefinition, request, params);
+ switch (requestRepeatVariableLayout) {
+ case row:
+ // add current result on the same row (at the right of the current result)
+ tmp.setX(result.getX() + result.getWidth());
+ tmp.setY(result.getY());
+ break;
+ case column:
+ // add current result on the same column (at the bottom of the current result)
+ tmp.setX(result.getX());
+ tmp.setY(result.getY() + result.getHeight());
+ break;
+ }
+ result = DataMatrix.merge(result, tmp);
}
- result = DataMatrix.merge(result, tmp);
+ result.setX(request.getX());
+ result.setY(request.getY());
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Result location : %s", result.getLocation()));
+ log.debug(String.format("Result data :\n%s", result.getClipboardContent(true, true, false, '\t')));
+ }
+ return result;
+ } finally {
+ TIME_LOG.log(t0, "executeReportRequest", request.toString());
}
- result.setX(request.getX());
- result.setY(request.getY());
- log.debug(String.format("Result location : %s", result.getLocation()));
- log.debug(String.format("Result data :\n%s", result.getClipboardContent(true, true, false, '\t')));
- return result;
}
default DataMatrix executeReportRequest(ReportDefinition reportDefinition, ReportRequestDefinition reportRequestDefinition, Map<String, Object> params) {
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/b20c845634c72d83f97c19de…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/b20c845634c72d83f97c19de…
You're receiving this email because of your account on gitlab.com.
1
0