Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 93ccd880 by Tony Chemit at 2024-01-22T13:02:31+01:00 [client-actions] Pouvoir rejourer l'assistant d'appairement des activités - Closes #2831 - - - - - 9532f5f5 by Tony Chemit at 2024-01-22T13:02:31+01:00 [toolkit-persistence] Add MapBuilder in QuerySupport to be able to build map of list from rows - - - - - 7d086c2e by Tony Chemit at 2024-01-22T13:02:31+01:00 Update changelog for v.9.2.2 [skip CI] - - - - - b7d9286a by Tony Chemit at 2024-01-22T13:02:31+01:00 Impossibilité de déplacer une activité PS observation sur une autre route en mode serveur - Closes #2832 - - - - - bfd20961 by Tony Chemit at 2024-01-22T13:02:31+01:00 Sur l'écran de définition Non déclenchement du bouton Enregistrer - Closes #2825 - - - - - 10 changed files: - CHANGELOG.md - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/AdminTabUIHandler.java - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/pairing/ActivityPairingUIHandler.java - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/pairing/actions/Prepare.java - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/logbook/FloatingObjectUI.jaxx - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/FloatingObjectUI.jaxx - core/persistence/java/src/main/resources/META-INF/persistence/Observe/TopiaEntitySqlDeletePlanModel.json - toolkit/api-services/src/main/java/fr/ird/observe/services/service/data/MoveRequest.java - toolkit/persistence/src/main/java/org/nuiton/topia/persistence/support/QuerySupport.java - toolkit/templates/src/main/java/org/nuiton/topia/templates/sql/plan/SqlHelper.java Changes: ===================================== CHANGELOG.md ===================================== @@ -1,18 +1,30 @@ # ObServe changelog * Author [Tony Chemit](mailto:dev@tchemit.fr) - * Last generated at 2023-11-14 16:47. + * Last generated at 2024-01-22 12:54. + +## Version [9.2.2](https://gitlab.com/ultreiaio/ird-observe/-/milestones/273) + +**Closed at 2024-01-22.** + +### Download +* [Client (observe-9.2.2-client.zip)](https://repo1.maven.org/maven2/fr/ird/observe/observe/9.2.2/observe-9.2.2-cl...) +* [Serveur (observe-9.2.2.war)](https://repo1.maven.org/maven2/fr/ird/observe/observe/9.2.2/observe-9.2.2.wa...) +* [Serveur (observe-9.2.2-server.zip)](https://repo1.maven.org/maven2/fr/ird/observe/observe/9.2.2/observe-9.2.2-se...) + +### Issues + * [[Type::Anomalie 2825]](https://gitlab.com/ultreiaio/ird-observe/-/issues/2825) **Sur l'écran de définition Non déclenchement du bouton Enregistrer** (Thanks to Tony CHEMIT) (Reported by Pascal Cauquil) + * [[Type::Anomalie 2832]](https://gitlab.com/ultreiaio/ird-observe/-/issues/2832) **Impossibilité de déplacer une activité PS observation sur une autre route en mode serveur** (Thanks to Tony CHEMIT) (Reported by Pascal Cauquil) ## Version [9.2.1](https://gitlab.com/ultreiaio/ird-observe/-/milestones/272) +**Closed at 2023-11-14.** + ### Download * [Client (observe-9.2.1-client.zip)](https://repo1.maven.org/maven2/fr/ird/observe/observe/9.2.1/observe-9.2.1-cl...) * [Serveur (observe-9.2.1.war)](https://repo1.maven.org/maven2/fr/ird/observe/observe/9.2.1/observe-9.2.1.wa...) * [Serveur (observe-9.2.1-server.zip)](https://repo1.maven.org/maven2/fr/ird/observe/observe/9.2.1/observe-9.2.1-se...) -**Closed at 2023-11-14.** - - ### Issues * [[Type::Anomalie 2798]](https://gitlab.com/ultreiaio/ird-observe/-/issues/2798) **Souci de décalage de lignes sur le rapport Vérification des plans de cuve** (Thanks to Tony CHEMIT) (Reported by Pascal Cauquil) * [[Type::Anomalie 2800]](https://gitlab.com/ultreiaio/ird-observe/-/issues/2800) **Erreur de migration sur bases AZTI locales** (Thanks to Tony CHEMIT) (Reported by Pascal Cauquil) ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/AdminTabUIHandler.java ===================================== @@ -193,7 +193,7 @@ public class AdminTabUIHandler<U extends AdminTabUI> implements WithClientUICont protected void onComingFromNextStepAdjust() { AdminUIModel model = ui.getModel(); - if (model.containsOperation(AdminStep.VALIDATE) || + if (model.containsOperation(AdminStep.VALIDATE) || model.containsOperation(AdminStep.ACTIVITY_PAIRING) || (model.containsOperation(AdminStep.CONSOLIDATE) && !model.containsOperation(AdminStep.EXPORT_DATA))) { if (model.getStepState(AdminStep.CONSOLIDATE) == WizardState.SUCCESSED) { // set back to pending consolidate step @@ -203,6 +203,9 @@ public class AdminTabUIHandler<U extends AdminTabUI> implements WithClientUICont model.setStepState(AdminStep.VALIDATE, WizardState.PENDING); // reset report model model.getValidateModel().reset(); + } else if (model.getStepState(AdminStep.ACTIVITY_PAIRING) == WizardState.NEED_FIX || model.getStepState(AdminStep.ACTIVITY_PAIRING) == WizardState.SUCCESSED) { + // set back to pending activity pairing step + model.setStepState(AdminStep.ACTIVITY_PAIRING, WizardState.PENDING); } } } ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/pairing/ActivityPairingUIHandler.java ===================================== @@ -37,5 +37,6 @@ public class ActivityPairingUIHandler extends AdminTabUIHandler<ActivityPairingU super.afterInit(ui); setAutoStart(ui.getPrepare()); hideFixedPanelLabel(ui); + ui.getDescriptionContainer().remove(ui.getDescriptionPane()); } } ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/pairing/actions/Prepare.java ===================================== @@ -87,7 +87,6 @@ public class Prepare extends ActivityPairingUIActionSupport { } break; } - ui.getModel().setWasDone(true); stepModel.recomputeSelectedValues(); return WizardState.NEED_FIX; } ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/logbook/FloatingObjectUI.jaxx ===================================== @@ -67,6 +67,7 @@ <field name="transmittingBuoyOwnership" component="transmittingBuoyOwnership1"/> <field name="code" component="code1"/> <field name="country" component="country1"/> + <field name="vessel" component="vessel1"/> <field name='longitude' component='coordinate1'/> <field name='latitude' component='coordinate1'/> <field name='quadrant' component='coordinate1'/> @@ -80,6 +81,7 @@ <field name="transmittingBuoyOwnership" component="transmittingBuoyOwnership2"/> <field name="code" component="code2"/> <field name="country" component="country2"/> + <field name="vessel" component="vessel2"/> <field name='comment' component='comment2'/> </BeanValidator> ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/FloatingObjectUI.jaxx ===================================== @@ -68,6 +68,7 @@ <field name="transmittingBuoyOwnership" component="transmittingBuoyOwnership1"/> <field name="code" component="code1"/> <field name="country" component="country1"/> + <field name="vessel" component="vessel1"/> <field name='longitude' component='coordinate1'/> <field name='latitude' component='coordinate1'/> <field name='quadrant' component='coordinate1'/> @@ -81,6 +82,7 @@ <field name="transmittingBuoyOwnership" component="transmittingBuoyOwnership2"/> <field name="code" component="code2"/> <field name="country" component="country2"/> + <field name="vessel" component="vessel2"/> <field name='comment' component='comment2'/> </BeanValidator> @@ -229,7 +231,7 @@ <JLabel id='vessel1Label'/> </cell> <cell anchor='east' weightx="1" fill="both"> - <FilterableComboBox id='vessel1' genericType='VesselReference'/> + <FilterableComboBox id='vessel1' genericType='VesselReference' beanScope="transmittingBuoy1"/> </cell> </row> <row> ===================================== core/persistence/java/src/main/resources/META-INF/persistence/Observe/TopiaEntitySqlDeletePlanModel.json ===================================== @@ -120,23 +120,23 @@ "ll_observation.set→DELETE FROM ll_observation.set WHERE set.activity %s;", "ll_observation.sensorUsed→DELETE FROM ll_observation.sensorUsed WHERE sensorUsed.activity %s;", "ll_observation.encounter→DELETE FROM ll_observation.encounter WHERE encounter.activity %s;", - "ll_logbook.activity→UPDATE ll_logbook.activity activity SET activity.relatedObservedActivity = NULL WHERE activity.relatedObservedActivity %s", + "ll_logbook.activity→UPDATE ll_logbook.activity SET relatedObservedActivity = NULL WHERE activity.relatedObservedActivity %s", "ll_observation.activity→DELETE FROM ll_observation.activity WHERE activity.topiaId %s;" ], "fr.ird.observe.entities.data.ll.observation.BaitsComposition": [ "ll_observation.baitsComposition→DELETE FROM ll_observation.baitsComposition WHERE baitsComposition.topiaId %s;" ], "fr.ird.observe.entities.data.ll.observation.Basket": [ - "ll_observation.catch→UPDATE ll_observation.catch catch SET catch.branchline = NULL WHERE catch.branchline IN ( SELECT branchline.topiaId FROM ll_observation.branchline branchline WHERE branchline.basket %s )", - "ll_observation.tdr→UPDATE ll_observation.tdr tdr SET tdr.branchline = NULL WHERE tdr.branchline IN ( SELECT branchline.topiaId FROM ll_observation.branchline branchline WHERE branchline.basket %s )", + "ll_observation.catch→UPDATE ll_observation.catch SET branchline = NULL WHERE catch.branchline IN ( SELECT branchline.topiaId FROM ll_observation.branchline branchline WHERE branchline.basket %s )", + "ll_observation.tdr→UPDATE ll_observation.tdr SET branchline = NULL WHERE tdr.branchline IN ( SELECT branchline.topiaId FROM ll_observation.branchline branchline WHERE branchline.basket %s )", "ll_observation.branchline→DELETE FROM ll_observation.branchline WHERE branchline.basket %s;", - "ll_observation.catch→UPDATE ll_observation.catch catch SET catch.basket = NULL WHERE catch.basket %s", - "ll_observation.tdr→UPDATE ll_observation.tdr tdr SET tdr.basket = NULL WHERE tdr.basket %s", + "ll_observation.catch→UPDATE ll_observation.catch SET basket = NULL WHERE catch.basket %s", + "ll_observation.tdr→UPDATE ll_observation.tdr SET basket = NULL WHERE tdr.basket %s", "ll_observation.basket→DELETE FROM ll_observation.basket WHERE basket.topiaId %s;" ], "fr.ird.observe.entities.data.ll.observation.Branchline": [ - "ll_observation.catch→UPDATE ll_observation.catch catch SET catch.branchline = NULL WHERE catch.branchline %s", - "ll_observation.tdr→UPDATE ll_observation.tdr tdr SET tdr.branchline = NULL WHERE tdr.branchline %s", + "ll_observation.catch→UPDATE ll_observation.catch SET branchline = NULL WHERE catch.branchline %s", + "ll_observation.tdr→UPDATE ll_observation.tdr SET branchline = NULL WHERE tdr.branchline %s", "ll_observation.branchline→DELETE FROM ll_observation.branchline WHERE branchline.topiaId %s;" ], "fr.ird.observe.entities.data.ll.observation.BranchlinesComposition": [ @@ -158,14 +158,14 @@ "ll_observation.hooksComposition→DELETE FROM ll_observation.hooksComposition WHERE hooksComposition.topiaId %s;" ], "fr.ird.observe.entities.data.ll.observation.Section": [ - "ll_observation.catch→UPDATE ll_observation.catch catch SET catch.branchline = NULL WHERE catch.branchline IN ( SELECT catch.branchline FROM ll_observation.branchline branchline INNER JOIN ll_observation.catch catch_ ON catch_.branchline = branchline.topiaId INNER JOIN ll_observation.basket basket ON basket.topiaId = branchline.basket WHERE basket.section %s )", - "ll_observation.tdr→UPDATE ll_observation.tdr tdr SET tdr.branchline = NULL WHERE tdr.branchline IN ( SELECT tdr.branchline FROM ll_observation.branchline branchline INNER JOIN ll_observation.tdr tdr_ ON tdr_.branchline = branchline.topiaId INNER JOIN ll_observation.basket basket ON basket.topiaId = branchline.basket WHERE basket.section %s )", + "ll_observation.catch→UPDATE ll_observation.catch SET branchline = NULL WHERE catch.branchline IN ( SELECT catch.branchline FROM ll_observation.branchline branchline INNER JOIN ll_observation.catch catch_ ON catch_.branchline = branchline.topiaId INNER JOIN ll_observation.basket basket ON basket.topiaId = branchline.basket WHERE basket.section %s )", + "ll_observation.tdr→UPDATE ll_observation.tdr SET branchline = NULL WHERE tdr.branchline IN ( SELECT tdr.branchline FROM ll_observation.branchline branchline INNER JOIN ll_observation.tdr tdr_ ON tdr_.branchline = branchline.topiaId INNER JOIN ll_observation.basket basket ON basket.topiaId = branchline.basket WHERE basket.section %s )", "ll_observation.branchline→DELETE FROM ll_observation.branchline WHERE branchline.topiaId IN (SELECT branchline.topiaId FROM ll_observation.branchline branchline INNER JOIN ll_observation.basket basket ON basket.topiaId = branchline.basket WHERE basket.section %s);", - "ll_observation.catch→UPDATE ll_observation.catch catch SET catch.basket = NULL WHERE catch.basket IN ( SELECT basket.topiaId FROM ll_observation.basket basket WHERE basket.section %s )", - "ll_observation.tdr→UPDATE ll_observation.tdr tdr SET tdr.basket = NULL WHERE tdr.basket IN ( SELECT basket.topiaId FROM ll_observation.basket basket WHERE basket.section %s )", + "ll_observation.catch→UPDATE ll_observation.catch SET basket = NULL WHERE catch.basket IN ( SELECT basket.topiaId FROM ll_observation.basket basket WHERE basket.section %s )", + "ll_observation.tdr→UPDATE ll_observation.tdr SET basket = NULL WHERE tdr.basket IN ( SELECT basket.topiaId FROM ll_observation.basket basket WHERE basket.section %s )", "ll_observation.basket→DELETE FROM ll_observation.basket WHERE basket.section %s;", - "ll_observation.catch→UPDATE ll_observation.catch catch SET catch.section = NULL WHERE catch.section %s", - "ll_observation.tdr→UPDATE ll_observation.tdr tdr SET tdr.section = NULL WHERE tdr.section %s", + "ll_observation.catch→UPDATE ll_observation.catch SET section = NULL WHERE catch.section %s", + "ll_observation.tdr→UPDATE ll_observation.tdr SET section = NULL WHERE tdr.section %s", "ll_observation.section→DELETE FROM ll_observation.section WHERE section.topiaId %s;" ], "fr.ird.observe.entities.data.ll.observation.SensorUsed": [ @@ -268,7 +268,7 @@ ], "fr.ird.observe.entities.data.ps.localmarket.Survey": [ "ps_localmarket.surveyPart→DELETE FROM ps_localmarket.surveyPart WHERE surveyPart.survey %s;", - "ps_localmarket.batch→UPDATE ps_localmarket.batch batch SET batch.survey = NULL WHERE batch.survey %s", + "ps_localmarket.batch→UPDATE ps_localmarket.batch SET survey = NULL WHERE batch.survey %s", "ps_localmarket.survey→DELETE FROM ps_localmarket.survey WHERE survey.topiaId %s;" ], "fr.ird.observe.entities.data.ps.localmarket.SurveyPart": [ @@ -353,7 +353,7 @@ "ps_observation.floatingObject→DELETE FROM ps_observation.floatingObject WHERE floatingObject.activity %s;", "ps_observation.catch→DELETE FROM ps_observation.catch WHERE catch.topiaId IN (SELECT catch.topiaId FROM ps_observation.catch catch INNER JOIN ps_observation.set set ON set.topiaId = catch.set WHERE set.activity %s);", "ps_observation.set→DELETE FROM ps_observation.set WHERE set.activity %s;", - "ps_logbook.activity→UPDATE ps_logbook.activity activity SET activity.relatedObservedActivity = NULL WHERE activity.relatedObservedActivity %s", + "ps_logbook.activity→UPDATE ps_logbook.activity SET relatedObservedActivity = NULL WHERE activity.relatedObservedActivity %s", "ps_observation.activity→DELETE FROM ps_observation.activity WHERE activity.topiaId %s;" ], "fr.ird.observe.entities.data.ps.observation.Catch": [ @@ -391,7 +391,7 @@ "ps_observation.floatingObject→DELETE FROM ps_observation.floatingObject WHERE floatingObject.topiaId IN (SELECT floatingObject.topiaId FROM ps_observation.floatingObject floatingObject INNER JOIN ps_observation.activity activity ON activity.topiaId = floatingObject.activity WHERE activity.route %s);", "ps_observation.catch→DELETE FROM ps_observation.catch WHERE catch.topiaId IN (SELECT catch.topiaId FROM ps_observation.catch catch INNER JOIN ps_observation.set set ON set.topiaId = catch.set INNER JOIN ps_observation.activity activity ON activity.topiaId = set.activity WHERE activity.route %s);", "ps_observation.set→DELETE FROM ps_observation.set WHERE set.topiaId IN (SELECT set.topiaId FROM ps_observation.set set INNER JOIN ps_observation.activity activity ON activity.topiaId = set.activity WHERE activity.route %s);", - "ps_logbook.activity→UPDATE ps_logbook.activity activity SET activity.relatedObservedActivity = NULL WHERE activity.relatedObservedActivity IN ( SELECT activity.topiaId FROM ps_observation.activity activity WHERE activity.route %s )", + "ps_logbook.activity→UPDATE ps_logbook.activity SET relatedObservedActivity = NULL WHERE activity.relatedObservedActivity IN ( SELECT activity.topiaId FROM ps_observation.activity activity WHERE activity.route %s )", "ps_observation.activity→DELETE FROM ps_observation.activity WHERE activity.route %s;", "ps_observation.route→DELETE FROM ps_observation.route WHERE route.topiaId %s;" ], ===================================== toolkit/api-services/src/main/java/fr/ird/observe/services/service/data/MoveRequest.java ===================================== @@ -25,6 +25,7 @@ package fr.ird.observe.services.service.data; import fr.ird.observe.dto.BusinessDto; import fr.ird.observe.dto.ToolkitIdDtoBean; import fr.ird.observe.dto.data.RootOpenableDto; +import io.ultreia.java4all.util.json.JsonAware; import java.util.Set; import java.util.StringJoiner; @@ -35,7 +36,7 @@ import java.util.StringJoiner; * @author Tony Chemit - dev@tchemit.fr * @since 8.0.1 */ -public class MoveRequest { +public class MoveRequest implements JsonAware { /** * Id of parent data to move. ===================================== toolkit/persistence/src/main/java/org/nuiton/topia/persistence/support/QuerySupport.java ===================================== @@ -23,6 +23,7 @@ package org.nuiton.topia.persistence.support; */ import fr.ird.observe.datasource.SqlHelper; +import fr.ird.observe.dto.ToolkitId; import fr.ird.observe.entities.Entity; import fr.ird.observe.spi.context.DataDtoEntityContext; import org.hibernate.query.NativeQuery; @@ -31,14 +32,18 @@ import org.hibernate.query.QueryParameter; import javax.persistence.Parameter; import java.sql.Timestamp; +import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.BiConsumer; +import java.util.function.BiFunction; import java.util.function.Function; import java.util.stream.Collectors; +import java.util.stream.Stream; /** @@ -119,4 +124,36 @@ public interface QuerySupport { default int execute(NativeQuery<?> sqlQuery) { return sqlQuery.executeUpdate(); } + + class MapBuilder<K extends ToolkitId, V> { + + private final Map<K, List<V>> result; + + private final Map<String, K> keysById; + private final BiFunction<K, Object[], V> valueCreator; + + private K currentKey; + private List<V> currentList; + + public MapBuilder(Map<K, List<V>> result, Collection<K> keys, BiFunction<K, Object[], V> valueCreator) { + this.result = result; + this.keysById = keys.stream().collect(Collectors.toMap(ToolkitId::getId, Function.identity())); + this.valueCreator = valueCreator; + keysById.values().forEach(r -> result.put(r, new LinkedList<>())); + } + + public void addRow(Object[] row) { + String keyId = (String) row[0]; + if (currentKey == null || !Objects.equals(currentKey.getId(), keyId)) { + currentKey = keysById.get(keyId); + currentList = result.get(currentKey); + } + currentList.add(valueCreator.apply(currentKey, row)); + } + + public Map<K, List<V>> build(Stream<Object[]> data) { + data.forEach(this::addRow); + return result; + } + } } ===================================== toolkit/templates/src/main/java/org/nuiton/topia/templates/sql/plan/SqlHelper.java ===================================== @@ -41,7 +41,7 @@ public class SqlHelper { public static final String FROM_SQL = "%s WHERE %s"; public static final String FROM_SQL_NO_WHERE = "%s"; public static final String SQL_WHERE_CLAUSE_ALIAS = "%1$s.%2$s"; - public static final String DELETE_REVERSE_ASSOCIATION_STATEMENT = "UPDATE %1$s.%2$s %2$s SET %2$s.%3$s = NULL WHERE %4$s"; + public static final String DELETE_REVERSE_ASSOCIATION_STATEMENT = "UPDATE %1$s.%2$s SET %3$s = NULL WHERE %4$s"; public static final String DELETE_FROM_SELECTOR_STATEMENT = "DELETE FROM %1$s.%2$s WHERE %2$s.%3$s IN (%4$s);"; public static final String DELETE_FROM_SELECTOR_SIMPLIFIED_STATEMENT = "DELETE FROM %1$s.%2$s WHERE %3$s;"; View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/0347a6a05e5477a51b2093ad9... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/0347a6a05e5477a51b2093ad9... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT (@tchemit)