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
March 2024
- 1 participants
- 42 discussions
[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
[Git][ultreiaio/ird-observe][develop] 5 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 develop 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
- - - - -
10 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/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
- 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/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/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=
=====================================
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/b5ef9ebc78e3cab2442d0bb8…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/b5ef9ebc78e3cab2442d0bb8…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe] Pushed new branch feature/issue-2848
by Tony CHEMIT (@tchemit) 15 Mar '24
by Tony CHEMIT (@tchemit) 15 Mar '24
15 Mar '24
Tony CHEMIT pushed new branch feature/issue-2848 at ultreiaio / ird-observe
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/tree/feature/issue-2848
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Update reports documentation
by Tony CHEMIT (@tchemit) 15 Mar '24
by Tony CHEMIT (@tchemit) 15 Mar '24
15 Mar '24
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
b5ef9ebc by Tony Chemit at 2024-03-15T14:38:31+01:00
Update reports documentation
- - - - -
2 changed files:
- src/site/markdown/report/index.md.vm
- src/site/markdown/report/syntax.md
Changes:
=====================================
src/site/markdown/report/index.md.vm
=====================================
@@ -118,7 +118,7 @@ version applicative, à savoir dans
Dans la configuration de l'assistant, par défaut on utilise ce fichier.
-Il est envisagé en *v10* de faire évoluer cela pour que chaque rapport puisse être décrit dans un fichier séparé.
+Depuis la version **9.3.0**, chaque rapport est décrit dans un fichier séparé.
Cela aura pour avantage :
@@ -126,6 +126,54 @@ Cela aura pour avantage :
* de simplifier l'écriture de ceux-ci (on pourra alors supprimer tous les préfixes actuellement utilisés pour identifier un rapport).
* de pouvoir organiser ces rapports par modèle métier, ou par type d'organisation
+Tous les rapports sont regroupés dans un répertoire des resources de la version applicative, à savoir dans
+
+```.observe/resources-${project.version}/report/default```
+
+dont voici le contenu (en 9.3.0)
+
+```
+resources-9.3.0-RC-5/report/
+└── default
+ ├── ll
+ │ ├── llCommonTripGearUseFeatures.report
+ │ ├── llLanding.report
+ │ ├── llLogbookActivities.report
+ │ ├── llLogbookCatches.report
+ │ ├── llLogbookSamplesOnActivity.report
+ │ ├── llLogbookSamplesOnBoth.report
+ │ └── llLogbookSamplesOnTrip.report
+ └── ps
+ ├── psCommonTripGearUseFeatures.report
+ ├── psLocalmarketBatch.report
+ ├── psLocalmarketSample.report
+ ├── psLocalmarketSurvey.report
+ ├── psLogbookActivity.report
+ ├── psLogbookSampleMeasures.report
+ ├── psLogbookSampleSet.report
+ ├── psLogbookSampleSpeciesMeasuresCount.report
+ ├── psLogbookSampleSpeciesMeasures.report
+ ├── psLogbookTrip.report
+ ├── psLogbookWellPlanCheck.report
+ ├── psLogbookWellPlan.report
+ ├── psObservationActivitiesByZone.report
+ ├── psObservationActivityWithComment.report
+ ├── psObservationAllActivities.report
+ ├── psObservationCatch.report
+ ├── psObservationCatchTotalCountByGroupAndSpeciesFateDiscardPerAssociation.report
+ ├── psObservationCatchTotalCountByGroupPerReasonForDiscard.report
+ ├── psObservationCatchTotalCountByGroupPerSpeciesFate.report
+ ├── psObservationCatchWeightByGroupAndSpeciesFateDiscardPerAssociation.report
+ ├── psObservationCatchWeightByGroupPerReasonForDiscard.report
+ ├── psObservationCatchWeightByGroupPerSpeciesFate.report
+ ├── psObservationDailySetAndCatch.report
+ ├── psObservationFobUsageExtended.report
+ ├── psObservationFobUsageMinimal.report
+ ├── psObservationLengthsDistribution.report
+ ├── psObservationRepartionCaleeParCuve.report
+ └── psObservationSetByAssociation.report
+```
+
## Description du fonctionnement général d'un rapport
### Prération des variables
=====================================
src/site/markdown/report/syntax.md
=====================================
@@ -6,78 +6,110 @@ Ce document décrit comment écrire un rapport.
Comme écrit dans la page de présentation des rapports, ceux-ci sont décrits dans un fichier de type *properties*.
-La syntaxe a été uniformisée en version 9.
+La syntaxe a été uniformisée en version 9 et depuis la 9.3.0 chaque rapport est décrit dans un fichier séparé.
### Identifiant d'un rapport
-Chaque rapport possède un identifiant unique; celui-ci est utilisé pour identifier toute sa description dans le fichier
-global.
+Chaque rapport possède un identifiant unique; le nom du fichier correspondant est **id.report**.
Voici un premier exemple de rapport pour mieux comprendre comment cela s'organise :
```properties
-report.llCommonTripGearUseFeatures.modelType=LL
-report.llCommonTripGearUseFeatures.name=Liste des équipements
-report.llCommonTripGearUseFeatures.description=Afficher les équipements
-report.llCommonTripGearUseFeatures.columns=Equipement,Nombre,Utilisé dans la marée,Mesures
-report.llCommonTripGearUseFeatures.repeatVariable.1.name=gearUseFeaturesId
-report.llCommonTripGearUseFeatures.repeatVariable.1.type=java.lang.String
-report.llCommonTripGearUseFeatures.repeatVariable.1.request=Select g.id \
+modelType=LL
+name=Liste des équipements
+name.en=Gears uses features
+name.es=
+description=Afficher les équipements
+description.en=Display gear uses features
+description.es=
+columns=Equipement,Nombre,Utilisé dans la marée,Mesures
+columns.en=Gear,Number,Used in trip?,Measures
+columns.es=
+repeatVariable.1.name=gearUseFeaturesId
+repeatVariable.1.type=java.lang.String
+repeatVariable.1.request=Select g.id \
From fr.ird.observe.entities.data.ll.common.TripImpl m \
Join m.gearUseFeatures g \
Where \
m.id In :tripId \
and g in elements (m.gearUseFeatures) \
-Order By g.gear.label2
-report.llCommonTripGearUseFeatures.request.1.location=0,0
-report.llCommonTripGearUseFeatures.request.1.layout=row
-report.llCommonTripGearUseFeatures.request.1.request=Select \
-concat(CASE When g.gear.code IS NULL Then 'Aucun code' Else g.gear.code End, ' - ', g.gear.label2), \
+Order By g.gear.@i18nColumnName@
+request.1.location=0,0
+request.1.layout=row
+request.1.request=Select \
+concat(CASE When g.gear.code IS NULL Then '@noCode@' Else g.gear.code End, ' - ', g.gear.@i18nColumnName@), \
g.number, \
-( CASE g.usedInTrip When true Then 'Oui' Else Case g.usedInTrip When false Then 'Non' Else 'Indéterminé' End End )\
+( CASE g.usedInTrip When true Then '@yes@' Else Case g.usedInTrip When false Then '@no@' Else '@Null@' End End )\
From fr.ird.observe.entities.data.ll.common.GearUseFeaturesImpl g \
Where g.id = :gearUseFeaturesId
-report.llCommonTripGearUseFeatures.request.1.repeat.name=gearUseFeaturesId
-report.llCommonTripGearUseFeatures.request.1.repeat.layout=column
-report.llCommonTripGearUseFeatures.operations.1.type=ComputeMeasurementsLongline
+request.1.repeat.name=gearUseFeaturesId
+request.1.repeat.layout=column
+operations.1.type=ComputeMeasurementsLongline
+i18n.Null=Indéterminé
+i18n.Null.en=Undefined
+i18n.Null.es=Indeterminado
+i18n.noCode=Aucun code
+i18n.noCode.en=No code
+i18n.noCode.es=
```
Ici l'identifiant du rapport est ```llCommonTripGearUseFeatures```.
Par convention, on utilise le domaine métier **ll**, suivi du sous-domaine métier **Common**, puis enfin un suffixe qui
exprime ce que le rapport doit produire **TripGearUseFeatures**.
-
-Dans le fichier global, toutes les entrées commençants par **report.llCommonTripGearUseFeatures** permettent alors de
-décrire le rapport.
-
+
### Méta-données d'un rapport
Il existe cinq méta-données pour un rapport (dont trois sont obligatoires) :
```properties
-report.xxx.modelType=PS ou LL
-report.xxx.name=Nom du rapport
-report.xxx.description=Description du rapport
-report.xxx.columns=En-têtes des colonnes du rapport (séparées par des virgules) [Optionnel]
-report.xxx.rows=En-têtes des lignes du rapport (séparées par des virgules) [Optionnel]
+modelType=PS ou LL
+name=Nom du rapport
+name.en=Nom du rapport (Anglais)
+name.es=Nom du rapport (Espagnol)
+description=Description du rapport
+description.en=Description du rapport (Anglais)
+description.es=Description du rapport (Espagnol)
+columns=En-têtes des colonnes du rapport (séparées par des virgules) [Optionnel]
+columns.en=En-têtes des colonnes du rapport (séparées par des virgules) (Anglais) [Optionnel]
+columns.es=En-têtes des colonnes du rapport (séparées par des virgules) (Espagnol) [Optionnel]
+rows=En-têtes des lignes du rapport (séparées par des virgules) [Optionnel]
+rows.en=En-têtes des lignes du rapport (séparées par des virgules) (Anglais) [Optionnel]
+rows.es=En-têtes des lignes du rapport (séparées par des virgules) (Espagnol) [Optionnel]
```
-```report.xxx.modelType``` permet de définir le domaine métier sur lequel porte le rapport, valeurs possibles :
+```modelType``` permet de définir le domaine métier sur lequel porte le rapport, valeurs possibles :
* **PS** pour le domaine *Senne*
* **LL** pour le domaine *Palangre*.
En *V10*, on ajoutera certainement **COMMON** pour le domaine métier des marées agnostiques.
-```report.xxx.name``` permet de définir le nom du rapport, ce texte est celui affiché dans la liste déroulante des
+```name``` permet de définir le nom du rapport en français, ce texte est celui affiché dans la liste déroulante des
rapports à sélectionner dans l'assistant.
-```report.xxx.description``` permet de définir une description longue d'un rapport, ce texte est celui affiché
+```name.en``` permet de définir le nom du rapport en anglais, si vide le texte français est utilisé.
+
+```name.es``` permet de définir le nom du rapport en espagnol, si vide le texte français est utilisé.
+
+```description``` permet de définir une description longue d'un rapport, ce texte est celui affiché
comme description lorsqu'un rapport est sélectionné dans l'assistant.
-```report.xxx.colomns``` **[Optionnel]** permet de définir les en-têtes de colonnes de manière fixe.
+```description.en``` version anglaise, si vide le texte français est utilisé.
+
+```description.es``` version espagnole, si vide le texte français est utilisé.
-```report.xxx.rows``` **[Optionnel]** permet de définir les en-têtes de lignes de manière fixe.
+```colomns``` **[Optionnel]** permet de définir les en-têtes de colonnes de manière fixe.
+
+```colomns.en``` version anglaise, si vide le texte français est utilisé.
+
+```colomns.es``` version espagnole, si vide le texte français est utilisé.
+
+```rows``` **[Optionnel]** permet de définir les en-têtes de lignes de manière fixe.
+
+```rows.en``` version anglaise, si vide le texte français est utilisé.
+
+```rows.es``` version espagnole, si vide le texte français est utilisé.
Il est possible de ne pas les indiquer si le rapport n'a pas d'en-têtes de colonnes ou de lignes fixes; Ces en-têtes
seront alors définies via les requêtes du rapport.
@@ -100,9 +132,9 @@ variable attend que la seconde soit remplie...**
Pour décrire une variable trois lignes sont nécessaires, comme on peut le voir dans l'exemple suivant :
```properties
-report.xxx.variable.1.name=speciesGroup
-report.xxx.variable.1.type=fr.ird.observe.dto.referential.common.SpeciesGroupReference
-report.xxx.variable.1.request=Select distinct sg \
+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 \
@@ -114,11 +146,11 @@ Where t.id In :tripId \
Order By sg.code
```
-```report.xxx.variable.1.name``` définit l'*alias* de la variable que l'on pourra ensuite utiliser dans le
+```variable.1.name``` définit l'*alias* de la variable que l'on pourra ensuite utiliser dans le
reste de la définition du rapport (par exemple dans d'autres variables, variables de répétition, requêtes ou
opérations).
-```report.xxx.variable.1.type``` définit le type de la variable. Ce type doit être un type de *dto* ou une
+```variable.1.type``` définit le type de la variable. Ce type doit être un type de *dto* ou une
*référence de dto*. On ne peut pas ici utiliser un type d'*entité*, puisque l'interface graphique (selon le principe de
séparation des couches) n'a pas connaissance du modèle des entités.
@@ -133,13 +165,13 @@ l'arbre de navigation; la notion de *dto* étant utilisée au niveau d'un formul
* comment décorer la donnée
* comment transformer l'entité
-```report.xxx.variable.1.request``` définit la requête **hql** pour récupérer l'univers des valeurs de
+```variable.1.request``` définit la requête **hql** pour récupérer l'univers des valeurs de
la variable.
Il est possible de documenter cette variable en utilise une quatrième ligne optionnelle :
```properties
-report.xxx.variable.1.comment=Un commentaire optionnel pour documenter la variable
+variable.1.comment=Un commentaire optionnel pour documenter la variable
```
**À noter que l'utilisation d'une variable dans le reste du rapport se fait toujours via son identifiant technique
@@ -151,9 +183,9 @@ sélection des marées sur lequel on veut appliquer le rapport**.
Voici un second exemple de deux variables dont la seconde utilise la première :
```properties
-report.xxx.variable.1.name=discardMode
-report.xxx.variable.1.type=fr.ird.observe.dto.data.ps.observation.SpeciesFateDiscardModeDto
-report.xxx.variable.1.request=Select distinct new fr.ird.observe.dto.data.ps.observation.SpeciesFateDiscardModeDto(sf.discard) \
+variable.1.name=discardMode
+variable.1.type=fr.ird.observe.dto.data.ps.observation.SpeciesFateDiscardModeDto
+variable.1.request=Select distinct new fr.ird.observe.dto.data.ps.observation.SpeciesFateDiscardModeDto(sf.discard) \
From TripImpl t \
Join t.routeObs r \
Join r.activity a \
@@ -162,9 +194,9 @@ Join c.catches ca with ca.totalCount Is Not Null \
Join ca.speciesFate sf \
Where t.id In :tripId \
Order By sf.discard
-report.xxx.variable.2.name=speciesGroup
-report.xxx.variable.2.type=fr.ird.observe.dto.referential.common.SpeciesGroupReference
-report.xxx.variable.2.request=Select distinct sg \
+variable.2.name=speciesGroup
+variable.2.type=fr.ird.observe.dto.referential.common.SpeciesGroupReference
+variable.2.request=Select distinct sg \
From TripImpl t \
Join t.routeObs r \
Join r.activity a \
@@ -194,9 +226,9 @@ Comme indiqué plus haut, la syntaxe d'une variable de répétition est identiqu
Pour décrire une variable de répétition, trois lignes sont nécessaires, comme on peut le voir dans l'exemple suivant :
```properties
-report.xxx.repeatVariable.1.name=gearUseFeaturesId
-report.xxx.repeatVariable.1.type=java.lang.String
-report.xxx.repeatVariable.1.request=Select g.id \
+repeatVariable.1.name=gearUseFeaturesId
+repeatVariable.1.type=java.lang.String
+repeatVariable.1.request=Select g.id \
From fr.ird.observe.entities.data.ll.common.TripImpl m \
Join m.gearUseFeatures g \
Where \
@@ -205,10 +237,10 @@ and g in elements (m.gearUseFeatures) \
Order By g.gear.label2
```
-```report.xxx.repeatVariable.1.name``` définit l'*alias* de la variable de répétition à utiliser dans une requête, autre
+```repeatVariable.1.name``` définit l'*alias* de la variable de répétition à utiliser dans une requête, autre
variable de répétition ou opération
-```report.xxx.repeatVariable.1.type``` définit le type de la variable de répétition. Contrairement aux variables, les
+```repeatVariable.1.type``` définit le type de la variable de répétition. Contrairement aux variables, les
variables de répétition sont utilisées en interne pour exécuter le rapport, on peut donc utiliser directement des types
d'*entité*,
ou bien des types *simples* qui correspondent aux types d'une colonne en base (**java.lang.String**, **java.lang.Float
@@ -219,7 +251,7 @@ requêtes :
si on définit une variable de type *entité*, c'est bien l'entité qui sera injectée dans la requête *hql*, et non pas
juste son identifiant technique.**
-```report.xxx.repeatVariable.1.request``` définit la requête **hql** pour récupérer l'univers des valeurs de la variable
+```repeatVariable.1.request``` définit la requête **hql** pour récupérer l'univers des valeurs de la variable
de répétition
Il est possible d'utiliser dans une requête de variable de répétition, un alias sur toute variable du rapport (dont la
@@ -235,13 +267,13 @@ l'univers de cette variable de répétion, ce qui peut etre utilise (et nous nou
pas décrire via la requete *hql.
```properties
-report.xxx.repeatVariable.1.addNull=true
+repeatVariable.1.addNull=true
```
Il est possible de documenter cette variable de répétition en utilisant une ligne optionnelle :
```properties
-report.xxx.repeatVariable.1.comment=Un commentaire optionnel pour documenter la variable de répétition
+repeatVariable.1.comment=Un commentaire optionnel pour documenter la variable de répétition
```
### requêtes d'un rapport
@@ -255,9 +287,9 @@ On distingue deux types de requêtes :
Les deux types de requêtes nécessitent les trois lignes, comme décrit dans l'exemple suivant :
```properties
-report.xxx.request.1.location=0,0
-report.xxx.request.1.layout=row
-report.xxx.request.1.request=Select \
+request.1.location=0,0
+request.1.layout=row
+request.1.request=Select \
concat(CASE When g.gear.code IS NULL Then 'Aucun code' Else g.gear.code End, ' - ', g.gear.label2), \
g.number, \
( CASE g.usedInTrip When true Then 'Oui' Else Case g.usedInTrip When false Then 'Non' Else 'Indéterminé' End End )\
@@ -265,10 +297,10 @@ From fr.ird.observe.entities.data.ll.common.GearUseFeaturesImpl g \
Where g.id = :gearUseFeaturesId
```
-```report.xxx.request.1.location``` définit la position dans le résultat final où positionner le résultat de cette
+```request.1.location``` définit la position dans le résultat final où positionner le résultat de cette
requête.
-```report.xxx.request.1.layout``` définit la disposition à utiliser pour placer le résultat de cette requête dans le
+```request.1.layout``` définit la disposition à utiliser pour placer le résultat de cette requête dans le
résultat final. Deux valeurs sont possibles :
* **row** pour signifier que le résultat de la requête sera positionné en ligne à partir de la position précedemment
@@ -277,24 +309,24 @@ résultat final. Deux valeurs sont possibles :
précedemment définie. Ce mode est une transposition du résultat de la requête : une ligne du résultat de la requête
sera une colonne dans le résultat final
-```report.xxx.request.1.request``` définit le code **hql** qui permet de construire le résultat à placer ensuite dans le
+```request.1.request``` définit le code **hql** qui permet de construire le résultat à placer ensuite dans le
résultat final du rapport
Pour une requête avec variable de répétition, il faut alors ajouter les deux lignes suivantes :
```properties
-report.xxx.request.1.repeat.name=gearUseFeaturesId
-report.xxx.request.1.repeat.layout=column
+request.1.repeat.name=gearUseFeaturesId
+request.1.repeat.layout=column
```
-```report.xxx.request.1.repeat.name``` définit l'*alias* de la variable de répétition à utiliser. La requête sera
+```request.1.repeat.name``` définit l'*alias* de la variable de répétition à utiliser. La requête sera
exécutée
autant de fois qu'il y a de valeurs dans l'univers calculé de la variable de répétition.
**À noter qu'il faut alors que le corps de cette requête doit utiliser l'alias de cette variable de répétition, même si
dans les faits, rien ne l'oblige, mais le résultat sera alors toujours le même...**
-```report.xxx.request.1.repeat.layout``` définit la disposition à utiliser pour constuire le résultat final de la
+```request.1.repeat.layout``` définit la disposition à utiliser pour constuire le résultat final de la
requête appliqué à chaque valeur de la variable de répétition. Deux valeurs sont possibles :
* **row** pour signifier que pour chaque valeur de l'univers de la variable de répétition, le résultat de la requête
@@ -309,7 +341,7 @@ sont pas compatibles.**
Il est possible de documenter cette requête en utilisant une ligne optionnelle :
```properties
-report.xxx.request.1.comment=Un commentaire optionnel pour documenter la requête
+request.1.comment=Un commentaire optionnel pour documenter la requête
```
### Opérations d'un rapport
@@ -323,23 +355,23 @@ Les deux types d'opération nécessitent une première ligne pour déclarer le t
dans l'exemple suivant :
```properties
-report.xxx.operations.1.type=SumIntRow
+operations.1.type=SumIntRow
```
-```report.xxx.operations.1.type``` définit le type d'opération à réaliser.
+```operations.1.type``` définit le type d'opération à réaliser.
Dans le cas où l'opération est paramétrable, on doit alors ajouter une autre ligne avec le paramétrage de l'opération :
```properties
-report.xxx.operations.1.parameters=0|1
+operations.1.parameters=0|1
```
-```report.xxx.operations.1.parameters``` définit le paramétrage à utiliser pour exécuter l'opération.
+```operations.1.parameters``` définit le paramétrage à utiliser pour exécuter l'opération.
Il est possible de documenter cette opération en utilisant une ligne optionnelle :
```properties
-report.xxx.operations.1.comment=Un commentaire optionnel pour documenter l'opération
+operations.1.comment=Un commentaire optionnel pour documenter l'opération
```
Les opérations disponibles et leur documentation sont décrites dans le document [suivant](./embedded-operations.html).
@@ -355,14 +387,18 @@ Un rendu est défini par deux lignes :
2. Une pour paramétrer ce rendu
```properties
-report.xxx.columnRenderers.1.type=HighlightIfAbsoluteDeltaIsPositive
-report.ccc.columnRenderers.1.parameters=10|11|0.0001|0.5
+columnRenderers.1.type=HighlightIfAbsoluteDeltaIsPositive
+columnRenderers.1.parameters=10|11|0.0001|0.5
```
Il est possible d'ajouter plusieurs rendus sur un même rapport.
Les rendus disponibles et leur documentation sont décrits dans le document [suivant](./embedded-column-renderers.html).
+### Traductions
+
+**TODO**
+
## Pour aller plus loin
Vous pouvez aussi consulter la [documentation des rapports embarqués par l'application](./embedded-reports.html).
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/b5ef9ebc78e3cab2442d0bb8f…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/b5ef9ebc78e3cab2442d0bb8f…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 3 commits: Test method ReportService.initColumnRendererParameters
by Tony CHEMIT (@tchemit) 15 Mar '24
by Tony CHEMIT (@tchemit) 15 Mar '24
15 Mar '24
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
c9a29d65 by Tony Chemit at 2024-03-15T13:54:37+01:00
Test method ReportService.initColumnRendererParameters
- - - - -
c211705f by Tony Chemit at 2024-03-15T13:54:37+01:00
Reports are not copied to the right place...
- - - - -
72f76dab by Tony Chemit at 2024-03-15T13:54:37+01:00
Update reports documentation
- - - - -
4 changed files:
- client/configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java
- core/services/test/src/main/java/fr/ird/observe/services/service/ReportFixture.java
- core/services/test/src/main/java/fr/ird/observe/services/service/ReportServiceFixtures.java
- src/site/markdown/report/index.md.vm
Changes:
=====================================
client/configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java
=====================================
@@ -395,7 +395,7 @@ public class ClientConfig extends GeneratedClientConfig implements TripMapConfig
for (String location : locations) {
String reportLocation = ReportDefinitionsBuilder.reportLocation(location);
URL resource = getClass().getClassLoader().getResource(reportLocation);
- Path reportPath = reportDirectory.toPath().resolve(reportLocation);
+ Path reportPath = reportDirectory.toPath().resolve(location);
createDirectory(reportPath.getParent().toFile());
log.info("Copy report from {} to {}", reportLocation, reportPath);
Files.writeString(reportPath, ObserveUtil.loadResourceContent(resource));
=====================================
core/services/test/src/main/java/fr/ird/observe/services/service/ReportFixture.java
=====================================
@@ -24,6 +24,7 @@ package fr.ird.observe.services.service;
import fr.ird.observe.dto.reference.DtoReference;
import fr.ird.observe.report.Report;
+import fr.ird.observe.report.ReportColumnRenderersParameters;
import fr.ird.observe.report.ReportVariable;
import fr.ird.observe.report.definition.ReportRequestDefinition;
import fr.ird.observe.report.definition.RequestLayout;
@@ -116,6 +117,13 @@ public abstract class ReportFixture {
assertReportNbRequests(actual);
}
+ public void initColumnRendererParameters(ReportService service, Report definition) {
+ ReportColumnRenderersParameters actual = service.initColumnRendererParameters(definition.definition());
+ Assert.assertNotNull(actual);
+ Assert.assertNotNull(actual.getColumnRendererParameters());
+ Assert.assertEquals(definition.definition().getColumnRenderers().length, actual.getColumnRendererParameters().size());
+ }
+
public final void assertResult(DataMatrix actual) {
log.info(String.format("Start assertResult for %s", getReportId()));
if (WITH_ASSERT) {
=====================================
core/services/test/src/main/java/fr/ird/observe/services/service/ReportServiceFixtures.java
=====================================
@@ -94,9 +94,12 @@ public class ReportServiceFixtures extends GeneratedReportServiceFixtures {
}
}
- public void executeReport(ReportService service, String id) {
- Report definition = getReport(id);
- executeReport(definition, service);
+ @Override
+ public void initColumnRendererParameters(ObserveServicesProvider servicesProvider, ReportService service) {
+ for (String id : ReportServiceFixtures.getReportIds()) {
+ Report definition = getReport(id);
+ initColumnRendererParameters(definition, service);
+ }
}
@Override
@@ -107,6 +110,20 @@ public class ReportServiceFixtures extends GeneratedReportServiceFixtures {
}
}
+ public void executeReport(ReportService service, String id) {
+ Report definition = getReport(id);
+ executeReport(definition, service);
+ }
+
+ protected void initColumnRendererParameters(Report definition, ReportService service) {
+ ReportFixture reportFixture = getReportFixture(definition);
+ if (reportFixture == null) {
+ Assume.assumeFalse(String.format("Missing report fixture for %s", definition.getId()), true);
+ return;
+ }
+ reportFixture.initColumnRendererParameters(service, definition);
+ }
+
protected void populateVariables(Report definition, ReportService service) {
ReportFixture reportFixture = getReportFixture(definition);
if (reportFixture == null) {
=====================================
src/site/markdown/report/index.md.vm
=====================================
@@ -118,7 +118,7 @@ version applicative, à savoir dans
Dans la configuration de l'assistant, par défaut on utilise ce fichier.
-Il est envisagé en *v10* de faire évoluer cela pour que chaque rapport puisse être décrit dans un fichier séparé.
+Depuis la version **9.3.0**, chaque rapport est décrit dans un fichier séparé.
Cela aura pour avantage :
@@ -126,6 +126,54 @@ Cela aura pour avantage :
* de simplifier l'écriture de ceux-ci (on pourra alors supprimer tous les préfixes actuellement utilisés pour identifier un rapport).
* de pouvoir organiser ces rapports par modèle métier, ou par type d'organisation
+Tous les rapports sont regroupés dans un répertoire des resources de la version applicative, à savoir dans
+
+```.observe/resources-${project.version}/report/default```
+
+dont voici le contenu (en 9.3.0)
+
+```
+resources-9.3.0-RC-5/report/
+└── default
+ ├── ll
+ │ ├── llCommonTripGearUseFeatures.report
+ │ ├── llLanding.report
+ │ ├── llLogbookActivities.report
+ │ ├── llLogbookCatches.report
+ │ ├── llLogbookSamplesOnActivity.report
+ │ ├── llLogbookSamplesOnBoth.report
+ │ └── llLogbookSamplesOnTrip.report
+ └── ps
+ ├── psCommonTripGearUseFeatures.report
+ ├── psLocalmarketBatch.report
+ ├── psLocalmarketSample.report
+ ├── psLocalmarketSurvey.report
+ ├── psLogbookActivity.report
+ ├── psLogbookSampleMeasures.report
+ ├── psLogbookSampleSet.report
+ ├── psLogbookSampleSpeciesMeasuresCount.report
+ ├── psLogbookSampleSpeciesMeasures.report
+ ├── psLogbookTrip.report
+ ├── psLogbookWellPlanCheck.report
+ ├── psLogbookWellPlan.report
+ ├── psObservationActivitiesByZone.report
+ ├── psObservationActivityWithComment.report
+ ├── psObservationAllActivities.report
+ ├── psObservationCatch.report
+ ├── psObservationCatchTotalCountByGroupAndSpeciesFateDiscardPerAssociation.report
+ ├── psObservationCatchTotalCountByGroupPerReasonForDiscard.report
+ ├── psObservationCatchTotalCountByGroupPerSpeciesFate.report
+ ├── psObservationCatchWeightByGroupAndSpeciesFateDiscardPerAssociation.report
+ ├── psObservationCatchWeightByGroupPerReasonForDiscard.report
+ ├── psObservationCatchWeightByGroupPerSpeciesFate.report
+ ├── psObservationDailySetAndCatch.report
+ ├── psObservationFobUsageExtended.report
+ ├── psObservationFobUsageMinimal.report
+ ├── psObservationLengthsDistribution.report
+ ├── psObservationRepartionCaleeParCuve.report
+ └── psObservationSetByAssociation.report
+```
+
## Description du fonctionnement général d'un rapport
### Prération des variables
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/8c5dacfebf7ea147603d69c1…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/8c5dacfebf7ea147603d69c1…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 6 commits: persistence - Introduction de SqlConversions pour gérer les conversions java → sql
by Tony CHEMIT (@tchemit) 15 Mar '24
by Tony CHEMIT (@tchemit) 15 Mar '24
15 Mar '24
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
47f1b396 by Tony Chemit at 2024-03-05T16:39:59+01:00
persistence - Introduction de SqlConversions pour gérer les conversions java → sql
- - - - -
2c4fed94 by Tony Chemit at 2024-03-08T12:54:45+01:00
persistence - introduce ToolkitIdModificationsToSql
- - - - -
ae84f818 by Tony Chemit at 2024-03-08T12:54:52+01:00
persistence - introduce toSql method on consolidate engine to produce sql script of modifications
- - - - -
6af33613 by Tony Chemit at 2024-03-08T12:54:58+01:00
persistence - on TripConsolidateEngine.consolidate, now use the generated sql script to finalize consolidation instead of letting Hibernate doing it for us
- - - - -
8a4f3493 by Tony Chemit at 2024-03-15T08:19:43+01:00
Merge branch 'feature/issue-2843' into develop
Erreur sur transaction et plantage de Tomcat sur consolidation en mode serveur
- Closes #2843
- - - - -
8c5dacfe by Tony Chemit at 2024-03-15T08:55:32+01:00
update pom
- - - - -
30 changed files:
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/DataWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/common/LandingWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/common/TripReader.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/common/TripWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/localmarket/BatchWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/localmarket/SampleSpeciesMeasureWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/localmarket/SampleSpeciesWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/localmarket/SampleWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/localmarket/SurveyWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/logbook/ActivityWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/logbook/CatchWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/logbook/FloatingObjectWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/logbook/RouteWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/logbook/SampleActivityWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/logbook/SampleSpeciesMeasureWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/logbook/SampleSpeciesWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/logbook/SampleWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/logbook/WellActivityWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/logbook/WellWriter.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/referential/AvdthWeightCategoryBuilderContext.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/referential/ReferentialInterceptor.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/referential/WeightCategoryExtractor.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/referential/interceptors/PackagingInterceptor.java
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/referential/interceptors/WeightCategoryInterceptor.java
- core/persistence/consolidation/src/main/java/fr/ird/observe/consolidation/data/ps/common/TripConsolidateEngine.java
- core/persistence/consolidation/src/main/java/fr/ird/observe/consolidation/data/ps/logbook/ActivityConsolidateEngine.java
- core/persistence/consolidation/src/main/java/fr/ird/observe/consolidation/data/ps/observation/ActivityConsolidateEngine.java
- core/persistence/migration/src/main/java/fr/ird/observe/spi/migration/v9/SampleMeasureRecord.java
- core/persistence/migration/src/main/java/fr/ird/observe/spi/migration/v9/SampleRecord.java
- core/persistence/migration/src/main/java/fr/ird/observe/spi/migration/v9/TargetCatchRecord.java
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/1a82f8d0c4d7546b0cdaf572…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/1a82f8d0c4d7546b0cdaf572…
You're receiving this email because of your account on gitlab.com.
1
0
15 Mar '24
Tony CHEMIT deleted branch feature/issue-2843 at ultreiaio / ird-observe
--
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][feature/issue-2843] 3 commits: persistence - introduce ToolkitIdModificationsToSql
by Tony CHEMIT (@tchemit) 08 Mar '24
by Tony CHEMIT (@tchemit) 08 Mar '24
08 Mar '24
Tony CHEMIT pushed to branch feature/issue-2843 at ultreiaio / ird-observe
Commits:
2c4fed94 by Tony Chemit at 2024-03-08T12:54:45+01:00
persistence - introduce ToolkitIdModificationsToSql
- - - - -
ae84f818 by Tony Chemit at 2024-03-08T12:54:52+01:00
persistence - introduce toSql method on consolidate engine to produce sql script of modifications
- - - - -
6af33613 by Tony Chemit at 2024-03-08T12:54:58+01:00
persistence - on TripConsolidateEngine.consolidate, now use the generated sql script to finalize consolidation instead of letting Hibernate doing it for us
- - - - -
4 changed files:
- core/persistence/consolidation/src/main/java/fr/ird/observe/consolidation/data/ps/common/TripConsolidateEngine.java
- core/persistence/consolidation/src/main/java/fr/ird/observe/consolidation/data/ps/logbook/ActivityConsolidateEngine.java
- core/persistence/consolidation/src/main/java/fr/ird/observe/consolidation/data/ps/observation/ActivityConsolidateEngine.java
- + toolkit/persistence/src/main/java/fr/ird/observe/spi/consolidation/ToolkitIdModificationsToSql.java
Changes:
=====================================
core/persistence/consolidation/src/main/java/fr/ird/observe/consolidation/data/ps/common/TripConsolidateEngine.java
=====================================
@@ -33,13 +33,19 @@ import fr.ird.observe.dto.referential.ReferentialLocale;
import fr.ird.observe.entities.ObserveTopiaDaoSupplier;
import fr.ird.observe.entities.data.ps.common.Trip;
import fr.ird.observe.entities.data.ps.localmarket.Batch;
+import fr.ird.observe.entities.data.ps.logbook.SampleActivity;
import fr.ird.observe.entities.referential.common.LengthLengthParameterCache;
import fr.ird.observe.entities.referential.common.LengthWeightParameterCache;
+import fr.ird.observe.spi.consolidation.ToolkitIdModificationsToSql;
import fr.ird.observe.spi.service.ServiceContext;
import io.ultreia.java4all.decoration.Decorator;
+import io.ultreia.java4all.util.sql.SqlScript;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.nuiton.topia.service.sql.model.TopiaEntitySqlModel;
+import java.io.IOException;
+import java.nio.file.Path;
import java.util.LinkedHashSet;
import java.util.Optional;
import java.util.Set;
@@ -95,15 +101,38 @@ public class TripConsolidateEngine {
decoratorService.installDecorator(Trip.class, trip);
String tripLabel = trip.toString();
TripConsolidateResult result = new TripConsolidateResult(tripId, tripLabel, observationActivityConsolidateResults, logbookActivityConsolidateResults, logbookSampleActivityResults, localmarketBatchResults);
- if (result.withModifications()) {
+ boolean withModifications = result.withModifications();
+ if (withModifications) {
log.info(String.format("Found some modifications on trip: %s - %s", tripId, result.getTripLabel()));
}
if (result.withWarnings()) {
log.info(String.format("Found some warnings on trip: %s - %s", tripId, result.getTripLabel()));
}
+ // clear hibernate session (See https://gitlab.com/ultreiaio/ird-observe/-/issues/2843)
+ context.getTopiaPersistenceContext().getHibernateSupport().clearSession();
+ if (withModifications) {
+ // generate sql script
+ Path scriptPath = context.getTemporaryDirectoryRoot().resolve(String.format("TripConsolidateResult%d.sql", System.nanoTime()));
+ log.info("Produce TripConsolidateResult sql script to: {}", scriptPath);
+ SqlScript script = toSql(scriptPath, result, context.getTopiaApplicationContext().getModel());
+ // consume sql script
+ context.getTopiaPersistenceContext().executeSqlScript(script);
+ }
return Optional.of(result);
}
+ public SqlScript toSql(Path scriptPath, TripConsolidateResult result, TopiaEntitySqlModel entitySqlModel) {
+ try (ToolkitIdModificationsToSql toolkitIdModificationsToSql = new ToolkitIdModificationsToSql(scriptPath, context.timestampNow(), entitySqlModel)) {
+ observationActivityConsolidateEngine.toSql(result.getActivityObservationResults(), toolkitIdModificationsToSql);
+ logbookActivityConsolidateEngine.toSql(result.getActivityLogbookResults(), toolkitIdModificationsToSql);
+ toolkitIdModificationsToSql.toSql(Batch.SPI, result.getLocalmarketBatchResults());
+ toolkitIdModificationsToSql.toSql(SampleActivity.SPI, result.getLogbookSampleActivityResults());
+ return toolkitIdModificationsToSql.build();
+ } catch (IOException e) {
+ throw new IllegalStateException("Could not produce sql script to " + scriptPath, e);
+ }
+ }
+
private Set<ToolkitIdModifications> consolidateLogbookSampleActivities(Trip trip) {
Set<ToolkitIdModifications> result = new LinkedHashSet<>();
if (trip.isWellEmpty() || trip.isSampleEmpty()) {
=====================================
core/persistence/consolidation/src/main/java/fr/ird/observe/consolidation/data/ps/logbook/ActivityConsolidateEngine.java
=====================================
@@ -33,6 +33,7 @@ import fr.ird.observe.entities.data.ps.logbook.Activity;
import fr.ird.observe.entities.data.ps.logbook.FloatingObject;
import fr.ird.observe.entities.data.ps.logbook.FloatingObjectPart;
import fr.ird.observe.entities.data.ps.logbook.Route;
+import fr.ird.observe.spi.consolidation.ToolkitIdModificationsToSql;
import fr.ird.observe.spi.service.ServiceContext;
import io.ultreia.java4all.decoration.Decorator;
import io.ultreia.java4all.util.Dates;
@@ -41,6 +42,7 @@ import org.apache.logging.log4j.Logger;
import java.util.LinkedHashSet;
import java.util.Optional;
+import java.util.Set;
/**
* Created on 12/03/2023.
@@ -60,6 +62,12 @@ public class ActivityConsolidateEngine {
this.activityDecorator = context.getDecoratorService().getDecoratorByType(Activity.class, ActivityAware.CLASSIFIER_WITH_ROUTE);
}
+ public void toSql(Set<ActivityConsolidateResult> activityLogbookResults, ToolkitIdModificationsToSql toolkitIdModificationsToSql) {
+ for (ActivityConsolidateResult activityConsolidateResult : activityLogbookResults) {
+ toolkitIdModificationsToSql.toSql(FloatingObject.SPI, activityConsolidateResult.getFloatingObjectModifications());
+ }
+ }
+
public Optional<ActivityConsolidateResult> consolidateActivity(Trip trip,
Route route,
Activity activity,
@@ -142,5 +150,4 @@ public class ActivityConsolidateEngine {
}
}
}
-
}
=====================================
core/persistence/consolidation/src/main/java/fr/ird/observe/consolidation/data/ps/observation/ActivityConsolidateEngine.java
=====================================
@@ -30,11 +30,15 @@ import fr.ird.observe.dto.data.ps.observation.FloatingObjectPartDto;
import fr.ird.observe.dto.referential.ReferentialLocale;
import fr.ird.observe.entities.data.ps.common.Trip;
import fr.ird.observe.entities.data.ps.observation.Activity;
+import fr.ird.observe.entities.data.ps.observation.Catch;
import fr.ird.observe.entities.data.ps.observation.FloatingObject;
import fr.ird.observe.entities.data.ps.observation.FloatingObjectPart;
import fr.ird.observe.entities.data.ps.observation.Route;
+import fr.ird.observe.entities.data.ps.observation.SampleMeasure;
+import fr.ird.observe.entities.data.ps.observation.Set;
import fr.ird.observe.entities.referential.common.LengthLengthParameterCache;
import fr.ird.observe.entities.referential.common.LengthWeightParameterCache;
+import fr.ird.observe.spi.consolidation.ToolkitIdModificationsToSql;
import fr.ird.observe.spi.service.ServiceContext;
import io.ultreia.java4all.decoration.Decorator;
import io.ultreia.java4all.util.Dates;
@@ -70,6 +74,15 @@ public class ActivityConsolidateEngine {
this.activityDecorator = context.getDecoratorService().getDecoratorByType(Activity.class, ActivityAware.CLASSIFIER_WITH_ROUTE);
}
+ public void toSql(java.util.Set<ActivityConsolidateResult> activityObservationResults, ToolkitIdModificationsToSql toolkitIdModificationsToSql) {
+ for (ActivityConsolidateResult activityConsolidateResult : activityObservationResults) {
+ toolkitIdModificationsToSql.toSql(FloatingObject.SPI, activityConsolidateResult.getFloatingObjectModifications());
+ toolkitIdModificationsToSql.toSql(Set.SPI, activityConsolidateResult.getSetModifications());
+ toolkitIdModificationsToSql.toSql(Catch.SPI, activityConsolidateResult.getCatchModifications());
+ toolkitIdModificationsToSql.toSql(SampleMeasure.SPI, activityConsolidateResult.getSampleMeasureModifications());
+ }
+ }
+
public Optional<ActivityConsolidateResult> consolidateActivity(Trip trip,
Route route,
Activity activity,
@@ -163,5 +176,4 @@ public class ActivityConsolidateEngine {
}
}
}
-
}
=====================================
toolkit/persistence/src/main/java/fr/ird/observe/spi/consolidation/ToolkitIdModificationsToSql.java
=====================================
@@ -0,0 +1,153 @@
+package fr.ird.observe.spi.consolidation;
+
+/*-
+ * #%L
+ * ObServe Toolkit :: Persistence
+ * %%
+ * 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 fr.ird.observe.dto.ToolkitIdModifications;
+import fr.ird.observe.entities.Entity;
+import fr.ird.observe.spi.SqlConversions;
+import fr.ird.observe.spi.context.DtoEntityContext;
+import io.ultreia.java4all.bean.monitor.JavaBeanPropertyModification;
+import io.ultreia.java4all.util.sql.SqlScript;
+import io.ultreia.java4all.util.sql.SqlScriptWriter;
+import org.nuiton.topia.service.sql.model.TopiaEntitySqlModel;
+import org.nuiton.topia.service.sql.model.TopiaEntitySqlTable;
+
+import java.io.Closeable;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+
+/**
+ * To produce sql update code from some consolidation modifications.
+ * <p>
+ * Created at 04/03/2024.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ * @since 9.3.0
+ */
+public class ToolkitIdModificationsToSql implements Closeable {
+
+ public static final String UPDATE_SQL = "UPDATE %s SET %s WHERE topiaId = '%s';";
+ public static final String SET_SQL_CLAUSE = "%s = %s";
+
+ /**
+ * Where to write sql statements.
+ */
+ private final Path target;
+ /**
+ * Now timestamp to used in any sql statement that requires it.
+ */
+ private final Timestamp now;
+ /**
+ * Topia Entity sql model used to perform conversions while writing sql statements.
+ */
+ private final TopiaEntitySqlModel entitySqlModel;
+ /**
+ * Set of spi used to produce sql statements (we be used in method {@link #build()} to add extra sql statements
+ * to update {@code LastUpdateDate} table).
+ */
+ private final Set<DtoEntityContext<?, ?, ?, ?>> spiUsed;
+ /**
+ * Internal writer used to store sql statements.
+ */
+ private SqlScriptWriter writer;
+
+ public ToolkitIdModificationsToSql(Path target, Timestamp now, TopiaEntitySqlModel entitySqlModel) {
+ this.target = Objects.requireNonNull(target);
+ this.now = Objects.requireNonNull(now);
+ this.entitySqlModel = Objects.requireNonNull(entitySqlModel);
+ this.spiUsed = new LinkedHashSet<>();
+ }
+
+
+ public static String toSetClause(TopiaEntitySqlTable sqlModelDescriptorTable, String propertyName, Object value) {
+ String stringValue = SqlConversions.convertValue(sqlModelDescriptorTable, propertyName, value);
+ return String.format(SET_SQL_CLAUSE, propertyName, stringValue);
+ }
+
+ public SqlScript build() {
+ SqlScriptWriter writer = writer();
+ Set<String> lastUpdateDateStatements = new LinkedHashSet<>();
+ spiUsed.forEach(spi -> spi.getUpdateLastUpdateDateTableScript().generate(now).forEach(l -> lastUpdateDateStatements.add(l.trim())));
+ lastUpdateDateStatements.forEach(writer::writeSql);
+ return SqlScript.of(target);
+ }
+
+ public void toSql(DtoEntityContext<?, ?, ?, ?> spi, ToolkitIdModifications modifications) {
+ if (modifications == null) {
+ return;
+ }
+ TopiaEntitySqlTable sqlModelDescriptorTable = entitySqlModel.getDescriptor(spi.toEntityType()).getTable();
+ boolean used = toSql(sqlModelDescriptorTable, modifications);
+ if (used) {
+ spiUsed.add(spi);
+ }
+ }
+
+ public void toSql(DtoEntityContext<?, ?, ?, ?> spi, Set<ToolkitIdModifications> modificationsSet) {
+ if (modificationsSet == null) {
+ return;
+ }
+ TopiaEntitySqlTable sqlModelDescriptorTable = entitySqlModel.getDescriptor(spi.toEntityType()).getTable();
+ boolean used = false;
+ for (ToolkitIdModifications modifications : modificationsSet) {
+ used |= toSql(sqlModelDescriptorTable, modifications);
+ }
+ if (used) {
+ spiUsed.add(spi);
+ }
+ }
+
+ @Override
+ public void close() throws IOException {
+ if (writer != null) {
+ writer.close();
+ }
+ }
+
+ protected SqlScriptWriter writer() {
+ return writer == null ? writer = SqlScriptWriter.of(target) : writer;
+ }
+
+ protected boolean toSql(TopiaEntitySqlTable sqlModelDescriptorTable, ToolkitIdModifications modifications) {
+ if (modifications == null || !modifications.withModifications()) {
+ // only warning on this one
+ return false;
+ }
+ List<String> setClauses = new ArrayList<>(modifications.modificationsCount() + 2);
+ String schemaAndTableName = sqlModelDescriptorTable.getSchemaAndTableName();
+ for (JavaBeanPropertyModification modification : modifications.getModifications()) {
+ setClauses.add(toSetClause(sqlModelDescriptorTable, modification.getPropertyName(), modification.getNewValue()));
+ }
+ setClauses.add(String.format(SET_SQL_CLAUSE, Entity.PROPERTY_TOPIA_VERSION, Entity.PROPERTY_TOPIA_VERSION + " + 1"));
+ setClauses.add(toSetClause(sqlModelDescriptorTable, Entity.PROPERTY_LAST_UPDATE_DATE, now));
+ String sql = String.format(UPDATE_SQL, schemaAndTableName, String.join(", ", setClauses), modifications.getId());
+ writer().writeSql(sql);
+ return true;
+ }
+}
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/7e395260dffcb63904ef21f9…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/7e395260dffcb63904ef21f9…
You're receiving this email because of your account on gitlab.com.
1
0