mailman.cloud.codelutin.com
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

Observe-commits

Thread Start a new thread
Download
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
observe-commits@list.forge.codelutin.com

August 2019

  • 1 participants
  • 43 discussions
[Git][ultreiaio/ird-observe][develop] 3 commits: Use DecoratorServiceSupport from toolkit
by Tony CHEMIT 07 Aug '19

07 Aug '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 91937b45 by tchemit at 2019-08-07T12:46:48Z Use DecoratorServiceSupport from toolkit - - - - - c486e213 by tchemit at 2019-08-07T12:46:50Z Use Decorators from toolkit - - - - - 3fc09195 by tchemit at 2019-08-07T13:36:09Z Clean content ui models - - - - - 30 changed files: - client-core/src/main/java/fr/ird/observe/client/ObserveSwingApplicationContext.java - client-core/src/main/java/fr/ird/observe/client/db/ObserveDataSourcesManager.java - client-core/src/main/java/fr/ird/observe/client/db/ObserveSwingDataSource.java - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/UIActionSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/tree/NavigationConfigUIActionSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/ContentUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/ContentUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/edit/ContentEditUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/list/ContentListUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/open/ContentOpenableUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/simple/ContentSimpleUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/table/ContentTableUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/ref/ContentReferenceUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/ref/ReferenceHomeUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/common/GearUseFeaturesUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/common/TripListUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/common/TripUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/landing/LandingListUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/landing/LandingPartUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/landing/LandingUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/ActivityListUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/ActivitySampleUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/ActivityUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/BaitsCompositionUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/BranchlinesCompositionUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/CatchTableModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/CatchUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/FloatlinesCompositionUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/HooksCompositionUIModel.java The diff was not included because it is too large. View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/6dd290604061bd2ddf88e7f832… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/6dd290604061bd2ddf88e7f832… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-9] 28 commits: Use DecoratorServiceSupport from toolkit
by Tony CHEMIT 07 Aug '19

07 Aug '19
Tony CHEMIT pushed to branch develop-9 at ultreiaio / ird-observe Commits: 91937b45 by tchemit at 2019-08-07T12:46:48Z Use DecoratorServiceSupport from toolkit - - - - - c486e213 by tchemit at 2019-08-07T12:46:50Z Use Decorators from toolkit - - - - - 3fc09195 by tchemit at 2019-08-07T13:36:09Z Clean content ui models - - - - - 5070eca4 by tchemit at 2019-08-07T13:36:16Z [CARTE] Symboles de cartes pour V8 et V9 - Refactor code - See #1343 - - - - - a8dd3e7a by tchemit at 2019-08-07T13:37:50Z Réorganisation des données d’observation PS - Réorganisation des captures et échantillons de cible et bycatch observés - See #1254 - - - - - 0682acb0 by tchemit at 2019-08-07T13:37:50Z Move to new version 9.0-alpha-1 - - - - - 6b32d70a by tchemit at 2019-08-07T13:37:50Z Réorganisation des données d’observation PS - Re localisation dans la hiérarchie - Closes #1252 - - - - - a75b2c64 by tchemit at 2019-08-07T13:37:50Z Module 2 (first flush) - - - - - bcddeb06 by tchemit at 2019-08-07T13:37:51Z [PS] Contenu des onglets spécifiques observations et logbooks et le formulaire marée - See #1300 - - - - - 2aa412d8 by tchemit at 2019-08-07T13:37:51Z Module 2 - second flush - - - - - 6374e0d0 by tchemit at 2019-08-07T13:37:51Z Report from v8 for ps logbook model - - - - - d0ec7875 by tchemit at 2019-08-07T13:37:51Z Choix de nouvelles couleurs pour les symboles de la carte LL - Closes #1293 - - - - - 7915e182 by tchemit at 2019-08-07T13:37:51Z [CARTE] Symboles de cartes pour V8 et V9 - Realign for Ps model - See #1343 - - - - - 08e13950 by tchemit at 2019-08-07T13:37:52Z Consolidation des champs techniques en base - Realing on v9 - See #1353 - - - - - 240b8e6a by tchemit at 2019-08-07T13:37:52Z Insertion des lots de débarquements - See #1259 - - - - - 71d09949 by tchemit at 2019-08-07T13:37:53Z Insertion du plan de cuves - See #1260 - - - - - 06433848 by tchemit at 2019-08-07T13:37:53Z Insertion de l’échantillonnage au port - See #1261 - - - - - 02d22b13 by tchemit at 2019-08-07T13:37:53Z Création de nouvelles icônes de navigation - Pass for v9 - See #1358 - - - - - 47cd2fd7 by tchemit at 2019-08-07T13:37:53Z First realign i18n after develop merge - - - - - c375dd33 by tchemit at 2019-08-07T13:37:54Z Realign Seine model (no more any Seine in any Seine data - - - - - e7523878 by tchemit at 2019-08-07T13:37:54Z optimize i18n - - - - - 212d1572 by tchemit at 2019-08-07T13:37:54Z Use new ServicesProvider (everything is now generated) (report on v9) - - - - - d064c8e6 by tchemit at 2019-08-07T13:37:54Z Normalize seine services names - - - - - bfdcbbbb by tchemit at 2019-08-07T13:37:54Z Align logbook referential - See #1332 - - - - - 359c5311 by tchemit at 2019-08-07T13:37:55Z realign after big rebase from develop - - - - - c5e15da9 by tchemit at 2019-08-07T13:37:55Z Add package priority tag value and generate new package model initializers - - - - - 92caad87 by tchemit at 2019-08-07T13:37:55Z Refactor decorator service init using new per package model initializer. - - - - - f60e9dcc by tchemit at 2019-08-07T13:44:23Z Clean content ui models (for v9) - - - - - 30 changed files: - .mvn/pom.gitflow.develop - .mvn/pom.gitflow.master - client-configuration/.mvn/pom.gitflow.develop - client-configuration/.mvn/pom.gitflow.master - client-configuration/pom.xml - client-configuration/src/main/config/Client.ini - client-configuration/src/main/i18n/getters/config.getter - client-configuration/src/main/i18n/getters/java.getter - client-core/.mvn/pom.gitflow.develop - client-core/.mvn/pom.gitflow.master - client-core/pom.xml - client-core/src/license/THIRD-PARTY.properties - client-core/src/main/dcp-presets/ps/logbook/01-deployment-preset.yml - client-core/src/main/dcp-presets/ps/logbook/02-removal-preset.yml - client-core/src/main/dcp-presets/ps/logbook/03-update-preset.yml - client-core/src/main/dcp-presets/ps/logbook/04-abandonned-preset.yml - client-core/src/main/i18n/getters/java.getter - client-core/src/main/i18n/getters/jaxx.getter - client-core/src/main/java/fr/ird/observe/client/ObserveSwingApplicationContext.java - client-core/src/main/java/fr/ird/observe/client/db/ObserveDataSourcesManager.java - client-core/src/main/java/fr/ird/observe/client/db/ObserveSwingDataSource.java - client-core/src/main/java/fr/ird/observe/client/navigation/RouteCloseCallback.java - client-core/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jcss - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/UIActionSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/SelectTransshipmentLandingLonglineUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/delete/DeleteTripLonglineLandingUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/move/MoveMultipleTripLonglineLandingUIAction.java The diff was not included because it is too large. View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/b71178acf2b41c99ceca293cc4… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/b71178acf2b41c99ceca293cc4… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] 2 commits: Use DecoratorServiceSupport from toolkit
by Tony CHEMIT 07 Aug '19

07 Aug '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 6eaa38ad by tchemit at 2019-08-07T12:39:36Z Use DecoratorServiceSupport from toolkit - - - - - 6dd29060 by tchemit at 2019-08-07T12:39:37Z Use Decorators from toolkit - - - - - 24 changed files: - client-core/src/main/java/fr/ird/observe/client/ObserveSwingApplicationContext.java - client-core/src/main/java/fr/ird/observe/client/db/ObserveDataSourcesManager.java - client-core/src/main/java/fr/ird/observe/client/db/ObserveSwingDataSource.java - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/UIActionSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/tree/NavigationConfigUIActionSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/ContentUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/storage/StorageUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/ObserveTreeNodeSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUIHandler.java - client-core/src/main/java/fr/ird/observe/client/validation/ClientValidationContext.java - dto/src/main/i18n/getters/java.getter - dto/src/main/java/fr/ird/observe/dto/decoration/DecoratorService.java - − dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ObserveDecorator.java - − dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ReferentialReferenceDecorator.java - observe-i18n/src/main/i18n/translations/observe_en_GB.properties - observe-i18n/src/main/i18n/translations/observe_es_ES.properties - observe-i18n/src/main/i18n/translations/observe_fr_FR.properties - services-validation/src/main/java/fr/ird/observe/services/ObserveServicesProviderImpl.java - dto/src/main/java/fr/ird/observe/dto/decoration/decorators/DataReferenceDecorator.java → services-validation/src/main/java/fr/ird/observe/services/ObserveServicesProviderSupport.java - services-validation/src/main/java/fr/ird/observe/validation/validators/TripVesselDtoValidator.java - validation/src/main/resources/fr/ird/observe/dto/data/ll/common/TripDto-create-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/ll/common/TripDto-update-error-validation.xml Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/ObserveSwingApplicationContext.java ===================================== @@ -42,6 +42,7 @@ import fr.ird.observe.navigation.model.edit.ObserveEditModelManager; import fr.ird.observe.navigation.model.select.ObserveSelectModel; import fr.ird.observe.services.ObserveDataSourceConfigurationMainFactory; import fr.ird.observe.services.ObserveServiceMainFactory; +import fr.ird.observe.services.ObserveServicesProvider; import fr.ird.observe.spi.DtoModelHelper; import fr.ird.observe.validation.ValidatorDto; import fr.ird.observe.validation.ValidatorsManager; @@ -216,6 +217,10 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im return ((ValidatorsManager) VALIDATORS_MANAGER.get()).getValidators(); } + public ObserveServicesProvider getServicesProvider() { + return getDataSourcesManager().getMainDataSource(); + } + public ObserveMainUI getMainUI() { return MAIN_UI.get(); } @@ -357,23 +362,23 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im super.finalize(); } - public void sanitizeIds(ProgressModel progressModel, DtoModelNavigationAggregateModel navigationSelectModel) { - try { - for (DtoModelNavigationModel<?> navigationModel : navigationSelectModel.getModels()) { - for (DtoModelNavigationNode node : navigationModel.getNodesWithIds()) { - if (node.isEnabled()) { - ImmutableSet<String> safeIds = ObserveSwingDataSource.MAIN.getNavigationService().retainExistingIds(ImmutableSet.of(node.getId())); - if (safeIds.isEmpty()) { - node.setId(null); - } - } - progressModel.incrementsCurrentStep(); - } - } - } catch (Exception e) { - log.error("Could not sanitizeIds", e); - } - } +// public void sanitizeIds(ProgressModel progressModel, DtoModelNavigationAggregateModel navigationSelectModel) { +// try { +// for (DtoModelNavigationModel<?> navigationModel : navigationSelectModel.getModels()) { +// for (DtoModelNavigationNode node : navigationModel.getNodesWithIds()) { +// if (node.isEnabled()) { +// ImmutableSet<String> safeIds = ObserveSwingDataSource.MAIN.getNavigationService().retainExistingIds(ImmutableSet.of(node.getId())); +// if (safeIds.isEmpty()) { +// node.setId(null); +// } +// } +// progressModel.incrementsCurrentStep(); +// } +// } +// } catch (Exception e) { +// log.error("Could not sanitizeIds", e); +// } +// } public void saveNavigationToConfig(boolean clearModels) { ===================================== client-core/src/main/java/fr/ird/observe/client/db/ObserveDataSourcesManager.java ===================================== @@ -568,10 +568,10 @@ public class ObserveDataSourcesManager implements Closeable { boolean withSelectModel = navigationSelectModel != null; boolean withEditModel = navigationEditModel != null; if (source.canReadData() && withSelectModel) { - applicationContext.sanitizeIds(progressModel, navigationSelectModel); + dataSource.sanitizeIds(progressModel, navigationSelectModel); } if (source.canWriteData() && withEditModel) { - applicationContext.sanitizeIds(progressModel, navigationEditModel); + dataSource.sanitizeIds(progressModel, navigationEditModel); } if (source.canWriteData()) { applicationContext.getFloatingObjectPresetsManager().sanitize(progressModel, source); @@ -583,7 +583,7 @@ public class ObserveDataSourcesManager implements Closeable { applicationContext.getNavigationEdit().load(navigationEditModel); } - mainUI.getInitializer().loadNavigationUI(progressModel); + mainUI.getInitializer().loadNavigationUI(dataSource,progressModel); mainUI.getModel().setMode(ObserveUIMode.DB); progressModel.incrementsCurrentStep(); ===================================== client-core/src/main/java/fr/ird/observe/client/db/ObserveSwingDataSource.java ===================================== @@ -37,9 +37,13 @@ import fr.ird.observe.dto.reference.ReferentialDtoReference; import fr.ird.observe.dto.reference.ReferentialDtoReferenceSet; import fr.ird.observe.dto.referential.ReferentialDto; import fr.ird.observe.dto.referential.ReferentialLocale; +import fr.ird.observe.navigation.model.DtoModelNavigationAggregateModel; +import fr.ird.observe.navigation.model.DtoModelNavigationModel; +import fr.ird.observe.navigation.model.DtoModelNavigationNode; import fr.ird.observe.services.ObserveServiceInitializer; import fr.ird.observe.services.ObserveServiceMainFactory; import fr.ird.observe.services.ObserveServicesProvider; +import fr.ird.observe.services.ObserveServicesProviderSupport; import fr.ird.observe.services.configuration.DataSourceCreateConfigurationDto; import fr.ird.observe.services.configuration.DataSourceCreateWithNoReferentialImportException; import fr.ird.observe.services.configuration.IncompatibleDataSourceCreateConfigurationException; @@ -65,14 +69,14 @@ import fr.ird.observe.services.service.referential.ReferentialService; import fr.ird.observe.spi.map.ImmutableSetDtoMap; import fr.ird.observe.spi.map.ImmutableSetStringMap; import fr.ird.observe.spi.map.ImmutableTypedMap; +import io.ultreia.java4all.bean.JavaBean; +import io.ultreia.java4all.bean.spi.GenerateJavaBeanDefinition; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.jdesktop.beans.AbstractSerializableBean; import org.nuiton.version.Version; import javax.swing.JOptionPane; import javax.swing.event.EventListenerList; -import java.io.Closeable; import java.io.File; import java.io.IOException; import java.util.Locale; @@ -84,49 +88,23 @@ import static io.ultreia.java4all.i18n.I18n.t; /** * @author Tony Chemit - dev(a)tchemit.fr */ -public class ObserveSwingDataSource extends AbstractSerializableBean implements Closeable, ObserveServicesProvider { +@GenerateJavaBeanDefinition +public class ObserveSwingDataSource extends ObserveServicesProviderSupport implements JavaBean { - public static final ObserveServicesProvider MAIN = new ObserveServicesProvider(){ - @Override - public void close() { - } - - //FIXME If we do not set this, OGNL can't find it on default implementation on interface :( - @Override - public fr.ird.observe.services.service.data.ll.common.TripService getLlCommonTripService() { - return getService(fr.ird.observe.services.service.data.ll.common.TripService.class); - } - - //FIXME If we do not set this, OGNL can't find it on default implementation on interface :( - @Override - public fr.ird.observe.services.service.data.ps.common.TripService getPsCommonTripService() { - return getService(fr.ird.observe.services.service.data.ps.common.TripService.class); - } - - @Override - public <S extends ObserveService> S getService(Class<S> serviceType) { - return ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource().getService(serviceType); - } - }; - private static final long serialVersionUID = 1L; private static final Logger log = LogManager.getLogger(ObserveSwingDataSource.class); - private final EventListenerList listenerList; + private final EventListenerList listenerList; private final ObserveDataSourceConfiguration configuration; - private final ObserveReferentialCache referentialCache; - private final ObserveServicesProvider servicesProvider; - private ObserveDataSourceConnection connection; - private ProgressModel progressModel; // indique que la connexion a expiré mais que la source n'est pas complétement fermer private boolean expired; - // indique si une modification a été effectuéé sur la base depuis son ouverture private boolean modified; + // indique si l'utilisateur connecté est le propriétaire de la base private boolean owner; public ObserveSwingDataSource(ObserveDataSourceConfiguration configuration) { @@ -582,4 +560,23 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements public boolean getOwner() { return owner; } + + public void sanitizeIds(ProgressModel progressModel, DtoModelNavigationAggregateModel navigationSelectModel) { + try { + for (DtoModelNavigationModel<?> navigationModel : navigationSelectModel.getModels()) { + for (DtoModelNavigationNode node : navigationModel.getNodesWithIds()) { + if (node.isEnabled()) { + ImmutableSet<String> safeIds = getNavigationService().retainExistingIds(ImmutableSet.of(node.getId())); + if (safeIds.isEmpty()) { + node.setId(null); + } + } + progressModel.incrementsCurrentStep(); + } + } + } catch (Exception e) { + log.error("Could not sanitizeIds", e); + } + } + } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java ===================================== @@ -46,6 +46,7 @@ import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.navigation.model.edit.longline.ObserveLonglineEditModel; import fr.ird.observe.navigation.model.edit.seine.ObserveSeineEditModel; import fr.ird.observe.navigation.model.select.ObserveSelectModel; +import fr.ird.observe.services.ObserveServicesProvider; import io.ultreia.java4all.i18n.I18n; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -356,7 +357,7 @@ public class ObserveMainUIInitializer { // on met à jour le modèle de navigation NavigationTreeModel treeModel = ui.getNavigationUI().getTree().getTreeModel(); treeModel.load(config); - treeModel.populate(); + treeModel.populate(mainStorage); // selection du noeud d'ouverture ui.getNavigationUI().getTree().selectInitialNode(); @@ -563,14 +564,15 @@ public class ObserveMainUIInitializer { * * <b>Note:</b> cette méthode doit être appelée après tout rechargement de modèle de naivgation. * + * @param servicesProvider * @param progressModel the progress model to interact with ui */ - public void loadNavigationUI(ProgressModel progressModel) { + public void loadNavigationUI(ObserveServicesProvider servicesProvider, ProgressModel progressModel) { NavigationTree tree = ui.getNavigationUI().getTree(); NavigationTreeModel treeModel = tree.getTreeModel(); - treeModel.populate(); + treeModel.populate(servicesProvider); progressModel.incrementsCurrentStep(); // select initial node ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/UIActionSupport.java ===================================== @@ -22,12 +22,12 @@ package fr.ird.observe.client.ui.actions; import fr.ird.observe.client.ObserveSwingApplicationContext; -import fr.ird.observe.client.db.ObserveSwingDataSource; import fr.ird.observe.client.ui.ObserveKeyStrokes; import fr.ird.observe.client.ui.ObserveMainUI; import fr.ird.observe.client.ui.content.api.ContentUI; import fr.ird.observe.client.ui.util.UIHelper; import fr.ird.observe.services.ObserveServicesProvider; +import io.ultreia.java4all.util.SingletonSupplier; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.jdesktop.jxlayer.JXLayer; @@ -61,6 +61,7 @@ public abstract class UIActionSupport extends AbstractAction { private static final long serialVersionUID = 1L; public static final String DELEGATE_CONTENT_UI = "delegateContentUI"; private final ObserveMainUI mainUI; + private final SingletonSupplier<ObserveServicesProvider> servicesProviderSupplier = SingletonSupplier.of(ObserveSwingApplicationContext.get()::getServicesProvider); public UIActionSupport(ObserveMainUI mainUI, String actionCommandKey, String label, String shortDescription, String actionIcon, KeyStroke acceleratorKey) { this(mainUI, actionCommandKey, label, shortDescription, actionIcon, acceleratorKey, true); @@ -228,7 +229,7 @@ public abstract class UIActionSupport extends AbstractAction { } protected ObserveServicesProvider getServicesProvider() { - return ObserveSwingDataSource.MAIN; + return servicesProviderSupplier.get(); } protected ContentUI getContentUI(ContentUI contentUI) { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/tree/NavigationConfigUIActionSupport.java ===================================== @@ -43,6 +43,6 @@ public abstract class NavigationConfigUIActionSupport extends MenuActionSupport @Override protected void doActionPerformed(ActionEvent e) { - getMainUI().getNavigationUI().getHandler().tryToUpdateNavigationTree(); + getMainUI().getNavigationUI().getHandler().tryToUpdateNavigationTree(getServicesProvider()); } } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/api/ContentUIHandler.java ===================================== @@ -50,6 +50,7 @@ import fr.ird.observe.services.ObserveServicesProvider; import fr.ird.observe.services.service.ObserveService; import fr.ird.observe.spi.DtoModelHelper; import io.ultreia.java4all.bean.JavaBean; +import io.ultreia.java4all.util.SingletonSupplier; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.JAXXObject; @@ -83,7 +84,6 @@ import java.util.List; import java.util.Objects; import java.util.Optional; -import static fr.ird.observe.client.db.ObserveSwingDataSource.MAIN; import static io.ultreia.java4all.i18n.I18n.t; /** @@ -109,6 +109,8 @@ public abstract class ContentUIHandler<U extends ContentUI> implements ObserveSe private ImmutableList<TemperatureEditor> temperatureEditors; private boolean toggleTimeEditorSliderIsChanging; private boolean coordinateFormatChangedIsChanging; + protected boolean resetEdit; + private final SingletonSupplier<ObserveServicesProvider> servicesProviderSupplier; protected ContentUIHandler() { this.focusTraversalPolicy = createFocusTraversalPolicy(); @@ -120,6 +122,7 @@ public abstract class ContentUIHandler<U extends ContentUI> implements ObserveSe CoordinateFormat newValue = (CoordinateFormat) evt.getNewValue(); onCoordinateFormatChanged(newValue); }; + this.servicesProviderSupplier = SingletonSupplier.of(ObserveSwingApplicationContext.get()::getServicesProvider); } public static NavigationTree getNavigationTree() { @@ -510,7 +513,6 @@ public abstract class ContentUIHandler<U extends ContentUI> implements ObserveSe protected void uninstallValidators() { SwingValidatorUtil.setValidatorBean(ui, null); } - protected boolean resetEdit; public boolean isResetEdit() { return resetEdit; @@ -804,7 +806,7 @@ public abstract class ContentUIHandler<U extends ContentUI> implements ObserveSe @Override public <S extends ObserveService> S getService(Class<S> serviceType) { - return MAIN.getService(serviceType); + return servicesProviderSupplier.get().getService(serviceType); } // ===================================== client-core/src/main/java/fr/ird/observe/client/ui/storage/StorageUIHandler.java ===================================== @@ -618,7 +618,7 @@ public class StorageUIHandler implements UIHandler<StorageUI> { log.info(">>> create initial dump with " + currentDataSource + " in " + f); } try { - SqlScriptProducerService dumpProducerService = ObserveSwingDataSource.MAIN.getSqlScriptProducerService(); + SqlScriptProducerService dumpProducerService = currentDataSource.getSqlScriptProducerService(); backupLocalDatabase(dumpProducerService, f); config.setInitialDumpExist(true); } catch (Exception e) { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/ObserveTreeNodeSupport.java ===================================== @@ -22,8 +22,10 @@ package fr.ird.observe.client.ui.tree; * #L% */ +import fr.ird.observe.client.ObserveSwingApplicationContext; import fr.ird.observe.client.db.ObserveSwingDataSource; import fr.ird.observe.services.ObserveServicesProvider; +import io.ultreia.java4all.util.SingletonSupplier; import javax.swing.Icon; import javax.swing.tree.DefaultMutableTreeNode; @@ -37,8 +39,11 @@ import java.awt.Color; */ public abstract class ObserveTreeNodeSupport<O> extends DefaultMutableTreeNode { + private final SingletonSupplier<ObserveServicesProvider> servicesProviderSupplier; + public ObserveTreeNodeSupport(O userObject, boolean allowsChildren) { super(userObject, allowsChildren); + this.servicesProviderSupplier = SingletonSupplier.of(ObserveSwingApplicationContext.get()::getServicesProvider); } public abstract boolean isOpen(); @@ -60,7 +65,7 @@ public abstract class ObserveTreeNodeSupport<O> extends DefaultMutableTreeNode { } protected ObserveServicesProvider getServicesProvider() { - return ObserveSwingDataSource.MAIN; + return servicesProviderSupplier.get(); } } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java ===================================== @@ -42,6 +42,7 @@ import fr.ird.observe.dto.referential.common.ProgramHelper; import fr.ird.observe.dto.referential.common.ProgramReference; import fr.ird.observe.navigation.model.DtoModelNavigationModel; import fr.ird.observe.navigation.model.ObserveNavigationNode; +import fr.ird.observe.services.ObserveServicesProvider; import fr.ird.observe.services.service.data.NavigationRequest; import fr.ird.observe.services.service.data.NavigationResult; import fr.ird.observe.services.service.data.NavigationService; @@ -103,9 +104,9 @@ public class NavigationTreeModel extends DefaultTreeModel { this.config.load(config); } - public void populate() { + public void populate(ObserveServicesProvider servicesProvider) { - NavigationService navigationService = ObserveSwingDataSource.MAIN.getNavigationService(); + NavigationService navigationService = servicesProvider.getNavigationService(); NavigationRequest navigationRequest = config.toRequest(); NavigationResult navigationResult = navigationService.getNavigation(navigationRequest); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUIHandler.java ===================================== @@ -28,6 +28,7 @@ import fr.ird.observe.client.configuration.NavigationTreeConfig; import fr.ird.observe.client.ui.actions.UIActionSupport; import fr.ird.observe.client.ui.content.api.spi.ObserveActionMap; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; +import fr.ird.observe.services.ObserveServicesProvider; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.jdesktop.swingx.decorator.ColorHighlighter; @@ -152,7 +153,7 @@ public class NavigationUIHandler implements UIHandler<NavigationUI> { } - public void tryToUpdateNavigationTree() { + public void tryToUpdateNavigationTree(ObserveServicesProvider servicesProvider) { boolean canContinue = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); @@ -180,7 +181,7 @@ public class NavigationUIHandler implements UIHandler<NavigationUI> { navigationTreeConfig.setShowReferential(showReferential); navigationTreeConfig.setShowEmptyProgram(showEmptyProgram); treeModel.save(ObserveSwingApplicationContext.get().getConfig()); - treeModel.populate(); + treeModel.populate(servicesProvider); //FIXME repositionner le nœud sélectionné if (!treeModel.getRoot().isLeaf()) { tree.setSelectionRow(0); ===================================== client-core/src/main/java/fr/ird/observe/client/validation/ClientValidationContext.java ===================================== @@ -56,7 +56,7 @@ public class ClientValidationContext extends ValidationContext { } public ObserveServicesProvider getServicesProvider() { - return ObserveSwingDataSource.MAIN; + return ObserveSwingApplicationContext.get().getServicesProvider(); } @Override ===================================== dto/src/main/i18n/getters/java.getter ===================================== @@ -17,8 +17,6 @@ observe.common.gps.activity observe.common.gps.gpsPoint observe.common.inconnu observe.common.no.unit -observe.common.nocode -observe.common.none observe.data.Data.baitHaulingStatus observe.data.Data.captain observe.data.Data.dataQuality ===================================== dto/src/main/java/fr/ird/observe/dto/decoration/DecoratorService.java ===================================== @@ -22,16 +22,8 @@ package fr.ird.observe.dto.decoration; * #L% */ -import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; -import fr.ird.observe.dto.decoration.decorators.ReferentialReferenceDecorator; -import fr.ird.observe.dto.reference.DataDtoReference; -import fr.ird.observe.dto.reference.DtoReference; -import fr.ird.observe.dto.reference.ReferentialDtoReference; import fr.ird.observe.dto.referential.ReferentialLocale; -import org.nuiton.decorator.Decorator; -import org.nuiton.decorator.DecoratorProvider; - -import java.util.Objects; +import fr.ird.observe.spi.model.initializer.ObserveGlobalModelInitializer; /** @@ -40,60 +32,23 @@ import java.util.Objects; * @author Tony Chemit - dev(a)tchemit.fr * @since 1.3 */ -public class DecoratorService extends DecoratorProvider { +public class DecoratorService extends DecoratorServiceSupport<DecoratorServiceInitializer> { public static final String HAULING_IDENTIFIER = "haulingIdentifier"; public static final String TRIP_CONTEXT = "Trip"; public static final String WITH_URL = "WithUrl"; - private final DecoratorServiceInitializer initializer; - private ReferentialLocale referentialLocale; - public DecoratorService(ReferentialLocale referentialLocale) { - this.referentialLocale = Objects.requireNonNull(referentialLocale); - this.initializer = new DecoratorServiceInitializer(this); - loadDecorators(); - } - - public ReferentialLocale getReferentialLocale() { - return referentialLocale; - } - - public void setReferentialLocale(ReferentialLocale referentialLocale) { - this.referentialLocale = referentialLocale; + super(referentialLocale); } @Override - protected void loadDecorators() { - if (referentialLocale == null) { - // on n'enregistre pas les décorateur tant que la locale n'est pas - // positionnée - return; - } - DecoratorServiceInitializer.run(initializer); - } - - public <T extends ReferentialDtoReference> ReferentialReferenceDecorator<T> getReferentialReferenceDecorator(Class<T> referenceType) { - return (ReferentialReferenceDecorator) getDecoratorByType(referenceType); + protected DecoratorServiceInitializer createDecoratorServiceInitializer() { + return new DecoratorServiceInitializer(this); } - public <R extends DataDtoReference> DataReferenceDecorator<R> getDataReferenceDecorator(Class<R> referenceType) { - return (DataReferenceDecorator) getDecoratorByType(referenceType); - } - - public <R extends DataDtoReference> DataReferenceDecorator<R> getDataReferenceDecorator(Class<R> referenceType, String context) { - return (DataReferenceDecorator) getDecoratorByType(referenceType, context); - } - - public <R extends DtoReference> Decorator<R> getReferenceDecorator(Class<R> referenceType) { - Decorator<R> decorator; - - if (DataDtoReference.class.isAssignableFrom(referenceType)) { - decorator = getDataReferenceDecorator((Class) referenceType); - } else { - decorator = getReferentialReferenceDecorator((Class) referenceType); - } - - return decorator; + @Override + protected void init(DecoratorServiceInitializer initializer) { + ObserveGlobalModelInitializer.run(initializer); } } ===================================== dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ObserveDecorator.java deleted ===================================== @@ -1,140 +0,0 @@ -/* - * #%L - * ObServe :: Dto - * %% - * Copyright (C) 2008 - 2019 IRD, Code Lutin, Ultreia.io - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -package fr.ird.observe.dto.decoration.decorators; - -import fr.ird.observe.dto.reference.DtoReference; -import org.apache.commons.jxpath.JXPathContext; -import org.apache.commons.lang3.StringUtils; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.nuiton.decorator.MultiJXPathDecorator; - -import java.io.Serializable; - -import static io.ultreia.java4all.i18n.I18n.t; - -/** - * Abstract decorator for any complex decorator. - * - * @author Tony Chemit - dev(a)tchemit.fr - * @since 2.4 - */ -public class ObserveDecorator<E> extends MultiJXPathDecorator<E> implements Cloneable { - - private static final long serialVersionUID = 1L; - - /** Logger. */ - private static final Logger log = LogManager.getLogger(ObserveDecorator.class); - - public static final String DEFAULT_SEPARATOR = "##"; - - public static final String DEFAULT_SEPARATOR_REPLACEMENT = " - "; - - public ObserveDecorator(Class<E> internalClass, String expression) { - super(internalClass, expression, DEFAULT_SEPARATOR, DEFAULT_SEPARATOR_REPLACEMENT); - } - - public ObserveDecorator(Class<E> internalClass, String expression, String separator) { - super(internalClass, expression, DEFAULT_SEPARATOR, separator); - } - - @Override - public final Object clone() throws CloneNotSupportedException { - return super.clone(); - } - - protected Comparable<Comparable<?>> getTokenValue(JXPathContext jxcontext, String token) { - // assume all values are comparable - Comparable<Comparable<?>> value; - - try { - - String[] tokens = token.split("/"); - - Object value0 = jxcontext.getValue(tokens[0]); - - if (value0 instanceof DtoReference) { - - value = getValueFromReference(tokens, (DtoReference<?, ?>) value0, 1); - - } else { - - value = (Comparable<Comparable<?>>) jxcontext.getValue(token); - } - - if (value == null) { - value = (Comparable<Comparable<?>>) getDefaultNullValue(token); - } - - } catch (Exception e) { - value = (Comparable<Comparable<?>>) getDefaultUndefinedValue(token); - } - - return value; - } - - protected Comparable<Comparable<?>> getValueFromReference(String[] tokens, DtoReference<?, ?> referenceBean, int startIndex) { - - for (int i = startIndex, max = tokens.length - 1; i < max; i++) { - - if (referenceBean.getPropertyNames().contains(tokens[i])) { - - Serializable propertyValue = referenceBean.getPropertyValue(tokens[i]); - - if (!(propertyValue instanceof DtoReference)) { - - return (Comparable<Comparable<?>>) getDefaultUndefinedValue(StringUtils.join(tokens, "/")); - - } - - referenceBean = (DtoReference<?, ?>) propertyValue; - } - } - - Comparable<Comparable<?>> value = null; - - String lastToken = tokens[tokens.length - 1]; - if (referenceBean.getPropertyNames().contains(lastToken)) { - value = referenceBean.getPropertyValue(lastToken); - } else { - value = referenceBean.get(lastToken); - } - - return value; - } - - protected Comparable<?> getDefaultUndefinedValue(String token) { - if (log.isDebugEnabled()) { - log.debug("No defined value for token [" + token + "]"); - } - return t("observe.common.none"); - } - - protected Comparable<?> getDefaultNullValue(String token) { - if (log.isDebugEnabled()) { - log.debug("Null value for token [" + token + "]"); - } - return t("observe.common.none"); - } - - -} ===================================== dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ReferentialReferenceDecorator.java deleted ===================================== @@ -1,102 +0,0 @@ -package fr.ird.observe.dto.decoration.decorators; - -/*- - * #%L - * ObServe :: Dto - * %% - * Copyright (C) 2008 - 2019 IRD, Code Lutin, 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.reference.ReferentialDtoReference; -import fr.ird.observe.dto.referential.ReferentialDto; -import org.apache.commons.jxpath.JXPathContext; -import org.apache.commons.lang3.StringUtils; -import org.nuiton.decorator.JXPathDecorator; - -import java.util.List; - -import static io.ultreia.java4all.i18n.I18n.t; - -/** - * @author Kevin Morin (Code Lutin) - */ -public class ReferentialReferenceDecorator<R extends ReferentialDtoReference> extends ObserveDecorator<R> implements Cloneable { - - private static final long serialVersionUID = 1L; - - public ReferentialReferenceDecorator(Class<R> type, String expression) { - super(type, expression); - for (int i = 0; i < nbToken; i++) { - String property = getProperty(i); - if (ReferentialDto.PROPERTY_CODE.equals(property)) { - - // On change le comparateur pour simuler le tri numérique si possible. - contexts[i].setComparator(new JXPathComparator<R>(property) { - - @Override - public void init(JXPathDecorator<R> decorator, List<R> datas) { - clear(); - for (R data : datas) { - JXPathContext jxcontext = JXPathContext.newContext(data); - Comparable<Comparable<?>> key = getTokenValue(jxcontext, ReferentialDto.PROPERTY_CODE); - // on passe en 000000x comme ça si on a des nombres, ils seront bien triés - String value = key == null ? "" : StringUtils.leftPad(key.toString(), 6, "0"); - valueCache.put(data, (Comparable) value); - } - } - }); - break; - } - } - } - - @Override - protected Comparable<Comparable<?>> getTokenValue(JXPathContext jxcontext, String token) { - - - // assume all values are comparable - Comparable<Comparable<?>> value; - - Object contextBean = jxcontext.getContextBean(); - - if (contextBean instanceof ReferentialDtoReference) { - - String[] tokens = token.split("/"); - - value = getValueFromReference(tokens, (ReferentialDtoReference) contextBean, 0); - - if (value == null) { - value = (Comparable<Comparable<?>>) getDefaultNullValue(tokens[0]); - } - - } else { - value = super.getTokenValue(jxcontext, token); - } - - return value; - - } - - @Override - protected Comparable<?> getDefaultNullValue(String token) { - if (token.equals("startDate") || token.equals("endDate")) { - return null; - } - return ReferentialDto.PROPERTY_CODE.equals(token) ? t("observe.common.nocode") : super.getDefaultNullValue(token); - } -} ===================================== observe-i18n/src/main/i18n/translations/observe_en_GB.properties ===================================== @@ -426,8 +426,6 @@ observe.common.inconnu=Unknown observe.common.label=Label observe.common.lengthWeightFormula=Length weight formula observe.common.no.unit=No unit -observe.common.nocode=Nocode -observe.common.none=None observe.common.operation.resume=Summary of operations observe.common.resume=Summary observe.common.saveFile.overwrite=file alreayd exists, would you like to overwrite it? ===================================== observe-i18n/src/main/i18n/translations/observe_es_ES.properties ===================================== @@ -426,8 +426,6 @@ observe.common.inconnu=desconocido observe.common.label=Texto observe.common.lengthWeightFormula=Relación de peso observe.common.no.unit=No unit \#TODO -observe.common.nocode=codigo ausente -observe.common.none=Ninguno observe.common.operation.resume=Resumen de operaciones observe.common.resume=Resumen de la configuración observe.common.saveFile.overwrite=El archivo ya existe. Quiere reemplazar lo ? ===================================== observe-i18n/src/main/i18n/translations/observe_fr_FR.properties ===================================== @@ -426,8 +426,6 @@ observe.common.inconnu=inconnu observe.common.label=Libellé observe.common.lengthWeightFormula=Relation Poids observe.common.no.unit=Pas d'unité -observe.common.nocode=code absent -observe.common.none=Aucun observe.common.operation.resume=Résumé des opérations observe.common.resume=Résumé de la configuration observe.common.saveFile.overwrite=Le fichier existe déjà. Voulez-vous le remplacer ? ===================================== services-validation/src/main/java/fr/ird/observe/services/ObserveServicesProviderImpl.java ===================================== @@ -23,7 +23,6 @@ package fr.ird.observe.services; */ import fr.ird.observe.services.service.ObserveService; -import fr.ird.observe.services.service.data.ll.common.TripService; import java.util.Objects; @@ -32,7 +31,7 @@ import java.util.Objects; * * @author Tony Chemit - dev(a)tchemit.fr */ -public class ObserveServicesProviderImpl implements ObserveServicesProvider { +public class ObserveServicesProviderImpl extends ObserveServicesProviderSupport { private final ObserveServiceFactory serviceFactory; private final ObserveServiceInitializer serviceInitializer; @@ -42,22 +41,6 @@ public class ObserveServicesProviderImpl implements ObserveServicesProvider { this.serviceInitializer = Objects.requireNonNull(serviceInitializer); } - @Override - public void close() { - } - - //FIXME If we do not set this, OGNL can't find it on default implementation on interface :( - @Override - public TripService getLlCommonTripService() { - return getService(TripService.class); - } - - //FIXME If we do not set this, OGNL can't find it on default implementation on interface :( - @Override - public fr.ird.observe.services.service.data.ps.common.TripService getPsCommonTripService() { - return getService(fr.ird.observe.services.service.data.ps.common.TripService.class); - } - @Override public <S extends ObserveService> S getService(Class<S> serviceType) { return serviceFactory.newService(serviceInitializer, serviceType); ===================================== dto/src/main/java/fr/ird/observe/dto/decoration/decorators/DataReferenceDecorator.java → services-validation/src/main/java/fr/ird/observe/services/ObserveServicesProviderSupport.java ===================================== @@ -1,8 +1,8 @@ -package fr.ird.observe.dto.decoration.decorators; +package fr.ird.observe.services; /*- * #%L - * ObServe :: Dto + * ObServe :: Services Validation API * %% * Copyright (C) 2008 - 2019 IRD, Code Lutin, Ultreia.io * %% @@ -22,50 +22,24 @@ package fr.ird.observe.dto.decoration.decorators; * #L% */ -import fr.ird.observe.dto.reference.DataDtoReference; -import fr.ird.observe.dto.reference.DtoReference; -import org.apache.commons.jxpath.JXPathContext; +import io.ultreia.java4all.bean.AbstractJavaBean; -/** - * @author Kevin Morin (Code Lutin) - */ -public class DataReferenceDecorator<R extends DataDtoReference> extends ObserveDecorator<R> implements Cloneable { - - private static final long serialVersionUID = 1L; +public abstract class ObserveServicesProviderSupport extends AbstractJavaBean implements ObserveServicesProvider { - public DataReferenceDecorator(Class<R> type, String expression) { - super(type, expression); + @Override + public void close() { + // by default nothing to do on close } + //FIXME If we do not set this, OGNL can't find it on default implementation on interface :( @Override - protected Comparable<Comparable<?>> getTokenValue(JXPathContext jxcontext, String token) { - - // assume all values are comparable - Comparable<Comparable<?>> value; - - Object contextBean = jxcontext.getContextBean(); - - if (contextBean instanceof DtoReference) { - - String[] tokens = token.split("/"); - - value = getValueFromReference(tokens, (DtoReference) contextBean, 0); - - if (value == null) { - value = (Comparable<Comparable<?>>) getDefaultNullValue(tokens[0]); - } - - } else { - value = super.getTokenValue(jxcontext, token); - } - - return value; - + public fr.ird.observe.services.service.data.ll.common.TripService getLlCommonTripService() { + return getService(fr.ird.observe.services.service.data.ll.common.TripService.class); } + //FIXME If we do not set this, OGNL can't find it on default implementation on interface :( @Override - public String toString(Object bean) { - String result = super.toString(bean); - return result == null ? null : result.trim(); + public fr.ird.observe.services.service.data.ps.common.TripService getPsCommonTripService() { + return getService(fr.ird.observe.services.service.data.ps.common.TripService.class); } } ===================================== services-validation/src/main/java/fr/ird/observe/validation/validators/TripVesselDtoValidator.java ===================================== @@ -75,7 +75,7 @@ public class TripVesselDtoValidator extends FieldValidatorSupport { private void validate(Object object, String id, VesselReference vessel, Date startDate, Date endDate) throws ValidationException { - TripService tripService = (TripService) getFieldValue(serviceName, object); + TripService tripService = (TripService) Objects.requireNonNull(getFieldValue(serviceName, object),"Can't find "+serviceName); Set<? extends TripReference> matchingTrips = tripService.getMatchingTripsVesselWithinDateRange(id, vessel.getId(), startDate, ===================================== validation/src/main/resources/fr/ird/observe/dto/data/ll/common/TripDto-create-error-validation.xml ===================================== @@ -39,7 +39,7 @@ <message/> </field-validator> <field-validator type="tripVessel" short-circuit="true"> - <param name="serviceName">servicesProvider.llCommonTripLonglineService</param> + <param name="serviceName">servicesProvider.llCommonTripService</param> <message/> </field-validator> </field> ===================================== validation/src/main/resources/fr/ird/observe/dto/data/ll/common/TripDto-update-error-validation.xml ===================================== @@ -41,7 +41,7 @@ <message/> </field-validator> <field-validator type="tripVessel" short-circuit="true"> - <param name="serviceName">servicesProvider.llCommonTripLonglineService</param> + <param name="serviceName">servicesProvider.llCommonTripService</param> <message/> </field-validator> </field> View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/57b501c2a3dde82446521e5962… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/57b501c2a3dde82446521e5962… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-9] 25 commits: Use Decorators from toolkit
by Tony CHEMIT 06 Aug '19

06 Aug '19
Tony CHEMIT pushed to branch develop-9 at ultreiaio / ird-observe Commits: 57b501c2 by tchemit at 2019-08-06T21:56:29Z Use Decorators from toolkit - - - - - cbeb7670 by tchemit at 2019-08-06T21:56:42Z [CARTE] Symboles de cartes pour V8 et V9 - Refactor code - See #1343 - - - - - 84168268 by tchemit at 2019-08-06T21:56:42Z Réorganisation des données d’observation PS - Réorganisation des captures et échantillons de cible et bycatch observés - See #1254 - - - - - bb819306 by tchemit at 2019-08-06T21:56:42Z Move to new version 9.0-alpha-1 - - - - - 66b75373 by tchemit at 2019-08-06T21:56:43Z Réorganisation des données d’observation PS - Re localisation dans la hiérarchie - Closes #1252 - - - - - 86558964 by tchemit at 2019-08-06T21:56:43Z Module 2 (first flush) - - - - - b215c3a8 by tchemit at 2019-08-06T21:56:43Z [PS] Contenu des onglets spécifiques observations et logbooks et le formulaire marée - See #1300 - - - - - a7d3f22c by tchemit at 2019-08-06T21:56:44Z Module 2 - second flush - - - - - 9f2e5fdc by tchemit at 2019-08-06T21:56:44Z Report from v8 for ps logbook model - - - - - 36dcd691 by tchemit at 2019-08-06T21:56:44Z Choix de nouvelles couleurs pour les symboles de la carte LL - Closes #1293 - - - - - f8f35490 by tchemit at 2019-08-06T21:56:44Z [CARTE] Symboles de cartes pour V8 et V9 - Realign for Ps model - See #1343 - - - - - 4003ce2b by tchemit at 2019-08-06T21:56:44Z Consolidation des champs techniques en base - Realing on v9 - See #1353 - - - - - 9d596e95 by tchemit at 2019-08-06T21:56:45Z Insertion des lots de débarquements - See #1259 - - - - - 06b0f266 by tchemit at 2019-08-06T21:56:45Z Insertion du plan de cuves - See #1260 - - - - - 51703659 by tchemit at 2019-08-06T21:56:46Z Insertion de l’échantillonnage au port - See #1261 - - - - - 61a50121 by tchemit at 2019-08-06T21:56:46Z Création de nouvelles icônes de navigation - Pass for v9 - See #1358 - - - - - 4cedfe3a by tchemit at 2019-08-06T21:56:46Z First realign i18n after develop merge - - - - - 25a618c9 by tchemit at 2019-08-06T21:56:47Z Realign Seine model (no more any Seine in any Seine data - - - - - ed1afa1e by tchemit at 2019-08-06T21:56:47Z optimize i18n - - - - - 7b76d9e4 by tchemit at 2019-08-06T21:56:47Z Use new ServicesProvider (everything is now generated) (report on v9) - - - - - 8616fb7f by tchemit at 2019-08-06T21:56:47Z Normalize seine services names - - - - - 20109228 by tchemit at 2019-08-06T21:56:47Z Align logbook referential - See #1332 - - - - - 185400ad by tchemit at 2019-08-06T21:56:48Z realign after big rebase from develop - - - - - b2b45d94 by tchemit at 2019-08-06T21:56:48Z Add package priority tag value and generate new package model initializers - - - - - b71178ac by tchemit at 2019-08-06T21:56:48Z Refactor decorator service init using new per package model initializer. - - - - - 30 changed files: - .mvn/pom.gitflow.develop - .mvn/pom.gitflow.master - client-configuration/.mvn/pom.gitflow.develop - client-configuration/.mvn/pom.gitflow.master - client-configuration/pom.xml - client-configuration/src/main/config/Client.ini - client-configuration/src/main/i18n/getters/config.getter - client-configuration/src/main/i18n/getters/java.getter - client-core/.mvn/pom.gitflow.develop - client-core/.mvn/pom.gitflow.master - client-core/pom.xml - client-core/src/license/THIRD-PARTY.properties - client-core/src/main/dcp-presets/ps/logbook/01-deployment-preset.yml - client-core/src/main/dcp-presets/ps/logbook/02-removal-preset.yml - client-core/src/main/dcp-presets/ps/logbook/03-update-preset.yml - client-core/src/main/dcp-presets/ps/logbook/04-abandonned-preset.yml - client-core/src/main/i18n/getters/java.getter - client-core/src/main/i18n/getters/jaxx.getter - client-core/src/main/java/fr/ird/observe/client/navigation/RouteCloseCallback.java - client-core/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jcss - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/SelectTransshipmentLandingLonglineUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/delete/DeleteTripLonglineLandingUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/move/MoveMultipleTripLonglineLandingUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/move/MoveSingleTripLonglineLandingUIAction.java - + client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ps/ChooseRelatedObservedActivityUIAction.java - + client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ps/add/AddSampleSpeciesSeineUIAction.java - + client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ps/delete/DeleteSampleSeineUIAction.java The diff was not included because it is too large. View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/9fadbe423f0f42868c5d6fb479… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/9fadbe423f0f42868c5d6fb479… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] Use Decorators from toolkit
by Tony CHEMIT 06 Aug '19

06 Aug '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 57b501c2 by tchemit at 2019-08-06T21:56:29Z Use Decorators from toolkit - - - - - 7 changed files: - dto/src/main/i18n/getters/java.getter - − dto/src/main/java/fr/ird/observe/dto/decoration/decorators/DataReferenceDecorator.java - − dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ObserveDecorator.java - − dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ReferentialReferenceDecorator.java - observe-i18n/src/main/i18n/translations/observe_en_GB.properties - observe-i18n/src/main/i18n/translations/observe_es_ES.properties - observe-i18n/src/main/i18n/translations/observe_fr_FR.properties Changes: ===================================== dto/src/main/i18n/getters/java.getter ===================================== @@ -17,8 +17,6 @@ observe.common.gps.activity observe.common.gps.gpsPoint observe.common.inconnu observe.common.no.unit -observe.common.nocode -observe.common.none observe.data.Data.baitHaulingStatus observe.data.Data.captain observe.data.Data.dataQuality ===================================== dto/src/main/java/fr/ird/observe/dto/decoration/decorators/DataReferenceDecorator.java deleted ===================================== @@ -1,71 +0,0 @@ -package fr.ird.observe.dto.decoration.decorators; - -/*- - * #%L - * ObServe :: Dto - * %% - * Copyright (C) 2008 - 2019 IRD, Code Lutin, 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.reference.DataDtoReference; -import fr.ird.observe.dto.reference.DtoReference; -import org.apache.commons.jxpath.JXPathContext; - -/** - * @author Kevin Morin (Code Lutin) - */ -public class DataReferenceDecorator<R extends DataDtoReference> extends ObserveDecorator<R> implements Cloneable { - - private static final long serialVersionUID = 1L; - - public DataReferenceDecorator(Class<R> type, String expression) { - super(type, expression); - } - - @Override - protected Comparable<Comparable<?>> getTokenValue(JXPathContext jxcontext, String token) { - - // assume all values are comparable - Comparable<Comparable<?>> value; - - Object contextBean = jxcontext.getContextBean(); - - if (contextBean instanceof DtoReference) { - - String[] tokens = token.split("/"); - - value = getValueFromReference(tokens, (DtoReference) contextBean, 0); - - if (value == null) { - value = (Comparable<Comparable<?>>) getDefaultNullValue(tokens[0]); - } - - } else { - value = super.getTokenValue(jxcontext, token); - } - - return value; - - } - - @Override - public String toString(Object bean) { - String result = super.toString(bean); - return result == null ? null : result.trim(); - } -} ===================================== dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ObserveDecorator.java deleted ===================================== @@ -1,140 +0,0 @@ -/* - * #%L - * ObServe :: Dto - * %% - * Copyright (C) 2008 - 2019 IRD, Code Lutin, Ultreia.io - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -package fr.ird.observe.dto.decoration.decorators; - -import fr.ird.observe.dto.reference.DtoReference; -import org.apache.commons.jxpath.JXPathContext; -import org.apache.commons.lang3.StringUtils; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.nuiton.decorator.MultiJXPathDecorator; - -import java.io.Serializable; - -import static io.ultreia.java4all.i18n.I18n.t; - -/** - * Abstract decorator for any complex decorator. - * - * @author Tony Chemit - dev(a)tchemit.fr - * @since 2.4 - */ -public class ObserveDecorator<E> extends MultiJXPathDecorator<E> implements Cloneable { - - private static final long serialVersionUID = 1L; - - /** Logger. */ - private static final Logger log = LogManager.getLogger(ObserveDecorator.class); - - public static final String DEFAULT_SEPARATOR = "##"; - - public static final String DEFAULT_SEPARATOR_REPLACEMENT = " - "; - - public ObserveDecorator(Class<E> internalClass, String expression) { - super(internalClass, expression, DEFAULT_SEPARATOR, DEFAULT_SEPARATOR_REPLACEMENT); - } - - public ObserveDecorator(Class<E> internalClass, String expression, String separator) { - super(internalClass, expression, DEFAULT_SEPARATOR, separator); - } - - @Override - public final Object clone() throws CloneNotSupportedException { - return super.clone(); - } - - protected Comparable<Comparable<?>> getTokenValue(JXPathContext jxcontext, String token) { - // assume all values are comparable - Comparable<Comparable<?>> value; - - try { - - String[] tokens = token.split("/"); - - Object value0 = jxcontext.getValue(tokens[0]); - - if (value0 instanceof DtoReference) { - - value = getValueFromReference(tokens, (DtoReference<?, ?>) value0, 1); - - } else { - - value = (Comparable<Comparable<?>>) jxcontext.getValue(token); - } - - if (value == null) { - value = (Comparable<Comparable<?>>) getDefaultNullValue(token); - } - - } catch (Exception e) { - value = (Comparable<Comparable<?>>) getDefaultUndefinedValue(token); - } - - return value; - } - - protected Comparable<Comparable<?>> getValueFromReference(String[] tokens, DtoReference<?, ?> referenceBean, int startIndex) { - - for (int i = startIndex, max = tokens.length - 1; i < max; i++) { - - if (referenceBean.getPropertyNames().contains(tokens[i])) { - - Serializable propertyValue = referenceBean.getPropertyValue(tokens[i]); - - if (!(propertyValue instanceof DtoReference)) { - - return (Comparable<Comparable<?>>) getDefaultUndefinedValue(StringUtils.join(tokens, "/")); - - } - - referenceBean = (DtoReference<?, ?>) propertyValue; - } - } - - Comparable<Comparable<?>> value = null; - - String lastToken = tokens[tokens.length - 1]; - if (referenceBean.getPropertyNames().contains(lastToken)) { - value = referenceBean.getPropertyValue(lastToken); - } else { - value = referenceBean.get(lastToken); - } - - return value; - } - - protected Comparable<?> getDefaultUndefinedValue(String token) { - if (log.isDebugEnabled()) { - log.debug("No defined value for token [" + token + "]"); - } - return t("observe.common.none"); - } - - protected Comparable<?> getDefaultNullValue(String token) { - if (log.isDebugEnabled()) { - log.debug("Null value for token [" + token + "]"); - } - return t("observe.common.none"); - } - - -} ===================================== dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ReferentialReferenceDecorator.java deleted ===================================== @@ -1,102 +0,0 @@ -package fr.ird.observe.dto.decoration.decorators; - -/*- - * #%L - * ObServe :: Dto - * %% - * Copyright (C) 2008 - 2019 IRD, Code Lutin, 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.reference.ReferentialDtoReference; -import fr.ird.observe.dto.referential.ReferentialDto; -import org.apache.commons.jxpath.JXPathContext; -import org.apache.commons.lang3.StringUtils; -import org.nuiton.decorator.JXPathDecorator; - -import java.util.List; - -import static io.ultreia.java4all.i18n.I18n.t; - -/** - * @author Kevin Morin (Code Lutin) - */ -public class ReferentialReferenceDecorator<R extends ReferentialDtoReference> extends ObserveDecorator<R> implements Cloneable { - - private static final long serialVersionUID = 1L; - - public ReferentialReferenceDecorator(Class<R> type, String expression) { - super(type, expression); - for (int i = 0; i < nbToken; i++) { - String property = getProperty(i); - if (ReferentialDto.PROPERTY_CODE.equals(property)) { - - // On change le comparateur pour simuler le tri numérique si possible. - contexts[i].setComparator(new JXPathComparator<R>(property) { - - @Override - public void init(JXPathDecorator<R> decorator, List<R> datas) { - clear(); - for (R data : datas) { - JXPathContext jxcontext = JXPathContext.newContext(data); - Comparable<Comparable<?>> key = getTokenValue(jxcontext, ReferentialDto.PROPERTY_CODE); - // on passe en 000000x comme ça si on a des nombres, ils seront bien triés - String value = key == null ? "" : StringUtils.leftPad(key.toString(), 6, "0"); - valueCache.put(data, (Comparable) value); - } - } - }); - break; - } - } - } - - @Override - protected Comparable<Comparable<?>> getTokenValue(JXPathContext jxcontext, String token) { - - - // assume all values are comparable - Comparable<Comparable<?>> value; - - Object contextBean = jxcontext.getContextBean(); - - if (contextBean instanceof ReferentialDtoReference) { - - String[] tokens = token.split("/"); - - value = getValueFromReference(tokens, (ReferentialDtoReference) contextBean, 0); - - if (value == null) { - value = (Comparable<Comparable<?>>) getDefaultNullValue(tokens[0]); - } - - } else { - value = super.getTokenValue(jxcontext, token); - } - - return value; - - } - - @Override - protected Comparable<?> getDefaultNullValue(String token) { - if (token.equals("startDate") || token.equals("endDate")) { - return null; - } - return ReferentialDto.PROPERTY_CODE.equals(token) ? t("observe.common.nocode") : super.getDefaultNullValue(token); - } -} ===================================== observe-i18n/src/main/i18n/translations/observe_en_GB.properties ===================================== @@ -426,8 +426,6 @@ observe.common.inconnu=Unknown observe.common.label=Label observe.common.lengthWeightFormula=Length weight formula observe.common.no.unit=No unit -observe.common.nocode=Nocode -observe.common.none=None observe.common.operation.resume=Summary of operations observe.common.resume=Summary observe.common.saveFile.overwrite=file alreayd exists, would you like to overwrite it? ===================================== observe-i18n/src/main/i18n/translations/observe_es_ES.properties ===================================== @@ -426,8 +426,6 @@ observe.common.inconnu=desconocido observe.common.label=Texto observe.common.lengthWeightFormula=Relación de peso observe.common.no.unit=No unit \#TODO -observe.common.nocode=codigo ausente -observe.common.none=Ninguno observe.common.operation.resume=Resumen de operaciones observe.common.resume=Resumen de la configuración observe.common.saveFile.overwrite=El archivo ya existe. Quiere reemplazar lo ? ===================================== observe-i18n/src/main/i18n/translations/observe_fr_FR.properties ===================================== @@ -426,8 +426,6 @@ observe.common.inconnu=inconnu observe.common.label=Libellé observe.common.lengthWeightFormula=Relation Poids observe.common.no.unit=Pas d'unité -observe.common.nocode=code absent -observe.common.none=Aucun observe.common.operation.resume=Résumé des opérations observe.common.resume=Résumé de la configuration observe.common.saveFile.overwrite=Le fichier existe déjà. Voulez-vous le remplacer ? View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/57b501c2a3dde82446521e5962e… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/57b501c2a3dde82446521e5962e… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] Use DecoratorServiceSupport from toolkit
by Tony CHEMIT 06 Aug '19

06 Aug '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 993693f2 by tchemit at 2019-08-06T20:38:35Z Use DecoratorServiceSupport from toolkit - - - - - 1 changed file: - dto/src/main/java/fr/ird/observe/dto/decoration/DecoratorService.java Changes: ===================================== dto/src/main/java/fr/ird/observe/dto/decoration/DecoratorService.java ===================================== @@ -22,16 +22,8 @@ package fr.ird.observe.dto.decoration; * #L% */ -import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; -import fr.ird.observe.dto.decoration.decorators.ReferentialReferenceDecorator; -import fr.ird.observe.dto.reference.DataDtoReference; -import fr.ird.observe.dto.reference.DtoReference; -import fr.ird.observe.dto.reference.ReferentialDtoReference; import fr.ird.observe.dto.referential.ReferentialLocale; -import org.nuiton.decorator.Decorator; -import org.nuiton.decorator.DecoratorProvider; - -import java.util.Objects; +import fr.ird.observe.spi.model.initializer.ObserveGlobalModelInitializer; /** @@ -40,60 +32,23 @@ import java.util.Objects; * @author Tony Chemit - dev(a)tchemit.fr * @since 1.3 */ -public class DecoratorService extends DecoratorProvider { +public class DecoratorService extends DecoratorServiceSupport<DecoratorServiceInitializer> { public static final String HAULING_IDENTIFIER = "haulingIdentifier"; public static final String TRIP_CONTEXT = "Trip"; public static final String WITH_URL = "WithUrl"; - private final DecoratorServiceInitializer initializer; - private ReferentialLocale referentialLocale; - public DecoratorService(ReferentialLocale referentialLocale) { - this.referentialLocale = Objects.requireNonNull(referentialLocale); - this.initializer = new DecoratorServiceInitializer(this); - loadDecorators(); - } - - public ReferentialLocale getReferentialLocale() { - return referentialLocale; - } - - public void setReferentialLocale(ReferentialLocale referentialLocale) { - this.referentialLocale = referentialLocale; + super(referentialLocale); } @Override - protected void loadDecorators() { - if (referentialLocale == null) { - // on n'enregistre pas les décorateur tant que la locale n'est pas - // positionnée - return; - } - DecoratorServiceInitializer.run(initializer); - } - - public <T extends ReferentialDtoReference> ReferentialReferenceDecorator<T> getReferentialReferenceDecorator(Class<T> referenceType) { - return (ReferentialReferenceDecorator) getDecoratorByType(referenceType); + protected DecoratorServiceInitializer createDecoratorServiceInitializer() { + return new DecoratorServiceInitializer(this); } - public <R extends DataDtoReference> DataReferenceDecorator<R> getDataReferenceDecorator(Class<R> referenceType) { - return (DataReferenceDecorator) getDecoratorByType(referenceType); - } - - public <R extends DataDtoReference> DataReferenceDecorator<R> getDataReferenceDecorator(Class<R> referenceType, String context) { - return (DataReferenceDecorator) getDecoratorByType(referenceType, context); - } - - public <R extends DtoReference> Decorator<R> getReferenceDecorator(Class<R> referenceType) { - Decorator<R> decorator; - - if (DataDtoReference.class.isAssignableFrom(referenceType)) { - decorator = getDataReferenceDecorator((Class) referenceType); - } else { - decorator = getReferentialReferenceDecorator((Class) referenceType); - } - - return decorator; + @Override + protected void init(DecoratorServiceInitializer initializer) { + ObserveGlobalModelInitializer.run(initializer); } } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/993693f25d43ccbfbf7a491a976… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/993693f25d43ccbfbf7a491a976… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-9] 25 commits: Use DecoratorServiceSupport from toolkit
by Tony CHEMIT 06 Aug '19

06 Aug '19
Tony CHEMIT pushed to branch develop-9 at ultreiaio / ird-observe Commits: 993693f2 by tchemit at 2019-08-06T20:38:35Z Use DecoratorServiceSupport from toolkit - - - - - 5680349d by tchemit at 2019-08-06T20:38:56Z [CARTE] Symboles de cartes pour V8 et V9 - Refactor code - See #1343 - - - - - ee971c76 by tchemit at 2019-08-06T20:38:56Z Réorganisation des données d’observation PS - Réorganisation des captures et échantillons de cible et bycatch observés - See #1254 - - - - - c093ee8c by tchemit at 2019-08-06T20:38:56Z Move to new version 9.0-alpha-1 - - - - - 35807bf8 by tchemit at 2019-08-06T20:38:56Z Réorganisation des données d’observation PS - Re localisation dans la hiérarchie - Closes #1252 - - - - - 5e013021 by tchemit at 2019-08-06T20:38:57Z Module 2 (first flush) - - - - - a82ad11f by tchemit at 2019-08-06T20:38:57Z [PS] Contenu des onglets spécifiques observations et logbooks et le formulaire marée - See #1300 - - - - - a66772be by tchemit at 2019-08-06T20:38:57Z Module 2 - second flush - - - - - e5270f68 by tchemit at 2019-08-06T20:38:57Z Report from v8 for ps logbook model - - - - - 3b6d96db by tchemit at 2019-08-06T20:38:57Z Choix de nouvelles couleurs pour les symboles de la carte LL - Closes #1293 - - - - - 8f0b42c5 by tchemit at 2019-08-06T20:38:57Z [CARTE] Symboles de cartes pour V8 et V9 - Realign for Ps model - See #1343 - - - - - cfabeb43 by tchemit at 2019-08-06T20:38:58Z Consolidation des champs techniques en base - Realing on v9 - See #1353 - - - - - 44e5b105 by tchemit at 2019-08-06T20:38:58Z Insertion des lots de débarquements - See #1259 - - - - - bc0f193a by tchemit at 2019-08-06T20:38:59Z Insertion du plan de cuves - See #1260 - - - - - 423a5e0b by tchemit at 2019-08-06T20:38:59Z Insertion de l’échantillonnage au port - See #1261 - - - - - 84b794e3 by tchemit at 2019-08-06T20:38:59Z Création de nouvelles icônes de navigation - Pass for v9 - See #1358 - - - - - 5bf94b9c by tchemit at 2019-08-06T20:39:00Z First realign i18n after develop merge - - - - - abede883 by tchemit at 2019-08-06T20:39:00Z Realign Seine model (no more any Seine in any Seine data - - - - - acc228fe by tchemit at 2019-08-06T20:39:00Z optimize i18n - - - - - 61272478 by tchemit at 2019-08-06T20:39:00Z Use new ServicesProvider (everything is now generated) (report on v9) - - - - - a369bbaf by tchemit at 2019-08-06T20:39:00Z Normalize seine services names - - - - - 4b99cdb6 by tchemit at 2019-08-06T20:39:01Z Align logbook referential - See #1332 - - - - - 9a67dac6 by tchemit at 2019-08-06T20:39:01Z realign after big rebase from develop - - - - - ac77f0f9 by tchemit at 2019-08-06T20:39:01Z Add package priority tag value and generate new package model initializers - - - - - 9fadbe42 by tchemit at 2019-08-06T20:39:01Z Refactor decorator service init using new per package model initializer. - - - - - 30 changed files: - .mvn/pom.gitflow.develop - .mvn/pom.gitflow.master - client-configuration/.mvn/pom.gitflow.develop - client-configuration/.mvn/pom.gitflow.master - client-configuration/pom.xml - client-configuration/src/main/config/Client.ini - client-configuration/src/main/i18n/getters/config.getter - client-configuration/src/main/i18n/getters/java.getter - client-core/.mvn/pom.gitflow.develop - client-core/.mvn/pom.gitflow.master - client-core/pom.xml - client-core/src/license/THIRD-PARTY.properties - client-core/src/main/dcp-presets/ps/logbook/01-deployment-preset.yml - client-core/src/main/dcp-presets/ps/logbook/02-removal-preset.yml - client-core/src/main/dcp-presets/ps/logbook/03-update-preset.yml - client-core/src/main/dcp-presets/ps/logbook/04-abandonned-preset.yml - client-core/src/main/i18n/getters/java.getter - client-core/src/main/i18n/getters/jaxx.getter - client-core/src/main/java/fr/ird/observe/client/navigation/RouteCloseCallback.java - client-core/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jcss - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/SelectTransshipmentLandingLonglineUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/delete/DeleteTripLonglineLandingUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/move/MoveMultipleTripLonglineLandingUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/move/MoveSingleTripLonglineLandingUIAction.java - + client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ps/ChooseRelatedObservedActivityUIAction.java - + client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ps/add/AddSampleSpeciesSeineUIAction.java - + client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ps/delete/DeleteSampleSeineUIAction.java The diff was not included because it is too large. View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/aae984f1538d09c73e358e7bf6… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/aae984f1538d09c73e358e7bf6… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-9] 26 commits: Add package priority tag value and generate new package model initializers
by Tony CHEMIT 06 Aug '19

06 Aug '19
Tony CHEMIT pushed to branch develop-9 at ultreiaio / ird-observe Commits: edff8e6d by tchemit at 2019-08-06T16:25:05Z Add package priority tag value and generate new package model initializers - - - - - ecbc7cda by tchemit at 2019-08-06T16:48:10Z Refactor decorator service init using new per package model initializer. - - - - - ba66172d by tchemit at 2019-08-06T16:54:51Z [CARTE] Symboles de cartes pour V8 et V9 - Refactor code - See #1343 - - - - - e0cadc3e by tchemit at 2019-08-06T16:55:11Z Réorganisation des données d’observation PS - Réorganisation des captures et échantillons de cible et bycatch observés - See #1254 - - - - - c2ef3e86 by tchemit at 2019-08-06T16:55:11Z Move to new version 9.0-alpha-1 - - - - - d91cbd66 by tchemit at 2019-08-06T16:55:11Z Réorganisation des données d’observation PS - Re localisation dans la hiérarchie - Closes #1252 - - - - - bea2c935 by tchemit at 2019-08-06T16:59:07Z Module 2 (first flush) - - - - - 5435a725 by tchemit at 2019-08-06T16:59:55Z [PS] Contenu des onglets spécifiques observations et logbooks et le formulaire marée - See #1300 - - - - - e479331f by tchemit at 2019-08-06T16:59:56Z Module 2 - second flush - - - - - d497799d by tchemit at 2019-08-06T16:59:56Z Report from v8 for ps logbook model - - - - - f713e7b8 by tchemit at 2019-08-06T16:59:56Z Choix de nouvelles couleurs pour les symboles de la carte LL - Closes #1293 - - - - - c7d3e281 by tchemit at 2019-08-06T16:59:56Z [CARTE] Symboles de cartes pour V8 et V9 - Realign for Ps model - See #1343 - - - - - 0c7a88bc by tchemit at 2019-08-06T16:59:56Z Consolidation des champs techniques en base - Realing on v9 - See #1353 - - - - - d319a80d by tchemit at 2019-08-06T17:00:12Z Insertion des lots de débarquements - See #1259 - - - - - e9aa5d7e by tchemit at 2019-08-06T17:00:27Z Insertion du plan de cuves - See #1260 - - - - - d63200a6 by tchemit at 2019-08-06T17:00:42Z Insertion de l’échantillonnage au port - See #1261 - - - - - b0646d72 by tchemit at 2019-08-06T17:00:42Z Création de nouvelles icônes de navigation - Pass for v9 - See #1358 - - - - - 30eb2e3d by tchemit at 2019-08-06T17:00:56Z First realign i18n after develop merge - - - - - 11e4c9a0 by tchemit at 2019-08-06T17:01:10Z Realign Seine model (no more any Seine in any Seine data - - - - - 82b96ca7 by tchemit at 2019-08-06T17:01:10Z optimize i18n - - - - - 0d072e1e by tchemit at 2019-08-06T17:01:10Z Use new ServicesProvider (everything is now generated) (report on v9) - - - - - 947590f0 by tchemit at 2019-08-06T17:01:10Z Normalize seine services names - - - - - 431f08ce by tchemit at 2019-08-06T17:01:24Z Align logbook referential - See #1332 - - - - - d578562a by tchemit at 2019-08-06T17:01:36Z realign after big rebase from develop - - - - - 6f561da8 by tchemit at 2019-08-06T17:01:36Z Add package priority tag value and generate new package model initializers - - - - - aae984f1 by tchemit at 2019-08-06T17:02:09Z Refactor decorator service init using new per package model initializer. - - - - - 30 changed files: - .mvn/pom.gitflow.develop - .mvn/pom.gitflow.master - client-configuration/.mvn/pom.gitflow.develop - client-configuration/.mvn/pom.gitflow.master - client-configuration/pom.xml - client-configuration/src/main/config/Client.ini - client-configuration/src/main/i18n/getters/config.getter - client-configuration/src/main/i18n/getters/java.getter - client-core/.mvn/pom.gitflow.develop - client-core/.mvn/pom.gitflow.master - client-core/pom.xml - client-core/src/license/THIRD-PARTY.properties - client-core/src/main/dcp-presets/ps/logbook/01-deployment-preset.yml - client-core/src/main/dcp-presets/ps/logbook/02-removal-preset.yml - client-core/src/main/dcp-presets/ps/logbook/03-update-preset.yml - client-core/src/main/dcp-presets/ps/logbook/04-abandonned-preset.yml - client-core/src/main/i18n/getters/java.getter - client-core/src/main/i18n/getters/jaxx.getter - client-core/src/main/java/fr/ird/observe/client/navigation/RouteCloseCallback.java - client-core/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jcss - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/SelectTransshipmentLandingLonglineUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/delete/DeleteTripLonglineLandingUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/move/MoveMultipleTripLonglineLandingUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/move/MoveSingleTripLonglineLandingUIAction.java - + client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ps/ChooseRelatedObservedActivityUIAction.java - + client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ps/add/AddSampleSpeciesSeineUIAction.java - + client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ps/delete/DeleteSampleSeineUIAction.java The diff was not included because it is too large. View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/4f279c6c45ea0a183ab8c983cd… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/4f279c6c45ea0a183ab8c983cd… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] 3 commits: realign validation context (miss two functions)
by Tony CHEMIT 06 Aug '19

06 Aug '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: d3c3d80c by tchemit at 2019-08-06T10:41:04Z realign validation context (miss two functions) - - - - - edff8e6d by tchemit at 2019-08-06T16:25:05Z Add package priority tag value and generate new package model initializers - - - - - ecbc7cda by tchemit at 2019-08-06T16:48:10Z Refactor decorator service init using new per package model initializer. - - - - - 30 changed files: - client-core/src/main/java/fr/ird/observe/client/validation/ClientValidationContext.java - dto/pom.xml - dto/src/main/java/fr/ird/observe/dto/decoration/DecoratorService.java - + dto/src/main/java/fr/ird/observe/dto/decoration/DecoratorServiceInitializer.java - + dto/src/main/java/fr/ird/observe/dto/decoration/init/DataLlCommonModelDecoratorInitializer.java - + dto/src/main/java/fr/ird/observe/dto/decoration/init/DataLlLandingModelDecoratorInitializer.java - + dto/src/main/java/fr/ird/observe/dto/decoration/init/DataLlLogbookModelDecoratorInitializer.java - + dto/src/main/java/fr/ird/observe/dto/decoration/init/DataLlObservationModelDecoratorInitializer.java - + dto/src/main/java/fr/ird/observe/dto/decoration/init/DataPsCommonModelDecoratorInitializer.java - + dto/src/main/java/fr/ird/observe/dto/decoration/init/DataPsObservationModelDecoratorInitializer.java - + dto/src/main/java/fr/ird/observe/dto/decoration/init/ModelDecoratorInitializerSupport.java - + dto/src/main/java/fr/ird/observe/dto/decoration/init/ReferentialCommonModelDecoratorInitializer.java - + dto/src/main/java/fr/ird/observe/dto/decoration/init/ReferentialLlCommonModelDecoratorInitializer.java - + dto/src/main/java/fr/ird/observe/dto/decoration/init/ReferentialLlLandingModelDecoratorInitializer.java - + dto/src/main/java/fr/ird/observe/dto/decoration/init/ReferentialLlObservationModelDecoratorInitializer.java - + dto/src/main/java/fr/ird/observe/dto/decoration/init/ReferentialPsCommonModelDecoratorInitializer.java - + dto/src/main/java/fr/ird/observe/dto/decoration/init/ReferentialPsObservationModelDecoratorInitializer.java - dto/src/main/models/Observe-01-referential-common.model - dto/src/main/models/Observe-02-referential-ps-common.model - dto/src/main/models/Observe-03-referential-ps-observation.model - dto/src/main/models/Observe-10-referential-ll-common.model - dto/src/main/models/Observe-11-referential-ll-observation.model - dto/src/main/models/Observe-12-referential-ll-logbook.model - dto/src/main/models/Observe-13-referential-ll-landing.model - dto/src/main/models/Observe-20-data-ps-observation.model - dto/src/main/models/Observe-25-data-ps.model - dto/src/main/models/Observe-30-data-ll-observation.model - dto/src/main/models/Observe-31-data-ll-logbook.model - dto/src/main/models/Observe-32-data-ll-landing.model - dto/src/main/models/Observe-35-data-ll.model The diff was not included because it is too large. View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/48bb8ae891bfe9a4b4d8cc332d… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/48bb8ae891bfe9a4b4d8cc332d… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-9] 23 commits: realign validation context (miss two functions)
by Tony CHEMIT 06 Aug '19

06 Aug '19
Tony CHEMIT pushed to branch develop-9 at ultreiaio / ird-observe Commits: d3c3d80c by tchemit at 2019-08-06T10:41:04Z realign validation context (miss two functions) - - - - - d67db735 by tchemit at 2019-08-06T10:41:13Z [CARTE] Symboles de cartes pour V8 et V9 - Refactor code - See #1343 - - - - - bda13134 by tchemit at 2019-08-06T10:41:13Z Réorganisation des données d’observation PS - Réorganisation des captures et échantillons de cible et bycatch observés - See #1254 - - - - - 1a90c921 by tchemit at 2019-08-06T10:41:13Z Move to new version 9.0-alpha-1 - - - - - 5baf8812 by tchemit at 2019-08-06T10:41:13Z Réorganisation des données d’observation PS - Re localisation dans la hiérarchie - Closes #1252 - - - - - af215864 by tchemit at 2019-08-06T10:43:51Z Module 2 (first flush) - - - - - 107db27d by tchemit at 2019-08-06T10:43:52Z [PS] Contenu des onglets spécifiques observations et logbooks et le formulaire marée - See #1300 - - - - - 86a95259 by tchemit at 2019-08-06T10:43:52Z Module 2 - second flush - - - - - 1f0c35e0 by tchemit at 2019-08-06T10:43:52Z Report from v8 for ps logbook model - - - - - bb23e606 by tchemit at 2019-08-06T10:43:52Z Choix de nouvelles couleurs pour les symboles de la carte LL - Closes #1293 - - - - - 84eefdee by tchemit at 2019-08-06T10:43:52Z [CARTE] Symboles de cartes pour V8 et V9 - Realign for Ps model - See #1343 - - - - - 596a29f9 by tchemit at 2019-08-06T10:43:53Z Consolidation des champs techniques en base - Realing on v9 - See #1353 - - - - - 182ba795 by tchemit at 2019-08-06T10:43:53Z Insertion des lots de débarquements - See #1259 - - - - - 8a9f5882 by tchemit at 2019-08-06T10:43:53Z Insertion du plan de cuves - See #1260 - - - - - 6d3bf510 by tchemit at 2019-08-06T10:43:54Z Insertion de l’échantillonnage au port - See #1261 - - - - - b0bd300c by tchemit at 2019-08-06T10:43:54Z Création de nouvelles icônes de navigation - Pass for v9 - See #1358 - - - - - 93fcf3f7 by tchemit at 2019-08-06T10:43:54Z First realign i18n after develop merge - - - - - e7027d9c by tchemit at 2019-08-06T10:43:55Z Realign Seine model (no more any Seine in any Seine data - - - - - 6912515a by tchemit at 2019-08-06T10:43:55Z optimize i18n - - - - - ebbc17a1 by tchemit at 2019-08-06T10:43:55Z Use new ServicesProvider (everything is now generated) (report on v9) - - - - - 5a4fe84f by tchemit at 2019-08-06T10:43:55Z Normalize seine services names - - - - - d66e99d3 by tchemit at 2019-08-06T10:43:56Z Align logbook referential - See #1332 - - - - - 4f279c6c by tchemit at 2019-08-06T10:43:56Z realign after big rebase from develop - - - - - 30 changed files: - .mvn/pom.gitflow.develop - .mvn/pom.gitflow.master - client-configuration/.mvn/pom.gitflow.develop - client-configuration/.mvn/pom.gitflow.master - client-configuration/pom.xml - client-configuration/src/main/config/Client.ini - client-configuration/src/main/i18n/getters/config.getter - client-configuration/src/main/i18n/getters/java.getter - client-core/.mvn/pom.gitflow.develop - client-core/.mvn/pom.gitflow.master - client-core/pom.xml - client-core/src/license/THIRD-PARTY.properties - client-core/src/main/dcp-presets/ps/logbook/01-deployment-preset.yml - client-core/src/main/dcp-presets/ps/logbook/02-removal-preset.yml - client-core/src/main/dcp-presets/ps/logbook/03-update-preset.yml - client-core/src/main/dcp-presets/ps/logbook/04-abandonned-preset.yml - client-core/src/main/i18n/getters/java.getter - client-core/src/main/i18n/getters/jaxx.getter - client-core/src/main/java/fr/ird/observe/client/navigation/RouteCloseCallback.java - client-core/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jcss - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/SelectTransshipmentLandingLonglineUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/delete/DeleteTripLonglineLandingUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/move/MoveMultipleTripLonglineLandingUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ll/move/MoveSingleTripLonglineLandingUIAction.java - + client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ps/ChooseRelatedObservedActivityUIAction.java - + client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ps/add/AddSampleSpeciesSeineUIAction.java - + client-core/src/main/java/fr/ird/observe/client/ui/actions/content/data/ps/delete/DeleteSampleSeineUIAction.java The diff was not included because it is too large. View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/c21f2f94d153b7e9e57b35c25e… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/c21f2f94d153b7e9e57b35c25e… You're receiving this email because of your account on gitlab.com.
1 0
0 0
  • ← Newer
  • 1
  • 2
  • 3
  • 4
  • 5
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.