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
April 2023
- 1 participants
- 35 discussions
[Git][ultreiaio/ird-observe][develop] 3 commits: Etat par défaut du bouton radio Saisie groupée / Saisie individuelle sur capture LL - Closes #2671
by Tony CHEMIT (@tchemit) 14 Apr '23
by Tony CHEMIT (@tchemit) 14 Apr '23
14 Apr '23
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
1ef6adbf by Tony Chemit at 2023-04-14T10:04:08+02:00
Etat par défaut du bouton radio Saisie groupée / Saisie individuelle sur capture LL - Closes #2671
- - - - -
8fb09b9c by Tony Chemit at 2023-04-14T10:04:08+02:00
Petites améliorations sur la gestion des numéros de sous-échantillons - Closes #2668
- - - - -
0dce310f by Tony Chemit at 2023-04-14T10:04:08+02:00
Dans les tableaux, remplacer les champs vides pour les nombres de valeur 0 par 0 - Closes #2674
- - - - -
24 changed files:
- client/core/src/main/java/fr/ird/observe/client/util/table/JXTableUtil.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUIModelStates.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUITableModel.java
- core/api/dto/src/main/java/fr/ird/observe/dto/ProtectedIdsLl.java
- core/api/validation/src/main/filtered-resources/META-INF/validators/validation.json
- core/api/validation/src/main/i18n/getters/validation-messages.getter
- core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/logbook/SampleSpeciesDto-create-error-validation.xml
- core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/logbook/SampleSpeciesDto-update-error-validation.xml
- core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/logbook/SampleSpeciesDto-create-error-validation.xml
- core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/logbook/SampleSpeciesDto-update-error-validation.xml
- core/persistence/java/src/main/java/fr/ird/observe/entities/data/ll/common/TripGroupByReferentialHelper.java
- core/persistence/java/src/main/resources/fr/ird/observe/entities/data/ll/common/TripImpl.hbm.xml
- core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/logbook/SampleSpecies/validation-create.json
- core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/logbook/SampleSpecies/validation-update.json
- core/services/i18n/src/main/i18n/translations/services_en_GB.properties
- core/services/i18n/src/main/i18n/translations/services_es_ES.properties
- core/services/i18n/src/main/i18n/translations/services_fr_FR.properties
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ValidateService-dataResult.json
- model/src/main/models/Observe/dto/class/references.properties
- model/src/main/models/Observe/persistence/class/references.properties
- server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-create-error.xml
- server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-create.json
- server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-update-error.xml
- server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-update.json
Changes:
=====================================
client/core/src/main/java/fr/ird/observe/client/util/table/JXTableUtil.java
=====================================
@@ -125,9 +125,9 @@ public class JXTableUtil {
}
Number reference = (Number) value;
String result = reference.toString();
- if (reference.doubleValue() == 0) {
- return null;
- }
+// if (reference.doubleValue() == 0) {
+// return null;
+// }
if (reference instanceof Integer) {
return result;
}
=====================================
client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUIModelStates.java
=====================================
@@ -26,8 +26,12 @@ import fr.ird.observe.client.configuration.ClientConfig;
import fr.ird.observe.client.datasource.api.cache.ReferencesCache;
import fr.ird.observe.client.datasource.api.cache.ReferencesFilterHelper;
import fr.ird.observe.client.datasource.editor.api.content.ContentUI;
+import fr.ird.observe.client.datasource.editor.ll.data.common.TripUINavigationNode;
import fr.ird.observe.client.datasource.editor.ll.data.observation.composition.LonglinePositionHelper;
import fr.ird.observe.client.util.init.DefaultUIInitializerResult;
+import fr.ird.observe.dto.ProtectedIdsLl;
+import fr.ird.observe.dto.data.CatchAcquisitionMode;
+import fr.ird.observe.dto.data.ll.common.TripReference;
import fr.ird.observe.dto.data.ll.observation.BranchlineDto;
import fr.ird.observe.dto.data.ll.observation.CatchDto;
import fr.ird.observe.dto.data.ll.observation.SetCatchDto;
@@ -52,6 +56,13 @@ public class SetCatchUIModelStates extends GeneratedSetCatchUIModelStates {
*/
protected boolean showIndividualTabs;
+ /**
+ * Default acquisition mode to use.
+ * <p>
+ * See <a href="https://gitlab.com/ultreiaio/ird-observe/-/issues/2671">issue 2671</a>
+ */
+ private CatchAcquisitionMode defaultAcquisitionMode;
+
public SetCatchUIModelStates(GeneratedSetCatchUIModel model) {
super(model);
this.branchlineBean = new BranchlineDto();
@@ -62,6 +73,10 @@ public class SetCatchUIModelStates extends GeneratedSetCatchUIModelStates {
super.init(ui, initializerResult);
SetCatchUI ui1 = (SetCatchUI) ui;
positionHelper = new LonglinePositionHelper<>(ui1.getSection(), ui1.getBasket(), ui1.getBranchline(), ui1.getTableEditBean());
+ TripUINavigationNode tripNode = (TripUINavigationNode) ui1.getModel().getSource().upToReferenceNode(TripReference.class);
+ TripReference tripReference = tripNode.getReference();
+ String observationMethodId = tripReference.getObservationMethodId();
+ this.defaultAcquisitionMode = ProtectedIdsLl.LL_OBSERVATION_GROUPED_OBSERVATION_METHOD_ID.equals(observationMethodId) ? CatchAcquisitionMode.GROUPED : CatchAcquisitionMode.INDIVIDUAL;
}
@Override
@@ -82,6 +97,16 @@ public class SetCatchUIModelStates extends GeneratedSetCatchUIModelStates {
super.copyFormToBean(form);
}
+ @Override
+ public void initDefault(CatchDto newTableBean) {
+ super.initDefault(newTableBean);
+ newTableBean.setAcquisitionMode(defaultAcquisitionMode.ordinal());
+ }
+
+ public CatchAcquisitionMode getDefaultAcquisitionMode() {
+ return defaultAcquisitionMode;
+ }
+
public BranchlineDto getBranchlineBean() {
return branchlineBean;
}
=====================================
client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUITableModel.java
=====================================
@@ -22,12 +22,8 @@ package fr.ird.observe.client.datasource.editor.ll.data.observation;
* #L%
*/
-import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationNode;
-import fr.ird.observe.client.datasource.editor.ll.data.common.TripUINavigationNode;
import fr.ird.observe.client.util.table.EditableListProperty;
-import fr.ird.observe.dto.ProtectedIdsLl;
import fr.ird.observe.dto.data.CatchAcquisitionMode;
-import fr.ird.observe.dto.data.ll.common.TripReference;
import fr.ird.observe.dto.data.ll.observation.CatchDto;
import fr.ird.observe.dto.data.ll.observation.SizeMeasureDto;
import fr.ird.observe.dto.data.ll.observation.WeightMeasureDto;
@@ -112,14 +108,7 @@ public class SetCatchUITableModel extends GeneratedSetCatchUITableModel {
if (newRow) {
// go back to first pane
ui.getMainTabbedPane().setSelectedIndex(0);
- NavigationNode selectedNode = handler.getNavigationTree().getSelectedNode();
- while (!(selectedNode instanceof TripUINavigationNode)) {
- selectedNode = selectedNode.getParent();
- }
- TripReference tripReference = ((TripUINavigationNode) selectedNode).getReference();
- String tripTypeId = tripReference.getTripTypeId();
- log.info(String.format("%s Use trip type id: %s", prefix, tripTypeId));
- acquisitionModeEnum = ProtectedIdsLl.LL_OBSERVATION_GROUPED_TRIP_TYPE_ID.equals(tripTypeId) ? CatchAcquisitionMode.GROUPED : CatchAcquisitionMode.INDIVIDUAL;
+ acquisitionModeEnum = getModel().getStates().getDefaultAcquisitionMode();
ui.getPredator().setEnabled(false);
ui.getHookWhenDiscarded().setEnabled(false);
ui.getDiscardHealthStatus().setEnabled(false);
=====================================
core/api/dto/src/main/java/fr/ird/observe/dto/ProtectedIdsLl.java
=====================================
@@ -48,7 +48,7 @@ public interface ProtectedIdsLl {
String LL_COMMON_ACTIVITY_HARBOUR_ID = "fr.ird.referential.ll.common.VesselActivity#666#03";
- String LL_OBSERVATION_GROUPED_TRIP_TYPE_ID = "fr.ird.referential.ll.common.ObservationMethod#1239832686136#0.1";
+ String LL_OBSERVATION_GROUPED_OBSERVATION_METHOD_ID = "fr.ird.referential.ll.common.ObservationMethod#1239832686136#0.1";
String LL_OBSERVATION_CATCH_DISCARDED_CATCH_FATE_ID = "fr.ird.referential.ll.common.CatchFate#1239832686125#0.3";
String LL_LOGBOOK_ACTIVITY_DEFAULT_DATA_QUALITY_ID = "fr.ird.referential.common.DataQuality#0#1";
String LL_LOGBOOK_LANDING_PART_DEFAULT_DATA_QUALITY_ID = "fr.ird.referential.common.DataQuality#0#5";
=====================================
core/api/validation/src/main/filtered-resources/META-INF/validators/validation.json
=====================================
@@ -11539,7 +11539,8 @@
"name": "subSampleNumber",
"comments": [
"subSampleNumber is a positive number",
- "subSampleNumber is mandatory"
+ "subSampleNumber is mandatory",
+ "subSampleNumber must be strictly positive if Sample.superSample is true"
]
},
{
@@ -11621,7 +11622,8 @@
"name": "subSampleNumber",
"comments": [
"subSampleNumber is a positive number",
- "subSampleNumber is mandatory"
+ "subSampleNumber is mandatory",
+ "subSampleNumber must be strictly positive if Sample.superSample is true"
]
},
{
=====================================
core/api/validation/src/main/i18n/getters/validation-messages.getter
=====================================
@@ -53,6 +53,7 @@ observe.data.ll.observation.Tdr.validation.fishingEnd.after.fishingStart
observe.data.ll.observation.Tdr.validation.fishingStart.after.deploymentStart
observe.data.ps.Route.validation.duplicated.date
observe.data.ps.SampleSpecies.validation.mismatch.measuredCount
+observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber
observe.data.ps.common.Trip.departureWellContentStatus.validation.notFilled
observe.data.ps.common.Trip.departureWellContentStatus.validation.required
observe.data.ps.common.Trip.landingWellContentStatus.validation.notFilled
=====================================
core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/logbook/SampleSpeciesDto-create-error-validation.xml
=====================================
@@ -109,6 +109,12 @@
<field-validator type="positiveNumber">
<message/>
</field-validator>
+
+ <!-- subSampleNumber must be strictly positive if Sample.superSample is true -->
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression"><![CDATA[ !currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param>
+ <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message>
+ </field-validator>
</field>
<field name="totalCount">
=====================================
core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/logbook/SampleSpeciesDto-update-error-validation.xml
=====================================
@@ -109,6 +109,12 @@
<field-validator type="positiveNumber">
<message/>
</field-validator>
+
+ <!-- subSampleNumber must be strictly positive if Sample.superSample is true -->
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression"><![CDATA[ !currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param>
+ <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message>
+ </field-validator>
</field>
<field name="totalCount">
=====================================
core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/logbook/SampleSpeciesDto-create-error-validation.xml
=====================================
@@ -30,6 +30,14 @@
</field-validator>
</field>
+ <field name="subSampleNumber">
+ <!-- subSampleNumber must be strictly positive if Sample.superSample is true -->
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression"><![CDATA[ !currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param>
+ <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message>
+ </field-validator>
+ </field>
+
<field name="totalCount">
<!-- totalCount >= measuredCount -->
<field-validator type="fieldexpression" short-circuit="true">
=====================================
core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/logbook/SampleSpeciesDto-update-error-validation.xml
=====================================
@@ -30,6 +30,14 @@
</field-validator>
</field>
+ <field name="subSampleNumber">
+ <!-- subSampleNumber must be strictly positive if Sample.superSample is true -->
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression"><![CDATA[ !currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param>
+ <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message>
+ </field-validator>
+ </field>
+
<field name="totalCount">
<!-- totalCount >= measuredCount -->
<field-validator type="fieldexpression" short-circuit="true">
=====================================
core/persistence/java/src/main/java/fr/ird/observe/entities/data/ll/common/TripGroupByReferentialHelper.java
=====================================
@@ -27,6 +27,7 @@ import fr.ird.observe.dto.data.ll.common.TripReference;
import fr.ird.observe.dto.data.ll.common.TripStatBuilder;
import fr.ird.observe.dto.referential.common.CountryReference;
import fr.ird.observe.dto.referential.common.VesselReference;
+import fr.ird.observe.dto.referential.ll.common.ObservationMethodReference;
import fr.ird.observe.dto.referential.ll.common.ProgramReference;
import fr.ird.observe.dto.referential.ll.common.TripTypeReference;
import fr.ird.observe.entities.referential.common.Country;
@@ -37,6 +38,7 @@ import fr.ird.observe.entities.referential.common.ShipOwner;
import fr.ird.observe.entities.referential.common.Vessel;
import fr.ird.observe.entities.referential.common.VesselSizeCategory;
import fr.ird.observe.entities.referential.common.VesselType;
+import fr.ird.observe.entities.referential.ll.common.ObservationMethod;
import fr.ird.observe.entities.referential.ll.common.Program;
import fr.ird.observe.entities.referential.ll.common.TripType;
import fr.ird.observe.spi.context.DataGroupByReferentialHelper;
@@ -68,6 +70,7 @@ public class TripGroupByReferentialHelper extends DataGroupByReferentialHelper<T
public final RelationCountCache<Trip> gearUseFeaturesCount;
private final ReferentialCache<ProgramReference, Program> program;
private final ReferentialCache<TripTypeReference, TripType> tripType;
+ private final ReferentialCache<ObservationMethodReference, ObservationMethod> observationMethod;
private final ReferentialCache<VesselReference, Vessel> vessel;
private final ReferentialCache<CountryReference, Country> country;
private final StatsBuilder statsBuilder;
@@ -82,6 +85,7 @@ public class TripGroupByReferentialHelper extends DataGroupByReferentialHelper<T
fr.ird.observe.entities.data.ll.common.GearUseFeatures.SPI),
List.of(Ocean.SPI,
Program.SPI,
+ ObservationMethod.SPI,
Country.SPI,
Harbour.SPI,
Person.SPI,
@@ -94,6 +98,7 @@ public class TripGroupByReferentialHelper extends DataGroupByReferentialHelper<T
this.vessel = referentialGet(Vessel.class);
this.tripType = referentialGet(TripType.class);
this.country = referentialGet(Country.class);
+ this.observationMethod = referentialGet(ObservationMethod.class);
this.observationActivityCount = relationGet(fr.ird.observe.entities.data.ll.observation.Activity.SPI);
this.logbookActivityCount = relationGet(fr.ird.observe.entities.data.ll.logbook.Activity.SPI);
@@ -119,6 +124,7 @@ public class TripGroupByReferentialHelper extends DataGroupByReferentialHelper<T
dto.setTripType(tripType.reference(resultSet, rowIndex));
dto.setObservationsAvailability(getBoolean(resultSet, rowIndex));
dto.setLogbookAvailability(getBoolean(resultSet, rowIndex));
+ dto.setObservationMethod(observationMethod.reference(resultSet, rowIndex));
statsBuilder.buildStatistics(dto);
return TripReference.of(referentialLocale, dto);
}
=====================================
core/persistence/java/src/main/resources/fr/ird/observe/entities/data/ll/common/TripImpl.hbm.xml
=====================================
@@ -120,7 +120,7 @@
where e.lastUpdateDate > ?1
]]></query>
<sql-query name="fr.ird.observe.entities.data.ll.common.Trip::reference" read-only="true"><![CDATA[
- SELECT main.topiaId, main.topiaCreateDate, main.topiaVersion, main.lastUpdateDate, main.observationsProgram, main.logbookProgram, main.startDate, main.endDate, main.vessel, main.tripType, main.observationsAvailability, main.logbookAvailability FROM ll_common.trip main
+ SELECT main.topiaId, main.topiaCreateDate, main.topiaVersion, main.lastUpdateDate, main.observationsProgram, main.logbookProgram, main.startDate, main.endDate, main.vessel, main.tripType, main.observationsAvailability, main.logbookAvailability, main.observationMethod FROM ll_common.trip main
]]></sql-query>
<sql-query name="fr.ird.observe.entities.data.ll.common.Trip::groupBy::startDate::count::all" read-only="true"><![CDATA[
SELECT TO_CHAR(e.startDate, 'YYYY-MM-DD'), COUNT(e.topiaId) FROM ll_common.trip e GROUP BY TO_CHAR(e.startDate, 'YYYY-MM-DD') ORDER BY TO_CHAR(e.startDate, 'YYYY-MM-DD');
=====================================
core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/logbook/SampleSpecies/validation-create.json
=====================================
@@ -44,7 +44,8 @@
"subSampleNumber": {
"errors": [
"subSampleNumber is a positive number",
- "subSampleNumber is mandatory"
+ "subSampleNumber is mandatory",
+ "subSampleNumber must be strictly positive if Sample.superSample is true"
]
},
"totalCount": {
=====================================
core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/logbook/SampleSpecies/validation-update.json
=====================================
@@ -44,7 +44,8 @@
"subSampleNumber": {
"errors": [
"subSampleNumber is a positive number",
- "subSampleNumber is mandatory"
+ "subSampleNumber is mandatory",
+ "subSampleNumber must be strictly positive if Sample.superSample is true"
]
},
"totalCount": {
=====================================
core/services/i18n/src/main/i18n/translations/services_en_GB.properties
=====================================
@@ -136,7 +136,7 @@ observe.Common.gearCharacteristic.selected=Selected characteristics
observe.Common.gearCharacteristic.short=Caracteristic
observe.Common.gearUseFeatures=Gear use features
observe.Common.gearUseFeaturesMeasurement=Measurements
-observe.Common.generalComment=Comment « General »
+observe.Common.generalComment=Comment « General »
observe.Common.generalTab=General characteristics
observe.Common.global.progression.description=Global progression
observe.Common.gonadeWeight=Gonade weight (g)
@@ -454,7 +454,7 @@ observe.constant.TripMapPointType.psActivityObs=Observation - Other activity
observe.constant.TripMapPointType.psActivityObsInHarbour=Observation - In port
observe.constant.TripMapPointType.psActivityObsWithFreeSchoolType=Observation - Free School type
observe.constant.TripMapPointType.psActivityObsWithObjectSchoolType=Observation - Object School type
-observe.constant.TripMapPointType.psTransmittingBuoyLostLogbook=Logbook - Transmitting buoy lost
+observe.constant.TripMapPointType.psTransmittingBuoyLostLogbook=Logbook - Transmitting buoy lost
observe.constant.TripMapPointType.psTripDepartureHarbour=Port departure
observe.constant.TripMapPointType.psTripLandingHarbour=Port landing
observe.constant.TypeTransmittingBuoyOperation.endOfUse=End of usage
@@ -910,6 +910,7 @@ observe.data.ps.Route.validation.duplicated.date=There is already another route
observe.data.ps.Route.validation.invalid.quadrant=Activity quadrant at position %1$s is not consistent with trip ocean (%2$s) of trip (indian\: 1 or 2, atlantic\: 1,2,3 or 4).
observe.data.ps.Route.validation.invalid.time=Observation time cant' be after the one of the previous activity (activity at position %1$s is not correct).
observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Measure count (%s) must be the sum of frequencies count (%s)
+observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber=The sub sample number must be strictly positive if the sample is a « super sample ».
observe.data.ps.common.Trip.action.move.all=Move all
observe.data.ps.common.Trip.action.move.all.choose.parent.message=Select target trip
observe.data.ps.common.Trip.action.move.all.choose.parent.title=Move data to another trip
@@ -918,7 +919,7 @@ observe.data.ps.common.Trip.action.openLinkReportsUrl.tip=View reports in a web
observe.data.ps.common.Trip.advancedSamplingAcquisitionStatus=Advanced sampling
observe.data.ps.common.Trip.departureWellContentStatus=Departure well content status
observe.data.ps.common.Trip.departureWellContentStatus.validation.notFilled=Status is not filled.
-observe.data.ps.common.Trip.departureWellContentStatus.validation.required=Required departure well content status if logbook data is selected.
+observe.data.ps.common.Trip.departureWellContentStatus.validation.required=Required departure well content status if logbook data is selected.
observe.data.ps.common.Trip.fishingTime=Fishing time (h)
observe.data.ps.common.Trip.gearUseFeaturesStat=Count of vessel equipment
observe.data.ps.common.Trip.landingAcquisitionStatus=Landing sheet collection
=====================================
core/services/i18n/src/main/i18n/translations/services_es_ES.properties
=====================================
@@ -910,6 +910,7 @@ observe.data.ps.Route.validation.duplicated.date=Ya existe otra ruta en esa fech
observe.data.ps.Route.validation.invalid.quadrant=El cuadrante de la actividad %1$s no es coherente con el océano (%2$s) de la marea (indico \: 1,2, atlántico \: 1, 2, 3, 4)
observe.data.ps.Route.validation.invalid.time=La hora de la observación de la actividad debe ser superior a la de la actividad anterior (actividad %1$s incorrecta).
observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Measure count (%s) must be the sum of frequencies count (%s)
+observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber=The sub sample number must be strictly positive if the sample is a « super sample ». \#TODO
observe.data.ps.common.Trip.action.move.all=Move all
observe.data.ps.common.Trip.action.move.all.choose.parent.message=Select target trip
observe.data.ps.common.Trip.action.move.all.choose.parent.title=Move data to another trip
@@ -931,8 +932,8 @@ observe.data.ps.common.Trip.landingTotalWeight=Total débarqué (en t) \#TODO
observe.data.ps.common.Trip.landingWellContentStatus=État de remplissage des cuves après débarquement \#TODO
observe.data.ps.common.Trip.landingWellContentStatus.validation.notFilled=Status is not filled.
observe.data.ps.common.Trip.landingWellContentStatus.validation.required=Must be filled.
-observe.data.ps.common.Trip.localMarketAcquisitionStatusLabel.tip=Only choices that indicate existence of data allow acquisition for Local market
-observe.data.ps.common.Trip.localMarketSurveySamplingAcquisitionStatusLabel.tip=Only choices that indicate existence of data allow acquisition for Local market survey
+observe.data.ps.common.Trip.localMarketAcquisitionStatusLabel.tip=Only choices that indicate existence of data allow acquisition for Local market
+observe.data.ps.common.Trip.localMarketSurveySamplingAcquisitionStatusLabel.tip=Only choices that indicate existence of data allow acquisition for Local market survey
observe.data.ps.common.Trip.localMarketTotalWeight=Total marché local (en t) \#TODO
observe.data.ps.common.Trip.localMarketWellsSamplingAcquisitionStatusLabel.tip=Only choices that indicate existence of data allow acquisition for Local market well sampling
observe.data.ps.common.Trip.localmarketBatchStat=Count of batches « Local market » \#TODO
=====================================
core/services/i18n/src/main/i18n/translations/services_fr_FR.properties
=====================================
@@ -241,7 +241,7 @@ observe.Common.observedSystem.available=Systèmes observés disponibles
observe.Common.observedSystem.selected=Systèmes observés sélectionnés
observe.Common.observedSystemDistance=Distance système observé (en milles avec 1 décimale)
observe.Common.observer=Observateur
-observe.Common.observer.validation.required=Le champs est obligatoire si données observations est sélectionné.
+observe.Common.observer.validation.required=Le champs est obligatoire si données observations est sélectionné.
observe.Common.ocean=Ocean
observe.Common.ocean.available=Océans disponibles
observe.Common.ocean.selected=Océans sélectionnés
@@ -910,6 +910,7 @@ observe.data.ps.Route.validation.duplicated.date=Il existe déjà une autre rout
observe.data.ps.Route.validation.invalid.quadrant=Le quadrant de l’activité à la position %1$s n'est pas cohérent par rapport à l'océan (%2$s) de la marée (indien \: 1
observe.data.ps.Route.validation.invalid.time=L'heure d'observation d'une activité doit être supérieure à celle de l'activité précédente (activité de position %1$s incorrecte).
observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Le nombre mesuré (%s) doit valoir la somme des effectifs de fréquences (%s)
+observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber=Le numéro de sous-échantillon doit être strictement positif si l'échantillon est un « super échantillon ».
observe.data.ps.common.Trip.action.move.all=Déplacer des données
observe.data.ps.common.Trip.action.move.all.choose.parent.message=À quelle marée voulez-vous associer les données sélectionnées ?
observe.data.ps.common.Trip.action.move.all.choose.parent.title=Changer la marée des données sélectionnées
@@ -1147,7 +1148,7 @@ observe.data.ps.logbook.Route.type=Route
observe.data.ps.logbook.Route.validation.date.after.currentPsCommonTrip.startDate=Le jour d'observation (%2$s) doit être supérieure ou égale à la date de début de la marée (%1$s).
observe.data.ps.logbook.Route.validation.date.before.currentPsCommonTrip.endDate=La date (%1$s) doit être inférieure ou égale à la date de fin de marée (%2$s).
observe.data.ps.logbook.Sample.action.create=Échantillon suivant
-observe.data.ps.logbook.Sample.action.move=Changer de marée
+observe.data.ps.logbook.Sample.action.move=Changer de marée
observe.data.ps.logbook.Sample.action.move.choose.parent.message=À quelle marée voulez-vous associer les échantillons sélectionnés ?
observe.data.ps.logbook.Sample.action.move.choose.parent.title=Changer la marée des échantillons
observe.data.ps.logbook.Sample.action.move.tip=Changer la marée des échantillons sélectionnés
@@ -1190,7 +1191,7 @@ observe.data.ps.logbook.SampleSpecies.title=Échantillon espèce
observe.data.ps.logbook.SampleSpecies.totalCount=Nombre total
observe.data.ps.logbook.SampleSpecies.totalCount.short=Total
observe.data.ps.logbook.SampleSpecies.type=Échantillon espèce
-observe.data.ps.logbook.SampleSpecies.validation.mismatch.totalCount=Le nombre total doit etre supérieur ou égal à celui mesuré
+observe.data.ps.logbook.SampleSpecies.validation.mismatch.totalCount=Le nombre total doit être supérieur ou égal à celui mesuré
observe.data.ps.logbook.SampleSpeciesMeasure.count=Effectif
observe.data.ps.logbook.SampleSpeciesMeasure.count.short=Effectif
observe.data.ps.logbook.SampleSpeciesMeasure.type=Mesure d'un échantillon espèce
=====================================
core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ValidateService-dataResult.json
=====================================
@@ -84,12 +84,13 @@
"needComment": false,
"enabled": true,
"id": "fr.ird.referential.common.Vessel#1433499225457#0.75786798959598",
- "lastUpdateDate": "2016-12-06T15:54:27.727Z",
- "topiaVersion": 6,
+ "lastUpdateDate": "2023-02-14T00:00:00.000Z",
+ "topiaVersion": 7,
"topiaCreateDate": "2015-06-05T14:13:45.466Z"
},
"observationsAvailability": true,
"logbookAvailability": true,
+ "observationMethodId": "fr.ird.referential.ll.common.ObservationMethod#1239832686136#0.1",
"homeId": "SRP-GRAN-20191026",
"id": "fr.ird.data.ll.common.Trip#1573218053521#0.35390398604784334",
"lastUpdateDate": "2021-05-01T10:36:12.695Z",
=====================================
model/src/main/models/Observe/dto/class/references.properties
=====================================
@@ -21,7 +21,7 @@
###
data.ll.common.GearUseFeatures=gearLabel,number,usedInTrip
data.ll.common.GearUseFeaturesMeasurement=measurementValue,gearCharacteristicLabel
-data.ll.common.Trip=startDate,endDate,observationsProgram,logbookProgram,tripTypeId,vessel,observationsAvailability,logbookAvailability
+data.ll.common.Trip=startDate,endDate,observationsProgram,logbookProgram,tripTypeId,vessel,observationsAvailability,logbookAvailability,observationMethodId
data.ll.landing.Landing=startDate,harbourLabel,vesselLabel
data.ll.landing.LandingPart=species,categoryMin,categoryMax,weight
data.ll.logbook.Activity=startTimeStamp,endTimeStamp,latitude,longitude,vesselActivity,set,activitySample,relatedObservedActivity
=====================================
model/src/main/models/Observe/persistence/class/references.properties
=====================================
@@ -19,5 +19,5 @@
# <http://www.gnu.org/licenses/gpl-3.0.html>.
# #L%
###
-data.ll.common.Trip=lastUpdateDate,observationsProgram,logbookProgram,startDate,endDate,vessel,tripType,observationsAvailability,logbookAvailability
+data.ll.common.Trip=lastUpdateDate,observationsProgram,logbookProgram,startDate,endDate,vessel,tripType,observationsAvailability,logbookAvailability,observationMethod
data.ps.common.Trip=lastUpdateDate,observationsProgram,logbookProgram,startDate,endDate,vessel,observationsAcquisitionStatus,logbookAcquisitionStatus,targetWellsSamplingAcquisitionStatus,landingAcquisitionStatus,localMarketAcquisitionStatus,localMarketWellsSamplingAcquisitionStatus,localMarketSurveySamplingAcquisitionStatus,advancedSamplingAcquisitionStatus
=====================================
server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-create-error.xml
=====================================
@@ -109,6 +109,12 @@
<field-validator type="positiveNumber">
<message/>
</field-validator>
+
+ <!-- subSampleNumber must be strictly positive if Sample.superSample is true -->
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression"><![CDATA[ currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param>
+ <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message>
+ </field-validator>
</field>
<field name="totalCount">
=====================================
server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-create.json
=====================================
@@ -44,7 +44,8 @@
"subSampleNumber": {
"errors": [
"subSampleNumber is a positive number",
- "subSampleNumber is mandatory"
+ "subSampleNumber is mandatory",
+ "subSampleNumber must be strictly positive if Sample.superSample is true"
]
},
"totalCount": {
=====================================
server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-update-error.xml
=====================================
@@ -109,6 +109,12 @@
<field-validator type="positiveNumber">
<message/>
</field-validator>
+
+ <!-- subSampleNumber must be strictly positive if Sample.superSample is true -->
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression"><![CDATA[ currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param>
+ <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message>
+ </field-validator>
</field>
<field name="totalCount">
=====================================
server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-update.json
=====================================
@@ -44,7 +44,8 @@
"subSampleNumber": {
"errors": [
"subSampleNumber is a positive number",
- "subSampleNumber is mandatory"
+ "subSampleNumber is mandatory",
+ "subSampleNumber must be strictly positive if Sample.superSample is true"
]
},
"totalCount": {
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/37c9f70e1e6ccb0bb8ead99d…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/37c9f70e1e6ccb0bb8ead99d…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop-9.0.x] 2 commits: avdth - remove old tests
by Tony CHEMIT (@tchemit) 07 Apr '23
by Tony CHEMIT (@tchemit) 07 Apr '23
07 Apr '23
Tony CHEMIT pushed to branch develop-9.0.x at ultreiaio / ird-observe
Commits:
d1a3f027 by Tony Chemit at 2023-04-07T11:21:30+02:00
avdth - remove old tests
- - - - -
6540fc10 by Tony Chemit at 2023-04-07T13:44:30+02:00
L'appli 9.0.30 reconnait un modèle 9.1 comme un modèle 7.6 - Closes #2670
- - - - -
15 changed files:
- − core/persistence/test/src/test/java/fr/ird/observe/persistence/avdth/data/AvdthAtlanticDataBuilderAllTest.java
- − core/persistence/test/src/test/java/fr/ird/observe/persistence/avdth/data/AvdthAtlanticDataBuilderByYearNotValidTest.java
- − core/persistence/test/src/test/java/fr/ird/observe/persistence/avdth/data/AvdthAtlanticDataBuilderByYearTest.java
- − core/persistence/test/src/test/java/fr/ird/observe/persistence/avdth/data/AvdthDataBuilderAllYearTestSupport.java
- − core/persistence/test/src/test/java/fr/ird/observe/persistence/avdth/data/AvdthIndianDataBuilderAllTest.java
- − core/persistence/test/src/test/java/fr/ird/observe/persistence/avdth/data/AvdthIndianDataBuilderByYearTest.java
- toolkit/persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcHelper.java
- toolkit/persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcSecurityHelper.java
- toolkit/persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcSecurityHelperH2.java
- toolkit/persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcSecurityHelperPostgres.java
- toolkit/persistence/src/main/java/org/nuiton/topia/service/migration/TopiaMigrationServiceContext.java
- toolkit/persistence/src/main/java/org/nuiton/topia/service/migration/TopiaMigrationServiceImpl.java
- toolkit/persistence/src/main/java/org/nuiton/topia/service/migration/version/MigrationServiceSqlHelper.java
- toolkit/persistence/src/main/java/org/nuiton/topia/service/migration/version/TMSVersion.java
- toolkit/persistence/src/main/java/org/nuiton/topia/service/sql/internal/consumer/AddVersionTableConsumer.java
Changes:
=====================================
core/persistence/test/src/test/java/fr/ird/observe/persistence/avdth/data/AvdthAtlanticDataBuilderAllTest.java deleted
=====================================
@@ -1,57 +0,0 @@
-package fr.ird.observe.persistence.avdth.data;
-
-/*-
- * #%L
- * ObServe Core :: Persistence :: Test
- * %%
- * Copyright (C) 2008 - 2023 IRD, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ird.observe.dto.ProtectedIdsCommon;
-import org.junit.Ignore;
-import org.junit.runners.Parameterized;
-
-import java.nio.file.Path;
-
-/**
- * Created on 24/05/2021.
- *
- * @author Tony Chemit - dev(a)tchemit.fr
- * @since 9.0.0
- */
-@Ignore
-public class AvdthAtlanticDataBuilderAllTest extends AvdthDataBuilderAllYearTestSupport {
-
- public static final Path ROOT_PATH = getPath("OA").resolve("all");
-
- @Parameterized.Parameters(name = "{index}: {0}")
- public static Iterable<?> data() {
- return getDatabases(ROOT_PATH);
- }
-
- @Override
- protected Path getRootPath() {
- return ROOT_PATH;
- }
-
- @Override
- protected String getOceanId() {
- return ProtectedIdsCommon.COMMON_OCEAN_ATLANTIC;
- }
-
-}
=====================================
core/persistence/test/src/test/java/fr/ird/observe/persistence/avdth/data/AvdthAtlanticDataBuilderByYearNotValidTest.java deleted
=====================================
@@ -1,217 +0,0 @@
-package fr.ird.observe.persistence.avdth.data;
-
-/*-
- * #%L
- * ObServe Core :: Persistence :: Test
- * %%
- * Copyright (C) 2008 - 2023 IRD, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ird.observe.dto.ProtectedIdsCommon;
-import fr.ird.observe.services.service.data.ps.AvdthDataImportResult;
-import org.junit.Ignore;
-import org.junit.runners.Parameterized;
-
-import java.nio.file.Path;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Only for debug some situations... will be removed soon.
- * <p>
- * Created on 24/05/2021.
- *
- * @author Tony Chemit - dev(a)tchemit.fr
- * @since 9.0.0
- */
-@SuppressWarnings({"SpellCheckingInspection", "unused"})
-@Ignore
-public class AvdthAtlanticDataBuilderByYearNotValidTest extends AvdthDataBuilderByYearTestSupport {
-
- public static final Path ROOT_PATH = getPath("OA");
-
- public static final Set<String> NOT_VALID = Set.of(
- "OA_1969_V35.mdb",
- "OA_1970_V35.mdb",
- "OA_1971_V35.mdb",
- "OA_1972_V35.mdb",
- "OA_1973_V35.mdb",
- "OA_1974_V35.mdb",
- "OA_1975_V35.mdb",
- "OA_1976_V35.mdb",
- "OA_1977_V35.mdb",
- "OA_1978_V35.mdb",
- "OA_1979_V35.mdb",
- "OA_1980_V35.mdb",
- "OA_1981_V35.mdb",
- "OA_1982_V35.mdb",
- "OA_1983_V35.mdb",
- "OA_1984_V35.mdb",
- "OA_1985_V35.mdb",
- "OA_1986_V35.mdb",
- "OA_1987_V35.mdb",
- "OA_1988_V35.mdb",
- "OA_1989_V35.mdb",
- "OA_1990_V35.mdb",
- "OA_1993_V35.mdb",
- "OA_1995_V35.mdb",
- "OA_1996_V35.mdb",
- "OA_1997_V35.mdb",
- "OA_1998_V35.mdb",
- "OA_1999_V35.mdb",
- "OA_2000_V35.mdb",
- "OA_2001_V35.mdb",
- "OA_2002_V35.mdb",
- "OA_2003_V35.mdb",
- "OA_2004_V35.mdb",
- "OA_2005_V35.mdb",
- "OA_2006_V35.mdb",
- "OA_2010_V35.mdb",
- "OA_2012_V35.mdb",
- "OA_2013_V35.mdb");
-
- // no link between CUVE and MAREE
- public static final Set<String> MISSING_CUVE = Set.of(
- "OA_1999_V35.mdb",
- "OA_2000_V35.mdb",
- "OA_2001_V35.mdb",
- "OA_2002_V35.mdb",
- "OA_2003_V35.mdb",
- "OA_2004_V35.mdb",
- "OA_2005_V35.mdb",
- "OA_2006_V35.mdb",
- "OA_2010_V35.mdb",
- "OA_2012_V35.mdb",
- "OA_2013_V35.mdb"
- );
-
- // no link between CUVE_CALEE and MAREE
- public static final Set<String> MISSING_CUVE_CALEE = Set.of(
- "OA_2000_V35.mdb",
- "OA_2001_V35.mdb",
- "OA_2002_V35.mdb",
- "OA_2003_V35.mdb",
- "OA_2004_V35.mdb",
- "OA_2005_V35.mdb",
- "OA_2006_V35.mdb",
- "OA_2010_V35.mdb"
- );
-
- // no link between ECH_CALEE and MAREE
- public static final Set<String> MISSING_ECH_CALEE = Set.of(
- "OA_1969_V35.mdb",
- "OA_1970_V35.mdb",
- "OA_1971_V35.mdb",
- "OA_1972_V35.mdb",
- "OA_1973_V35.mdb",
- "OA_1974_V35.mdb",
- "OA_1975_V35.mdb",
- "OA_1976_V35.mdb",
- "OA_1977_V35.mdb",
- "OA_1978_V35.mdb",
- "OA_1979_V35.mdb",
- "OA_1980_V35.mdb",
- "OA_1981_V35.mdb",
- "OA_1982_V35.mdb",
- "OA_1983_V35.mdb",
- "OA_1984_V35.mdb",
- "OA_1985_V35.mdb",
- "OA_1986_V35.mdb",
- "OA_1987_V35.mdb",
- "OA_1988_V35.mdb",
- "OA_1989_V35.mdb",
- "OA_1990_V35.mdb",
- "OA_1998_V35.mdb",
- "OA_1999_V35.mdb",
- "OA_2000_V35.mdb",
- "OA_2001_V35.mdb",
- "OA_2002_V35.mdb",
- "OA_2010_V35.mdb"
- );
- // no link between ECHANTILLON and MAREE
- public static final Set<String> MISSING_ECHANTILLON = Set.of(
- "OA_1969_V35.mdb",
- "OA_1970_V35.mdb",
- "OA_1971_V35.mdb",
- "OA_1972_V35.mdb",
- "OA_1973_V35.mdb",
- "OA_1974_V35.mdb",
- "OA_1975_V35.mdb",
- "OA_1976_V35.mdb",
- "OA_1977_V35.mdb",
- "OA_1978_V35.mdb",
- "OA_1979_V35.mdb",
- "OA_1980_V35.mdb",
- "OA_1981_V35.mdb",
- "OA_1982_V35.mdb",
- "OA_1983_V35.mdb",
- "OA_1984_V35.mdb",
- "OA_1985_V35.mdb",
- "OA_1986_V35.mdb",
- "OA_1987_V35.mdb",
- "OA_1988_V35.mdb",
- "OA_1989_V35.mdb",
- "OA_1990_V35.mdb",
- "OA_1998_V35.mdb",
- "OA_1999_V35.mdb",
- "OA_2000_V35.mdb",
- "OA_2001_V35.mdb",
- "OA_2002_V35.mdb",
- "OA_2010_V35.mdb");
-
- // Cound not find Sample.activity but there is some...
- public static final Set<String> NO_MISSING = Set.of(
- "OA_1993_V35.mdb",
- "OA_1995_V35.mdb",
- "OA_1996_V35.mdb",
- "OA_1997_V35.mdb"
- );
-
- public static final String TEST_ADD_SAMPLE_ACTIVITY = "OA_1977_V35.mdb";
-
- @Parameterized.Parameters(name = "{index}: {0}")
- public static Iterable<?> data() {
- List<String> databases = allDatabases(ROOT_PATH);
- databases.removeIf(n -> !NOT_VALID.contains(n));
-// databases.removeIf(n -> !MISSING_ECH_CALEE.contains(n));
-// databases.removeIf(NO_MISSING::contains);
-// databases.removeIf(MISSING_CUVE::contains);
-// databases.removeIf(MISSING_CUVE_CALEE::contains);
-// databases.removeIf(MISSING_ECHANTILLON::contains);
-// databases.removeIf(MISSING_ECH_CALEE::contains);
- return databases;
- }
-
- @Override
- protected void checkNotValidResult(AvdthDataImportResult result) {
-
- if (result.getNotReadResult().isEmpty()) {
- super.checkNotValidResult(result);
- }
- }
-
- @Override
- protected Path getRootPath() {
- return ROOT_PATH;
- }
-
- @Override
- protected String getOceanId() {
- return ProtectedIdsCommon.COMMON_OCEAN_ATLANTIC;
- }
-}
=====================================
core/persistence/test/src/test/java/fr/ird/observe/persistence/avdth/data/AvdthAtlanticDataBuilderByYearTest.java deleted
=====================================
@@ -1,54 +0,0 @@
-package fr.ird.observe.persistence.avdth.data;
-
-/*-
- * #%L
- * ObServe Core :: Persistence :: Test
- * %%
- * Copyright (C) 2008 - 2023 IRD, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ird.observe.dto.ProtectedIdsCommon;
-import org.junit.runners.Parameterized;
-
-import java.nio.file.Path;
-
-/**
- * Created on 24/05/2021.
- *
- * @author Tony Chemit - dev(a)tchemit.fr
- * @since 9.0.0
- */
-public class AvdthAtlanticDataBuilderByYearTest extends AvdthDataBuilderByYearTestSupport {
-
- public static final Path ROOT_PATH = getPath("OA");
-
- @Parameterized.Parameters(name = "{index}: {0}")
- public static Iterable<?> data() {
- return getDatabases(ROOT_PATH);
- }
-
- @Override
- protected Path getRootPath() {
- return ROOT_PATH;
- }
-
- @Override
- protected String getOceanId() {
- return ProtectedIdsCommon.COMMON_OCEAN_ATLANTIC;
- }
-}
=====================================
core/persistence/test/src/test/java/fr/ird/observe/persistence/avdth/data/AvdthDataBuilderAllYearTestSupport.java deleted
=====================================
@@ -1,56 +0,0 @@
-package fr.ird.observe.persistence.avdth.data;
-
-/*-
- * #%L
- * ObServe Core :: Persistence :: Test
- * %%
- * Copyright (C) 2008 - 2023 IRD, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ird.observe.persistence.avdth.AvdthFixtures;
-
-import java.nio.file.Path;
-import java.util.List;
-
-/**
- * Created on 28/10/2021.
- *
- * @author Tony Chemit - dev(a)tchemit.fr
- * @since 9.0.0
- */
-public abstract class AvdthDataBuilderAllYearTestSupport extends AvdthDataBuilderTestSupport {
-
- public static List<String> getDatabases(Path path) {
- return allDatabases(path).subList(0, 1);
- }
-
- @Override
- protected boolean doInlineImport() {
- return false;
- }
-
- @Override
- protected boolean forcePrepare() {
- return AvdthFixtures.FORCE_PREPARE;
- }
-
- @Override
- protected boolean forceImport() {
- return false;
- }
-}
=====================================
core/persistence/test/src/test/java/fr/ird/observe/persistence/avdth/data/AvdthIndianDataBuilderAllTest.java deleted
=====================================
@@ -1,56 +0,0 @@
-package fr.ird.observe.persistence.avdth.data;
-
-/*-
- * #%L
- * ObServe Core :: Persistence :: Test
- * %%
- * Copyright (C) 2008 - 2023 IRD, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ird.observe.dto.ProtectedIdsCommon;
-import org.junit.Ignore;
-import org.junit.runners.Parameterized;
-
-import java.nio.file.Path;
-
-/**
- * Created on 24/05/2021.
- *
- * @author Tony Chemit - dev(a)tchemit.fr
- * @since 9.0.0
- */
-@Ignore
-public class AvdthIndianDataBuilderAllTest extends AvdthDataBuilderAllYearTestSupport {
-
- public static final Path ROOT_PATH = getPath("OI").resolve("all");
-
- @Parameterized.Parameters(name = "{index}: {0}")
- public static Iterable<?> data() {
- return getDatabases(ROOT_PATH);
- }
-
- @Override
- protected Path getRootPath() {
- return ROOT_PATH;
- }
-
- @Override
- protected String getOceanId() {
- return ProtectedIdsCommon.COMMON_OCEAN_INDIAN;
- }
-}
=====================================
core/persistence/test/src/test/java/fr/ird/observe/persistence/avdth/data/AvdthIndianDataBuilderByYearTest.java deleted
=====================================
@@ -1,54 +0,0 @@
-package fr.ird.observe.persistence.avdth.data;
-
-/*-
- * #%L
- * ObServe Core :: Persistence :: Test
- * %%
- * Copyright (C) 2008 - 2023 IRD, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ird.observe.dto.ProtectedIdsCommon;
-import org.junit.runners.Parameterized;
-
-import java.nio.file.Path;
-
-/**
- * Created on 24/05/2021.
- *
- * @author Tony Chemit - dev(a)tchemit.fr
- * @since 9.0.0
- */
-public class AvdthIndianDataBuilderByYearTest extends AvdthDataBuilderByYearTestSupport {
-
- public static final Path ROOT_PATH = getPath("OI");
-
- @Parameterized.Parameters(name = "{index}: {0}")
- public static Iterable<?> data() {
- return getDatabases(ROOT_PATH);
- }
-
- @Override
- protected Path getRootPath() {
- return ROOT_PATH;
- }
-
- @Override
- protected String getOceanId() {
- return ProtectedIdsCommon.COMMON_OCEAN_INDIAN;
- }
-}
=====================================
toolkit/persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcHelper.java
=====================================
@@ -34,6 +34,8 @@ import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Objects;
/**
@@ -116,17 +118,38 @@ public abstract class JdbcHelper {
}
public String runSelectOnString(String sql) throws SQLException {
- return runSelect(sql, resultSet -> resultSet.next() ? resultSet.getString(1) : null);
+ return runSelect(sql, resultSet -> resultSet.getString(1));
}
public <T> T runSelect(String sql, SqlFunction<ResultSet, T> function) throws SQLException {
try (Connection connection = openConnection()) {
try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
try (ResultSet resultSet = preparedStatement.executeQuery()) {
- return function.apply(resultSet);
+ if (resultSet.next()) {
+ return function.apply(resultSet);
+ }
+ return null;
+ }
+ }
+ }
+ }
+
+ public <T> List<T> runMultipleSelect(String sql, SqlFunction<ResultSet, T> function) throws SQLException {
+ List<T> result = new LinkedList<>();
+ try (Connection connection = openConnection()) {
+ try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
+ try (ResultSet resultSet = preparedStatement.executeQuery()) {
+ while (resultSet.next()) {
+
+ T row = function.apply(resultSet);
+ if (row != null) {
+ result.add(row);
+ }
+ }
}
}
}
+ return result;
}
public <T> T runOnMetadata(SqlFunction<DatabaseMetaData, T> function) throws SQLException {
=====================================
toolkit/persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcSecurityHelper.java
=====================================
@@ -172,16 +172,16 @@ public interface JdbcSecurityHelper {
try {
return getDefaultVersion();
} catch (Exception e) {
- // try on legacy
+ // try on legacy (migration may not been applied)
return getLegacyVersion();
}
}
private Version getLegacyVersion() {
- return MigrationServiceSqlHelper.LEGACY.getVersion(jdbcHelper()).map(TMSVersion::toVersion).orElse(Version.VZERO);
+ return MigrationServiceSqlHelper.LEGACY.getVersion(jdbcHelper()).map(TMSVersion::getVersion).orElse(Version.VZERO);
}
private Version getDefaultVersion() {
- return MigrationServiceSqlHelper.DEFAULT.getVersion(jdbcHelper()).map(TMSVersion::toVersion).orElse(Version.VZERO);
+ return MigrationServiceSqlHelper.DEFAULT.getVersion(jdbcHelper()).map(TMSVersion::getVersion).orElse(Version.VZERO);
}
}
=====================================
toolkit/persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcSecurityHelperH2.java
=====================================
@@ -31,7 +31,6 @@ import org.nuiton.topia.persistence.security.SecurityScriptHelper;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
@@ -162,24 +161,21 @@ public class JdbcSecurityHelperH2 implements JdbcSecurityHelper {
Set<String> safeExtraTables = extraTables.stream().map(String::toLowerCase).collect(Collectors.toSet());
try {
- return jdbcHelper.runSelect("SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'TABLE'", resultSet -> {
- List<Pair<String, String>> result = new ArrayList<>();
- while (resultSet.next()) {
- String schemaName = resultSet.getString(1);
- String tableName = resultSet.getString(2);
- if (!safeExtraTables.contains(tableName.toLowerCase())) {
- // if (POSTGIS_TABLES.contains(tableName)) {
- // continue;
- // }
- if (schemaName == null || !safeSchemas.contains(schemaName.toLowerCase())) {
- continue;
- }
+ List<Pair<String, String>> pairs = jdbcHelper.runMultipleSelect("SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'TABLE'", resultSet -> {
+ String schemaName = resultSet.getString(1);
+ String tableName = resultSet.getString(2);
+ if (!safeExtraTables.contains(tableName.toLowerCase())) {
+ // if (POSTGIS_TABLES.contains(tableName)) {
+ // continue;
+ // }
+ if (schemaName == null || !safeSchemas.contains(schemaName.toLowerCase())) {
+ return null;
}
- result.add(Pair.of(schemaName, tableName));
}
- Collections.sort(result);
- return result;
+ return Pair.of(schemaName, tableName);
});
+ Collections.sort(pairs);
+ return pairs;
} catch (Exception e) {
throw new TopiaException(e);
}
@@ -188,14 +184,8 @@ public class JdbcSecurityHelperH2 implements JdbcSecurityHelper {
@Override
public Set<String> getRoles() {
try {
- return jdbcHelper.runSelect("SELECT name FROM INFORMATION_SCHEMA.USERS;", resultSet -> {
- Set<String> users = new LinkedHashSet<>();
- while (resultSet.next()) {
- String name = resultSet.getString(1);
- users.add(name);
- }
- return users;
- });
+ List<String> roles = jdbcHelper.runMultipleSelect("SELECT name FROM INFORMATION_SCHEMA.USERS;", resultSet -> resultSet.getString(1));
+ return Set.copyOf(roles);
} catch (SQLException e) {
throw new TopiaException(e);
}
@@ -204,7 +194,7 @@ public class JdbcSecurityHelperH2 implements JdbcSecurityHelper {
@Override
public boolean isOwner() {
try {
- return jdbcHelper.runSelect("SELECT t.* FROM INFORMATION_SCHEMA.SCHEMATA t WHERE SCHEMA_NAME = 'PUBLIC' AND SCHEMA_OWNER = CURRENT_USER", ResultSet::next);
+ return jdbcHelper.runSelect("SELECT t.* FROM INFORMATION_SCHEMA.SCHEMATA t WHERE SCHEMA_NAME = 'PUBLIC' AND SCHEMA_OWNER = CURRENT_USER", r-> true);
} catch (SQLException e) {
throw new TopiaException(e);
}
@@ -213,7 +203,7 @@ public class JdbcSecurityHelperH2 implements JdbcSecurityHelper {
@Override
public boolean isSuperUser() {
try {
- return jdbcHelper.runSelect("SELECT admin FROM INFORMATION_SCHEMA.USERS WHERE name = CURRENT_USER", resultSet -> resultSet.next() && resultSet.getBoolean(1));
+ return jdbcHelper.runSelect("SELECT admin FROM INFORMATION_SCHEMA.USERS WHERE name = CURRENT_USER", resultSet -> resultSet.getBoolean(1));
} catch (SQLException e) {
throw new TopiaException(e);
}
=====================================
toolkit/persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcSecurityHelperPostgres.java
=====================================
@@ -253,7 +253,7 @@ public class JdbcSecurityHelperPostgres implements JdbcSecurityHelper {
@Override
public boolean isOwner() {
try {
- return jdbcHelper.runSelect("SELECT pg_catalog.pg_get_userbyid(d.datdba) FROM pg_catalog.pg_database d WHERE d.datname = (SELECT current_database())", resultSet -> resultSet.next() && Objects.equals(jdbcHelper.getJdbcConnectionUser(), resultSet.getString(1)));
+ return jdbcHelper.runSelect("SELECT pg_catalog.pg_get_userbyid(d.datdba) FROM pg_catalog.pg_database d WHERE d.datname = (SELECT current_database())", resultSet -> Objects.equals(jdbcHelper.getJdbcConnectionUser(), resultSet.getString(1)));
} catch (SQLException e) {
throw new TopiaException(e);
}
@@ -262,7 +262,7 @@ public class JdbcSecurityHelperPostgres implements JdbcSecurityHelper {
@Override
public boolean isSuperUser() {
try {
- return jdbcHelper.runSelect("SELECT usesuper FROM pg_user WHERE usename = CURRENT_USER", resultSet -> resultSet.next() && resultSet.getBoolean(1));
+ return jdbcHelper.runSelect("SELECT usesuper FROM pg_user WHERE usename = CURRENT_USER", resultSet -> resultSet.getBoolean(1));
} catch (SQLException e) {
throw new TopiaException(e);
}
@@ -275,14 +275,8 @@ public class JdbcSecurityHelperPostgres implements JdbcSecurityHelper {
" FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)" +
" WHERE ns.nspname = 'public' AND p.proname ILIKE '%s%%';", functionPattern);
try {
- return jdbcHelper.runSelect(sql, resultSet -> {
- Set<String> result = new LinkedHashSet<>();
- while (resultSet.next()) {
- String functionPrototype = resultSet.getString(1);
- result.add(functionPrototype);
- }
- return result;
- });
+ List<String> result = jdbcHelper.runMultipleSelect(sql, resultSet -> resultSet.getString(1));
+ return Set.copyOf(result);
} catch (SQLException e) {
throw new TopiaException(e);
}
=====================================
toolkit/persistence/src/main/java/org/nuiton/topia/service/migration/TopiaMigrationServiceContext.java
=====================================
@@ -38,6 +38,9 @@ import org.nuiton.topia.service.migration.version.TMSVersion;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
import java.util.Optional;
/**
@@ -56,11 +59,10 @@ public class TopiaMigrationServiceContext {
* Service configuration.
*/
protected final TopiaMigrationServiceConfiguration configuration;
- protected final MigrationServiceSqlHelper sqlHelper;
/**
- * Jdbc helper used to perform some sql code.
+ * Migration sql helper (could be legacy or default).
*/
- private final JdbcHelper jdbcHelper;
+ protected final MigrationServiceSqlHelper sqlHelper;
/**
* Available migration resources found in class-path.
*/
@@ -74,17 +76,25 @@ public class TopiaMigrationServiceContext {
*/
protected final boolean dbNotVersioned;
/**
- * Is legacy TMSVersion table exists?
+ * Is legacy migration table exists? (only used with default mode)
*/
protected final boolean legacyVersionTableExist;
/**
- * Is TMSVersion schema exists?
+ * Is default migration schema exists?
+ */
+ protected final boolean versionSchemaExist;
+ /**
+ * Is default migration table exists?
*/
- protected boolean versionSchemaExist;
+ protected final boolean versionTableExist;
/**
- * Is TMSVersion table exists?
+ * Can we apply migration versions?
*/
- protected boolean versionTableExist;
+ protected final boolean canApplyMigrationVersions;
+ /**
+ * Migration versions to apply.
+ */
+ protected final List<Version> versionsToApply;
/**
* Current database version.
*/
@@ -114,10 +124,11 @@ public class TopiaMigrationServiceContext {
try {
versionTableExist = sqlHelper.isTableExist(jdbcHelper);
if (versionTableExist) {
+ log.info("Detected standard migration table {}.", sqlHelper.gav());
versionSchemaExist = true;
Optional<TMSVersion> tmsVersion = sqlHelper.getVersion(jdbcHelper);
if (tmsVersion.isPresent()) {
- v = tmsVersion.get().toVersion();
+ v = tmsVersion.get().getVersion();
}
if (v == null) {
log.warn(String.format("Version not found on table %s", sqlHelper.gav()));
@@ -126,9 +137,10 @@ public class TopiaMigrationServiceContext {
versionSchemaExist = sqlHelper.isSchemaExist(jdbcHelper);
legacyVersionTableExist = legacySqlHelper.isTableExist(jdbcHelper);
if (legacyVersionTableExist) {
+ log.info("Detected legacy migration table {}.", legacySqlHelper.gav());
Optional<TMSVersion> tmsVersion = legacySqlHelper.getVersion(jdbcHelper);
if (tmsVersion.isPresent()) {
- v = tmsVersion.get().toVersion();
+ v = tmsVersion.get().getVersion();
}
if (v == null) {
log.warn(String.format("Version not found on legacy table %s", legacySqlHelper.gav()));
@@ -137,6 +149,7 @@ public class TopiaMigrationServiceContext {
}
} finally {
if (v == null) {
+ //FIXME Is this can really happen?
// la base dans ce cas n'est pas versionee.
// On dit que la version de la base est 0
// et les schema de cette version 0 doivent
@@ -151,7 +164,6 @@ public class TopiaMigrationServiceContext {
}
return new TopiaMigrationServiceContext(configuration,
sqlHelper,
- jdbcHelper,
legacyVersionTableExist,
versionSchemaExist,
versionTableExist,
@@ -175,9 +187,10 @@ public class TopiaMigrationServiceContext {
try {
versionTableExist = sqlHelper.isTableExist(jdbcHelper);
if (versionTableExist) {
+ log.info("Detected legacy migration table {}.", sqlHelper.gav());
Optional<TMSVersion> tmsVersion = sqlHelper.getVersion(jdbcHelper);
if (tmsVersion.isPresent()) {
- v = tmsVersion.get().toVersion();
+ v = tmsVersion.get().getVersion();
}
if (v == null) {
log.warn(String.format("Version not found on table %s", sqlHelper.gav()));
@@ -199,7 +212,6 @@ public class TopiaMigrationServiceContext {
}
return new TopiaMigrationServiceContext(configuration,
sqlHelper,
- jdbcHelper,
false,
true,
versionTableExist,
@@ -211,15 +223,14 @@ public class TopiaMigrationServiceContext {
protected TopiaMigrationServiceContext(TopiaMigrationServiceConfiguration configuration,
MigrationServiceSqlHelper sqlHelper,
- JdbcHelper jdbcHelper,
- boolean legacyVersionTableExist, boolean versionSchemaExist,
+ boolean legacyVersionTableExist,
+ boolean versionSchemaExist,
boolean versionTableExist,
boolean dbNotVersioned,
Version dbVersion,
MigrationVersionResourceProvider resources) {
this.configuration = configuration;
this.sqlHelper = sqlHelper;
- this.jdbcHelper = jdbcHelper;
this.versionSchemaExist = versionSchemaExist;
this.versionTableExist = versionTableExist;
this.dbNotVersioned = dbNotVersioned;
@@ -231,26 +242,24 @@ public class TopiaMigrationServiceContext {
} catch (IOException e) {
throw new IllegalStateException("Can't create scripts path", e);
}
- }
- public Path getScriptPath() {
- return scriptPath;
- }
+ List<Version> allVersions = getResources().getAvailableVersions();
+ log.info(String.format("Detected available versions: %1$s", allVersions));
- public boolean isVersionSchemaExist() {
- return versionSchemaExist;
- }
+ versionsToApply = getResources().getVersionsAfter(dbVersion);
+ log.info(String.format("Detected versions to apply: %1$s", versionsToApply));
- public boolean isVersionTableExist() {
- return versionTableExist;
- }
+ Optional<TopiaMigrationServiceAskUserToMigrate> askUserToMigrate = Optional.ofNullable(configuration.getCallback());
- public boolean isLegacyVersionTableExist() {
- return legacyVersionTableExist;
+ // ask to perform the migration
+ canApplyMigrationVersions = askUserToMigrate.map(c -> c.canIMigrate(getDbVersion(), versionsToApply)).orElse(true);
+ if (!canApplyMigrationVersions) {
+ log.warn("Detected that we can not migrate versions (maybe version of database is too old?).");
+ }
}
- public boolean isDbNotVersioned() {
- return dbNotVersioned;
+ public Path getScriptPath() {
+ return scriptPath;
}
public Version getModelVersion() {
@@ -265,34 +274,65 @@ public class TopiaMigrationServiceContext {
return resources;
}
- public void createSchemaIfNotExist() {
+ public boolean adaptVersionTable(TopiaSqlSupport sqlSupport) {
+
+ Version modelVersion = getModelVersion();
+ boolean dbVersionEqualsModelVersion = Objects.equals(dbVersion, modelVersion);
+
if (!versionSchemaExist) {
- sqlHelper.createSchema(jdbcHelper);
- versionSchemaExist = true;
+ log.info("Create default migration schema.");
+ sqlHelper.createSchema(sqlSupport);
}
- }
-
- public void createTableIfNotExist() {
if (!versionTableExist) {
- sqlHelper.createTable(jdbcHelper);
- versionTableExist = true;
+ log.info("Create default migration table.");
+ sqlHelper.createTable(sqlSupport);
+ } else {
+ if (dbVersionEqualsModelVersion) {
+ log.info("Database is up to date, no migration needed.");
+ return false;
+ }
+ }
+ if (legacyVersionTableExist) {
+ log.info("Drop legacy migration table.");
+ MigrationServiceSqlHelper.LEGACY.dropTable(sqlSupport);
+ if (dbVersionEqualsModelVersion) {
+ log.info("Database is up to date (version: {}), but was coming from legacy migration table, fill new migration table.", modelVersion);
+ saveVersion(sqlSupport, modelVersion, null);
+ return false;
+ }
+ log.info("Fill version table {} from legacy table.", dbVersion);
+ saveVersion(sqlSupport, dbVersion, null);
+ } else if (dbNotVersioned) {
+ log.info("Database is empty, no migration needed, set ");
+ saveVersion(sqlSupport, modelVersion, new Date());
+ return false;
}
+ // In all other cases, we can try to perform migration
+ return true;
}
- protected void saveModelVersionAndCommit() {
- Version version = getModelVersion();
- log.info(String.format("[ Version %s ] Saving persistence model database version and commit.", version));
- sqlHelper.saveAndCommit(jdbcHelper, version.getVersion());
- dbVersion = version;
- }
+ public List<Version> getVersionsToApply() {
+
+ if (versionsToApply.isEmpty()) {
+ log.info("No version to apply, no migration needed.");
+ // No migration, so nothing to save
+// context.saveModelVersion();
+ return null;
+ }
+
+ // ask to perform the migration
- public Optional<TopiaMigrationServiceAskUserToMigrate> getAskUserToMigrate() {
- return Optional.ofNullable(configuration.getCallback());
+ if (!canApplyMigrationVersions) {
+ // user cancel migration
+ log.warn("Migration was cancelled by migration callback (maybe version of database is too old?).");
+ return null;
+ }
+ return versionsToApply;
}
- protected void saveVersion(TopiaSqlSupport sqlSupport, Version version) {
- log.info(String.format("[ Version %s ] Saving new database version.", version));
- sqlHelper.save(sqlSupport, version.getVersion());
+ protected void saveVersion(TopiaSqlSupport sqlSupport, Version version, Date date) {
+ log.info(String.format("[ Version %s ] Saving new database version (date: %s).", version, date));
+ sqlHelper.save(sqlSupport, version.getVersion(), date);
dbVersion = version;
}
@@ -308,8 +348,4 @@ public class TopiaMigrationServiceContext {
return new MigrationVersionResourceExecutor(migrationVersionResource, sqlSupport, configuration.getClassifier(), getScriptPath(), migrationVersionResource.getScriptVariables());
}
- public void dropLegacyTable() {
- MigrationServiceSqlHelper.LEGACY.dropTable(jdbcHelper);
- }
-
}
=====================================
toolkit/persistence/src/main/java/org/nuiton/topia/service/migration/TopiaMigrationServiceImpl.java
=====================================
@@ -34,10 +34,10 @@ import org.nuiton.topia.service.migration.resources.MigrationVersionResource;
import org.nuiton.topia.service.migration.resources.MigrationVersionResourceExecutor;
import java.io.IOException;
+import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
-import java.util.Optional;
/**
* Topia migration service default implementation.
@@ -68,82 +68,38 @@ public class TopiaMigrationServiceImpl implements TopiaMigrationService {
@Override
public void runSchemaMigration() throws TopiaMigrationServiceException {
+ log.info("Migration - Prepare internal states.");
TopiaMigrationServiceContext context = TopiaMigrationServiceContext.create(configuration);
- Version modelVersion = context.getModelVersion();
- Version dbVersion = context.getDbVersion();
- boolean dbNotVersioned = context.isDbNotVersioned();
- boolean legacyVersionTableExist = context.isLegacyVersionTableExist();
- boolean versionSchemaExist = context.isVersionSchemaExist();
- boolean versionTableExist = context.isVersionTableExist();
-
- log.info(String.format("Starting Topia Migration Service - Model version : %s, Database version : %s", modelVersion, dbVersion));
-
- if (!versionSchemaExist) {
- log.info("Create migration schema.");
- context.createSchemaIfNotExist();
- }
- if (!versionTableExist) {
- log.info("Create migration table.");
- context.createTableIfNotExist();
- }
- if (legacyVersionTableExist) {
- log.info("Drop legacy migration table.");
- context.dropLegacyTable();
- if (dbVersion.equals(modelVersion)) {
- log.info("Database is up to date, but was coming from legacy migration table, fill new migration table.");
- context.saveModelVersionAndCommit();
+ log.info("Migration - Prepare internal states done.");
+
+ try (TopiaPersistenceContext persistenceContext = context.newPersistenceContext()) {
+ log.info("Migration - Adapting migration table.");
+ boolean canContinue = adaptVersionTable(persistenceContext, context);
+ log.info("Migration - Adapting migration table done.");
+ if (!canContinue) {
+ log.info(String.format("Migration - End - db version: %s (nothing more to do).", context.getDbVersion()));
+ return;
+ }
+ log.info("Migration - Getting migration versions to apply.");
+ List<Version> versionsToApply = context.getVersionsToApply();
+ log.info("Migration - Getting migration versions to apply done.");
+ if (versionsToApply == null) {
+ log.info(String.format("Migration - End - db version: %s (nothing more to do).", context.getDbVersion()));
return;
}
- }
-
- if (versionTableExist && dbVersion.equals(modelVersion)) {
- log.info("Database is up to date, no migration needed.");
- return;
- }
-
- if (versionTableExist && dbNotVersioned) {
- log.info("Database is empty, no migration needed.");
- context.saveModelVersionAndCommit();
- return;
- }
-
- List<Version> allVersions = context.getResources().getAvailableVersions();
- log.info(String.format("Available versions: %1$s", allVersions));
-
- List<Version> versionsToApply = context.getResources().getVersionsAfter(dbVersion);
-
- if (versionsToApply.isEmpty()) {
- //TODO This case should never happen?
- log.info("No version to apply, no migration needed.");
- context.saveModelVersionAndCommit();
- return;
- }
-
- log.info(String.format("Versions to apply: %1$s", versionsToApply));
-
- Optional<TopiaMigrationServiceAskUserToMigrate> askUserToMigrate = context.getAskUserToMigrate();
-
- // ask to perform the migration
- boolean performMigration = askUserToMigrate.map(c -> c.canIMigrate(dbVersion, versionsToApply)).orElse(true);
-
- log.debug("Handler choose : " + performMigration);
- if (!performMigration) {
- // user cancel migration
- return;
- }
+ log.info(String.format("Migration - Will apply versions: %1$s.", versionsToApply));
- long statementCount = 0;
- try (TopiaPersistenceContext persistenceContext = context.newPersistenceContext()) {
+ long statementCount = 0;
for (Version version : versionsToApply) {
long t0 = TimeLog.getTime();
long versionCount = migrateVersion(persistenceContext, version, context);
statementCount += versionCount;
TIME_LOG.log(t0, "migrationVersion", version.toString() + " - " + versionCount + " sql statements");
}
+ log.info(String.format("Migration - End - db version: %s - consume %d sql statement(s)", context.getDbVersion(), statementCount));
}
- log.info(String.format("Ends migration - db version: %s - consume %d sql statement(s)", context.getDbVersion(), statementCount));
}
@Override
@@ -151,6 +107,17 @@ public class TopiaMigrationServiceImpl implements TopiaMigrationService {
configuration = null;
}
+ protected boolean adaptVersionTable(TopiaPersistenceContext persistenceContext, TopiaMigrationServiceContext context) {
+ try {
+ boolean canContinue = context.adaptVersionTable(persistenceContext.getSqlSupport());
+ persistenceContext.commit();
+ return canContinue;
+ } catch (Exception e) {
+ persistenceContext.rollback();
+ throw new TopiaMigrationServiceException("Exception during adapting migration table", e);
+ }
+ }
+
protected long migrateVersion(TopiaPersistenceContext persistenceContext, Version version, TopiaMigrationServiceContext context) {
MigrationVersionResource resource = context.getResource(version);
@@ -175,14 +142,15 @@ public class TopiaMigrationServiceImpl implements TopiaMigrationService {
}
}
// here we use the sqlSupport to save version, to stay on the very same transaction
- context.saveVersion(sqlSupport, version);
+ context.saveVersion(sqlSupport, version, new Date());
+ // do commit, this migration version is now completed
+ persistenceContext.commit();
} catch (Exception e) {
// Exception, rollback transaction
persistenceContext.rollback();
throw new TopiaMigrationServiceException("Exception during schema migration on version: " + version, e);
}
- persistenceContext.commit();
return outStatementCount;
}
=====================================
toolkit/persistence/src/main/java/org/nuiton/topia/service/migration/version/MigrationServiceSqlHelper.java
=====================================
@@ -27,6 +27,10 @@ import org.nuiton.topia.persistence.jdbc.JdbcHelper;
import org.nuiton.topia.persistence.support.TopiaSqlSupport;
import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
import java.util.Optional;
/**
@@ -38,12 +42,8 @@ import java.util.Optional;
* @since 9.0.7
*/
public interface MigrationServiceSqlHelper {
- String GET_VERSION_TABLE_STATEMENT = "SELECT version FROM %s;";
- String CREATE_VERSION_SCHEMA_STATEMENT = "CREATE SCHEMA %s;";
- String CREATE_VERSION_TABLE_STATEMENT = "CREATE TABLE %s(version VARCHAR(255) NOT NULL, PRIMARY KEY (version));";
- String DELETE_VERSION_TABLE_STATEMENT = "DELETE FROM %s;";
+ String CREATE_VERSION_SCHEMA_STATEMENT = "CREATE SCHEMA IF NOT EXISTS %s;";
String DROP_VERSION_TABLE_STATEMENT = "DROP TABLE %s;";
- String FILL_VERSION_TABLE_STATEMENT = "INSERT INTO %s(version) VALUES('%s');";
/**
* Legacy layout.
@@ -51,6 +51,10 @@ public interface MigrationServiceSqlHelper {
MigrationServiceSqlHelper LEGACY = new MigrationServiceSqlHelper() {
public static final String SCHEMA_NAME = "public";
public static final String TABLE_NAME = "tms_version";
+ public static final String CREATE_VERSION_TABLE_STATEMENT = "CREATE TABLE %s(version VARCHAR(255) NOT NULL, PRIMARY KEY(version));";
+ public static final String FILL_VERSION_TABLE_STATEMENT = "INSERT INTO %s(version) VALUES('%s');";
+ public static final String GET_VERSION_TABLE_STATEMENT = "SELECT version FROM %s;";
+ public static final String DELETE_VERSION_TABLE_STATEMENT = "DELETE FROM %s;";
@Override
public String schemaName() {
@@ -61,13 +65,46 @@ public interface MigrationServiceSqlHelper {
public String tableName() {
return TABLE_NAME;
}
+
+ @Override
+ public String createTableSql() {
+ return String.format(CREATE_VERSION_TABLE_STATEMENT, gav());
+ }
+
+ @Override
+ public String getVersionSql() {
+ return String.format(GET_VERSION_TABLE_STATEMENT, gav());
+ }
+
+ @Override
+ public Optional<TMSVersion> getVersion(JdbcHelper jdbcHelper) {
+ try {
+ try {
+ TMSVersion result = jdbcHelper.runSelect(getVersionSql(), r -> new TMSVersion(r.getString(1), null));
+ return Optional.ofNullable(result);
+ } catch (Exception e) {
+ throw new TopiaException("Could not obtain version", e);
+ }
+ } catch (Exception e) {
+ throw new TopiaException("Could not obtain version", e);
+ }
+ }
+
+ @Override
+ public String saveTableSql(String version, Date date) {
+ return String.format(DELETE_VERSION_TABLE_STATEMENT, gav()) + String.format(FILL_VERSION_TABLE_STATEMENT, gav(), version);
+ }
};
/**
* Default layout.
*/
MigrationServiceSqlHelper DEFAULT = new MigrationServiceSqlHelper() {
public static final String SCHEMA_NAME = "common";
+ //FIXME Find a better name
public static final String TABLE_NAME = "database_version";
+ public static final String CREATE_VERSION_TABLE_STATEMENT = "CREATE TABLE %s(version VARCHAR(255) NOT NULL, date TIMESTAMP, PRIMARY KEY(version));";
+ public static final String FILL_VERSION_TABLE_STATEMENT = "INSERT INTO %s(version, date) VALUES('%s', %s);";
+ public static final String GET_VERSION_TABLE_STATEMENT = "SELECT version, date FROM %s;";
@Override
public String schemaName() {
@@ -78,6 +115,35 @@ public interface MigrationServiceSqlHelper {
public String tableName() {
return TABLE_NAME;
}
+
+ @Override
+ public String createTableSql() {
+ return String.format(CREATE_VERSION_TABLE_STATEMENT, gav());
+ }
+
+ @Override
+ public String getVersionSql() {
+ return String.format(GET_VERSION_TABLE_STATEMENT, gav());
+ }
+
+ @Override
+ public Optional<TMSVersion> getVersion(JdbcHelper jdbcHelper) {
+ try {
+ List<TMSVersion> result = jdbcHelper.runMultipleSelect(getVersionSql(), r -> new TMSVersion(r.getString(1), r.getTimestamp(2)));
+ if (result.isEmpty()) {
+ return Optional.empty();
+ }
+ result.sort(Comparator.comparing(TMSVersion::getVersion).reversed());
+ return Optional.of(result.get(0));
+ } catch (Exception e) {
+ throw new TopiaException("Could not obtain version", e);
+ }
+ }
+
+ @Override
+ public String saveTableSql(String version, Date date) {
+ return String.format(FILL_VERSION_TABLE_STATEMENT, gav(), version, date == null ? "NULL" : ("'" + new Timestamp(date.getTime()) + "'::timestamp"));
+ }
};
/**
@@ -110,59 +176,22 @@ public interface MigrationServiceSqlHelper {
return schemaName() + "." + tableName();
}
- default Optional<TMSVersion> getVersion(JdbcHelper jdbcHelper) {
- try {
- String version = jdbcHelper.runSelectOnString(getVersionSql());
- return Optional.ofNullable(version == null ? null : new TMSVersion(version));
- } catch (Exception e) {
- throw new TopiaException("Could not obtain version", e);
- }
- }
-
- default String getVersionSql() {
- return String.format(GET_VERSION_TABLE_STATEMENT, gav());
- }
+ Optional<TMSVersion> getVersion(JdbcHelper jdbcHelper);
- default String createSchemaSql() {
- return String.format(CREATE_VERSION_SCHEMA_STATEMENT, gav());
- }
+ String getVersionSql();
- default String createTableSql() {
- return String.format(CREATE_VERSION_TABLE_STATEMENT, gav());
- }
+ String createTableSql();
- default String deleteTableSql() {
- return String.format(DELETE_VERSION_TABLE_STATEMENT, gav());
- }
+ String saveTableSql(String version, Date date);
- default String fillVersionSql(String version) {
- return String.format(FILL_VERSION_TABLE_STATEMENT, gav(), version);
+ default String createSchemaSql() {
+ return String.format(CREATE_VERSION_SCHEMA_STATEMENT, schemaName());
}
default String dropTableSql() {
return String.format(DROP_VERSION_TABLE_STATEMENT, gav());
}
- default String saveTableSql(String version) {
- return deleteTableSql() + fillVersionSql(version);
- }
-
- default void saveAndCommit(JdbcHelper jdbcHelper, String version) {
- try {
- jdbcHelper.runUpdate(saveTableSql(version) + "commit;");
- } catch (Exception e) {
- throw new TopiaException(String.format("Could not save version %s", version), e);
- }
- }
-
- default void save(TopiaSqlSupport sqlSupport, String version) {
- try {
- sqlSupport.executeSql(saveTableSql(version));
- } catch (Exception e) {
- throw new TopiaException(String.format("Could not save version %s", version), e);
- }
- }
-
default boolean isTableExist(JdbcHelper jdbcHelper) {
try {
return jdbcHelper.isTableExist(schemaName(), tableName());
@@ -179,27 +208,35 @@ public interface MigrationServiceSqlHelper {
}
}
- default void createSchema(JdbcHelper jdbcHelper) {
+ default void createSchema(TopiaSqlSupport sqlSupport) {
try {
- jdbcHelper.runUpdate(createSchemaSql());
+ sqlSupport.executeSql(createSchemaSql());
} catch (Exception e) {
- throw new TopiaException(String.format("Could not create version table %s", gav()), e);
+ throw new TopiaException(String.format("Could not create version schema %s", gav()), e);
}
}
- default void createTable(JdbcHelper jdbcHelper) {
+ default void createTable(TopiaSqlSupport sqlSupport) {
try {
- jdbcHelper.runUpdate(createTableSql());
+ sqlSupport.executeSql(createTableSql());
} catch (Exception e) {
throw new TopiaException(String.format("Could not create version table %s", gav()), e);
}
}
- default void dropTable(JdbcHelper jdbcHelper) {
+ default void dropTable(TopiaSqlSupport sqlSupport) {
try {
- jdbcHelper.runUpdate(dropTableSql());
+ sqlSupport.executeSql(dropTableSql());
} catch (Exception e) {
throw new TopiaException(String.format("Could not drop version table %s", gav()), e);
}
}
+
+ default void save(TopiaSqlSupport sqlSupport, String version, Date date) {
+ try {
+ sqlSupport.executeSql(saveTableSql(version, date));
+ } catch (Exception e) {
+ throw new TopiaException(String.format("Could not save version %s", version), e);
+ }
+ }
}
=====================================
toolkit/persistence/src/main/java/org/nuiton/topia/service/migration/version/TMSVersion.java
=====================================
@@ -25,6 +25,7 @@ package org.nuiton.topia.service.migration.version;
import io.ultreia.java4all.util.Version;
import java.io.Serializable;
+import java.util.Date;
/**
* @author Tony Chemit - dev(a)tchemit.fr
@@ -33,27 +34,23 @@ public class TMSVersion implements Serializable {
private static final long serialVersionUID = 1L;
- private String version;
+ private final Version version;
+ private final Date date;
- public TMSVersion() {
- }
-
- public TMSVersion(String version) {
+ public TMSVersion(String version, Date date) {
if (version == null || version.isEmpty()) {
throw new IllegalArgumentException("version parameter can not be null nor empty.");
}
- this.version = version;
+ this.version = Version.valueOf(version);
+ this.date = date;
}
- public String getVersion() {
+ public Version getVersion() {
return version;
}
- public void setVersion(String version) {
- this.version = version;
+ public Date getDate() {
+ return date;
}
- public Version toVersion() {
- return version == null || version.isEmpty() ? null : Version.valueOf(version);
- }
}
=====================================
toolkit/persistence/src/main/java/org/nuiton/topia/service/sql/internal/consumer/AddVersionTableConsumer.java
=====================================
@@ -29,6 +29,8 @@ import org.nuiton.topia.service.sql.internal.SqlRequestConsumer;
import org.nuiton.topia.service.sql.internal.SqlRequestSetConsumerContext;
import org.nuiton.topia.service.sql.internal.request.AddVersionTableRequest;
+import java.util.Date;
+
/**
* Created on 21/02/2021.
*
@@ -42,7 +44,7 @@ public class AddVersionTableConsumer implements SqlRequestConsumer<AddVersionTab
try {
SqlScriptWriter writer = context.getWriter();
writer.writeSql(MigrationServiceSqlHelper.CURRENT.createTableSql());
- writer.writeSql(MigrationServiceSqlHelper.CURRENT.fillVersionSql(request.getDbVersion().getVersion()));
+ writer.writeSql(MigrationServiceSqlHelper.CURRENT.saveTableSql(request.getDbVersion().getVersion(), new Date()));
} catch (Exception e) {
throw new TopiaException(String.format("Could not add version table for reason: %s", e.getMessage()), e);
}
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/0bdda0a21a3354e3e87cb010…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/0bdda0a21a3354e3e87cb010…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Un marée sur laquelle l'assistant d'appariement bloque - Closes #2667
by Tony CHEMIT (@tchemit) 04 Apr '23
by Tony CHEMIT (@tchemit) 04 Apr '23
04 Apr '23
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
6fb73436 by Tony Chemit at 2023-04-04T09:30:25+02:00
Un marée sur laquelle l'assistant d'appariement bloque - Closes #2667
- - - - -
2 changed files:
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/logbook/ActivityUIModelStates.java
- core/api/dto/src/main/java/fr/ird/observe/dto/data/pairing/ActivityPairingResultItemSupport.java
Changes:
=====================================
client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/logbook/ActivityUIModelStates.java
=====================================
@@ -215,7 +215,10 @@ public class ActivityUIModelStates extends GeneratedActivityUIModelStates {
log.info(String.format("%s Will update related observed activities...", getPrefix()));
String vesselActivityId = bean.getVesselActivityId();
Date timeStamp = bean.getTimeStamp();
- if (pairingContext == null || vesselActivityId == null || timeStamp == null) {
+ if (timeStamp == null) {
+ timeStamp = bean.getDate();
+ }
+ if (vesselActivityId == null) {
activityObs = Collections.emptyList();
} else {
RoutePairingContextRequest request = new RoutePairingContextRequest(tripId, source().getParentReference().getId(), vesselActivityId);
=====================================
core/api/dto/src/main/java/fr/ird/observe/dto/data/pairing/ActivityPairingResultItemSupport.java
=====================================
@@ -52,6 +52,9 @@ public abstract class ActivityPairingResultItemSupport<O extends ActivityAware>
protected ActivityPairingResultItemSupport(ActivityAware activityLogbook, O observationActivity) {
Date logbookTimeStamp = Objects.requireNonNull(activityLogbook).getTimeStamp();
+ if (logbookTimeStamp == null) {
+ logbookTimeStamp = Objects.requireNonNull(activityLogbook.getDate());
+ }
Date obsTimeStamp = Objects.requireNonNull(observationActivity).getTimeStamp();
this.observationActivity = observationActivity;
this.computedTime = TimeUnit.MINUTES.convert(logbookTimeStamp.getTime() - obsTimeStamp.getTime(), TimeUnit.MILLISECONDS);
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/6fb7343683dda6a79e9c55133…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/6fb7343683dda6a79e9c55133…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop-9.0.x] Un marée sur laquelle l'assistant d'appariement bloque - Closes #2667
by Tony CHEMIT (@tchemit) 04 Apr '23
by Tony CHEMIT (@tchemit) 04 Apr '23
04 Apr '23
Tony CHEMIT pushed to branch develop-9.0.x at ultreiaio / ird-observe
Commits:
0bdda0a2 by Tony Chemit at 2023-04-04T09:30:36+02:00
Un marée sur laquelle l'assistant d'appariement bloque - Closes #2667
- - - - -
2 changed files:
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/logbook/ActivityUIModelStates.java
- core/api/dto/src/main/java/fr/ird/observe/dto/data/pairing/ActivityPairingResultItemSupport.java
Changes:
=====================================
client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/logbook/ActivityUIModelStates.java
=====================================
@@ -215,7 +215,10 @@ public class ActivityUIModelStates extends GeneratedActivityUIModelStates {
log.info(String.format("%s Will update related observed activities...", getPrefix()));
String vesselActivityId = bean.getVesselActivityId();
Date timeStamp = bean.getTimeStamp();
- if (pairingContext == null || vesselActivityId == null || timeStamp == null) {
+ if (timeStamp == null) {
+ timeStamp = bean.getDate();
+ }
+ if (vesselActivityId == null) {
activityObs = Collections.emptyList();
} else {
RoutePairingContextRequest request = new RoutePairingContextRequest(tripId, source().getParentReference().getId(), vesselActivityId);
=====================================
core/api/dto/src/main/java/fr/ird/observe/dto/data/pairing/ActivityPairingResultItemSupport.java
=====================================
@@ -52,6 +52,9 @@ public abstract class ActivityPairingResultItemSupport<O extends ActivityAware>
protected ActivityPairingResultItemSupport(ActivityAware activityLogbook, O observationActivity) {
Date logbookTimeStamp = Objects.requireNonNull(activityLogbook).getTimeStamp();
+ if (logbookTimeStamp == null) {
+ logbookTimeStamp = Objects.requireNonNull(activityLogbook.getDate());
+ }
Date obsTimeStamp = Objects.requireNonNull(observationActivity).getTimeStamp();
this.observationActivity = observationActivity;
this.computedTime = TimeUnit.MINUTES.convert(logbookTimeStamp.getTime() - obsTimeStamp.getTime(), TimeUnit.MILLISECONDS);
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/0bdda0a21a3354e3e87cb010a…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/0bdda0a21a3354e3e87cb010a…
You're receiving this email because of your account on gitlab.com.
1
0
03 Apr '23
Tony CHEMIT pushed to branch pages at ultreiaio / ird-observe
Commits:
fbe9f191 by Tony Chemit at 2023-04-03T09:00:08+02:00
Remove old version
- - - - -
30 changed files:
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/CHANGELOG.html → 9.1.0-RC-2/CHANGELOG.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/architecture-logicielle.html → 9.1.0-RC-2/architecture-logicielle.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/avdth/common.html → 9.1.0-RC-2/avdth/common.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/avdth/index.html → 9.1.0-RC-2/avdth/index.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/avdth/landing.html → 9.1.0-RC-2/avdth/landing.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/avdth/local_market.html → 9.1.0-RC-2/avdth/local_market.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/avdth/logbook.html → 9.1.0-RC-2/avdth/logbook.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/avdth/referential.html → 9.1.0-RC-2/avdth/referential.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/avdth/sample.html → 9.1.0-RC-2/avdth/sample.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/changelog.html → 9.1.0-RC-2/changelog.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/changes-report.html → 9.1.0-RC-2/changes-report.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/ci-management.html → 9.1.0-RC-2/ci-management.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/consolidation.html → 9.1.0-RC-2/consolidation.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/css/apache-maven-fluido-2.0.0-M3.min.css → 9.1.0-RC-2/css/apache-maven-fluido-2.0.0-M3.min.css
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/css/print.css → 9.1.0-RC-2/css/print.css
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/css/site.css → 9.1.0-RC-2/css/site.css
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/dependency-convergence.html → 9.1.0-RC-2/dependency-convergence.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/dependency-info.html → 9.1.0-RC-2/dependency-info.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/dependency-management.html → 9.1.0-RC-2/dependency-management.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/dependency-updates-report.html → 9.1.0-RC-2/dependency-updates-report.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/dev-activity.html → 9.1.0-RC-2/dev-activity.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/distribution-management.html → 9.1.0-RC-2/distribution-management.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/file-activity.html → 9.1.0-RC-2/file-activity.html
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/fonts/glyphicons-halflings-regular.eot → 9.1.0-RC-2/fonts/glyphicons-halflings-regular.eot
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/fonts/glyphicons-halflings-regular.svg → 9.1.0-RC-2/fonts/glyphicons-halflings-regular.svg
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/fonts/glyphicons-halflings-regular.ttf → 9.1.0-RC-2/fonts/glyphicons-halflings-regular.ttf
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/fonts/glyphicons-halflings-regular.woff → 9.1.0-RC-2/fonts/glyphicons-halflings-regular.woff
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/images/accessories-text-editor.png → 9.1.0-RC-2/images/accessories-text-editor.png
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/images/add.gif → 9.1.0-RC-2/images/add.gif
- 9.1.0-RC-2/scm:git:ssh:/git@gitlab.com:ultreiaio/ird-observe.git/images/apache-maven-project-2.png → 9.1.0-RC-2/images/apache-maven-project-2.png
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/fbe9f191e19fc59201025645e…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/fbe9f191e19fc59201025645e…
You're receiving this email because of your account on gitlab.com.
1
0
03 Apr '23
Tony CHEMIT pushed to branch pages at ultreiaio / ird-observe
Commits:
c50cd37a by Tony Chemit at 2023-04-03T08:28:44+02:00
Remove old version
- - - - -
6 changed files:
- − 7.6.10/administration-web.html
- − 7.6.10/architecture-logicielle.html
- − 7.6.10/changelog.html
- − 7.6.10/changes-report.html
- − 7.6.10/ci-management.html
- − 7.6.10/config-report.html
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/c50cd37a645c8c8bd6125fd14…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/c50cd37a645c8c8bd6125fd14…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][pages] Site checkin for project ObServe (version 9.1.0-RC-2)
by Tony CHEMIT (@tchemit) 03 Apr '23
by Tony CHEMIT (@tchemit) 03 Apr '23
03 Apr '23
Tony CHEMIT pushed to branch pages at ultreiaio / ird-observe
Commits:
a49c0957 by Tony Chemit at 2023-04-03T08:20:56+02:00
Site checkin for project ObServe (version 9.1.0-RC-2)
- - - - -
30 changed files:
- 9.1.0-RC-2/staging/client/changelog.html → 9.1.0-RC-2/client/changelog.html
- 9.1.0-RC-2/staging/client/ci-management.html → 9.1.0-RC-2/client/ci-management.html
- 9.1.0-RC-2/staging/client/client-configuration/changelog.html → 9.1.0-RC-2/client/client-configuration/changelog.html
- 9.1.0-RC-2/staging/client/client-configuration/ci-management.html → 9.1.0-RC-2/client/client-configuration/ci-management.html
- 9.1.0-RC-2/staging/client/client-configuration/css/apache-maven-fluido-2.0.0-M3.min.css → 9.1.0-RC-2/client/client-configuration/css/apache-maven-fluido-2.0.0-M3.min.css
- 9.1.0-RC-2/staging/client/client-configuration/css/print.css → 9.1.0-RC-2/client/client-configuration/css/print.css
- 9.1.0-RC-2/staging/client/client-configuration/css/site.css → 9.1.0-RC-2/client/client-configuration/css/site.css
- 9.1.0-RC-2/staging/client/client-configuration/dependencies.html → 9.1.0-RC-2/client/client-configuration/dependencies.html
- 9.1.0-RC-2/staging/client/client-configuration/dependency-info.html → 9.1.0-RC-2/client/client-configuration/dependency-info.html
- 9.1.0-RC-2/staging/client/client-configuration/dependency-management.html → 9.1.0-RC-2/client/client-configuration/dependency-management.html
- 9.1.0-RC-2/staging/client/client-configuration/dev-activity.html → 9.1.0-RC-2/client/client-configuration/dev-activity.html
- 9.1.0-RC-2/staging/client/client-configuration/distribution-management.html → 9.1.0-RC-2/client/client-configuration/distribution-management.html
- 9.1.0-RC-2/staging/client/client-configuration/file-activity.html → 9.1.0-RC-2/client/client-configuration/file-activity.html
- 9.1.0-RC-2/staging/client/client-configuration/fonts/glyphicons-halflings-regular.eot → 9.1.0-RC-2/client/client-configuration/fonts/glyphicons-halflings-regular.eot
- 9.1.0-RC-2/staging/client/client-configuration/fonts/glyphicons-halflings-regular.svg → 9.1.0-RC-2/client/client-configuration/fonts/glyphicons-halflings-regular.svg
- 9.1.0-RC-2/staging/client/client-configuration/fonts/glyphicons-halflings-regular.ttf → 9.1.0-RC-2/client/client-configuration/fonts/glyphicons-halflings-regular.ttf
- 9.1.0-RC-2/staging/client/client-configuration/fonts/glyphicons-halflings-regular.woff → 9.1.0-RC-2/client/client-configuration/fonts/glyphicons-halflings-regular.woff
- 9.1.0-RC-2/staging/client/client-configuration/images/accessories-text-editor.png → 9.1.0-RC-2/client/client-configuration/images/accessories-text-editor.png
- 9.1.0-RC-2/staging/client/client-configuration/images/add.gif → 9.1.0-RC-2/client/client-configuration/images/add.gif
- 9.1.0-RC-2/staging/client/client-configuration/images/apache-maven-project-2.png → 9.1.0-RC-2/client/client-configuration/images/apache-maven-project-2.png
- 9.1.0-RC-2/staging/client/client-configuration/images/application-certificate.png → 9.1.0-RC-2/client/client-configuration/images/application-certificate.png
- 9.1.0-RC-2/staging/client/client-configuration/images/close.gif → 9.1.0-RC-2/client/client-configuration/images/close.gif
- 9.1.0-RC-2/staging/client/client-configuration/images/contact-new.png → 9.1.0-RC-2/client/client-configuration/images/contact-new.png
- 9.1.0-RC-2/staging/client/client-configuration/images/document-properties.png → 9.1.0-RC-2/client/client-configuration/images/document-properties.png
- 9.1.0-RC-2/staging/client/client-configuration/images/drive-harddisk.png → 9.1.0-RC-2/client/client-configuration/images/drive-harddisk.png
- 9.1.0-RC-2/staging/client/client-configuration/images/fix.gif → 9.1.0-RC-2/client/client-configuration/images/fix.gif
- 9.1.0-RC-2/staging/client/client-configuration/images/icon_error_sml.gif → 9.1.0-RC-2/client/client-configuration/images/icon_error_sml.gif
- 9.1.0-RC-2/staging/client/client-configuration/images/icon_help_sml.gif → 9.1.0-RC-2/client/client-configuration/images/icon_help_sml.gif
- 9.1.0-RC-2/staging/client/client-configuration/images/icon_info_sml.gif → 9.1.0-RC-2/client/client-configuration/images/icon_info_sml.gif
- 9.1.0-RC-2/staging/client/client-configuration/images/icon_success_sml.gif → 9.1.0-RC-2/client/client-configuration/images/icon_success_sml.gif
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/a49c0957e1cd4db2b7687df0b…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/a49c0957e1cd4db2b7687df0b…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][pages] 2 commits: Site checkin for project ObServe (version 9.1.0-RC-2)
by Tony CHEMIT (@tchemit) 02 Apr '23
by Tony CHEMIT (@tchemit) 02 Apr '23
02 Apr '23
Tony CHEMIT pushed to branch pages at ultreiaio / ird-observe
Commits:
77c7f2e9 by Tony Chemit at 2023-04-02T15:21:42+02:00
Site checkin for project ObServe (version 9.1.0-RC-2)
- - - - -
faec84a2 by Tony Chemit at 2023-04-02T15:22:52+02:00
Site checkin for project ObServe (version 9.1.0-RC-2)
- - - - -
4 changed files:
- + 9.1.0-RC-2/staging/client/changelog.html
- + 9.1.0-RC-2/staging/client/ci-management.html
- + 9.1.0-RC-2/staging/client/client-configuration/changelog.html
- + 9.1.0-RC-2/staging/client/client-configuration/ci-management.html
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/94c93f9745f3ded7700a064f…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/94c93f9745f3ded7700a064f…
You're receiving this email because of your account on gitlab.com.
1
0
02 Apr '23
Tony CHEMIT deleted branch release/9.1.0-RC-2 at ultreiaio / ird-observe
--
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][release/9.1.0-RC-2] [jgitflow-maven-plugin]updating poms for branch'release/9.1.0-RC-2' with...
by Tony CHEMIT (@tchemit) 02 Apr '23
by Tony CHEMIT (@tchemit) 02 Apr '23
02 Apr '23
Tony CHEMIT pushed to branch release/9.1.0-RC-2 at ultreiaio / ird-observe
Commits:
f313b834 by Tony Chemit at 2023-04-02T11:05:10+02:00
[jgitflow-maven-plugin]updating poms for branch'release/9.1.0-RC-2' with non-snapshot versions[skip ci]
- - - - -
30 changed files:
- client/configuration/pom.xml
- client/core/pom.xml
- client/datasource/actions/pom.xml
- client/datasource/editor/api-test/pom.xml
- client/datasource/editor/api/pom.xml
- client/datasource/editor/common/pom.xml
- client/datasource/editor/ll/pom.xml
- client/datasource/editor/pom.xml
- client/datasource/editor/ps/pom.xml
- client/datasource/editor/spi/pom.xml
- client/datasource/pom.xml
- client/pom.xml
- client/runner/pom.xml
- core/api/dto-consolidation/pom.xml
- core/api/dto-decoration/pom.xml
- core/api/dto-validation/pom.xml
- core/api/dto/pom.xml
- core/api/pom.xml
- core/api/services/pom.xml
- core/api/tree/pom.xml
- core/api/validation/pom.xml
- core/persistence/avdth/pom.xml
- core/persistence/consolidation/pom.xml
- core/persistence/decoration/pom.xml
- core/persistence/java/pom.xml
- core/persistence/migration/pom.xml
- core/persistence/pom.xml
- core/persistence/report/pom.xml
- core/persistence/resources/pom.xml
- core/persistence/test/pom.xml
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/f313b834b85e17d7325f48282…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/f313b834b85e17d7325f48282…
You're receiving this email because of your account on gitlab.com.
1
0