branch feature/8404 updated (587b746 -> f6609dd)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8404 in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git from 587b746 la date de début peut-être nulle new af93bf1 ajout d'un icon new aa8b3b3 Ajout sizeMeasureType sur nonTargetSample et mise en place type de mensuration par défaut new f6609dd Ajout validation de sizeMeasureType sur NonTargetLength The 3 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit f6609dd61769b259529ed0ba0282a65117479549 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 6 12:03:03 2016 +0100 Ajout validation de sizeMeasureType sur NonTargetLength commit aa8b3b337dbd8957f9e15ee0fec0f511b56b93cf Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 6 12:02:43 2016 +0100 Ajout sizeMeasureType sur nonTargetSample et mise en place type de mensuration par défaut commit af93bf166e2c43b254aeae34b0c3bae3b79d1ad6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 6 12:01:44 2016 +0100 ajout d'un icon Summary of changes: ...nTargetLengthDto-ui-update-error-validation.xml | 17 ++++ .../application-swing-validation_en_GB.properties | 2 + .../application-swing-validation_es_ES.properties | 2 + .../application-swing-validation_fr_FR.properties | 3 +- .../src/main/filters/observe-ui.properties | 1 + .../content/table/impl/seine/AbstractSampleUI.jcss | 49 ++++++++++ .../table/impl/seine/AbstractSampleUIHandler.java | 36 ++++---- .../table/impl/seine/NonTargetSampleUI.jaxx | 37 ++++---- .../table/impl/seine/NonTargetSampleUI.jcss | 25 ------ .../table/impl/seine/NonTargetSampleUIHandler.java | 72 +++++++++++++-- .../table/impl/seine/NonTargetSampleUIModel.java | 26 ++++-- .../content/table/impl/seine/TargetSampleUI.jaxx | 4 +- .../content/table/impl/seine/TargetSampleUI.jcss | 45 ---------- .../table/impl/seine/TargetSampleUIHandler.java | 100 +++++++++++++++------ .../table/impl/seine/TargetSampleUIModel.java | 20 ++++- .../i18n/application-swing_en_GB.properties | 1 + .../i18n/application-swing_es_ES.properties | 1 + .../i18n/application-swing_fr_FR.properties | 1 + .../ReferentialReferenceSetDefinitions.java | 4 +- .../dto/referential/SizeMeasureTypeHelper.java | 17 ---- .../services/topia/binder/BinderSupport.java | 10 +++ .../topia/binder/data/ActivityLonglineBinder.java | 4 +- .../topia/binder/data/ActivitySeineBinder.java | 4 +- .../topia/binder/data/NonTargetLengthBinder.java | 4 + .../topia/binder/data/TripLonglineBinder.java | 8 +- .../topia/binder/data/TripSeineBinder.java | 4 +- .../topia/binder/referential/SpeciesBinder.java | 4 +- 27 files changed, 327 insertions(+), 174 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8404 in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit af93bf166e2c43b254aeae34b0c3bae3b79d1ad6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 6 12:01:44 2016 +0100 ajout d'un icon --- application-swing/src/main/filters/observe-ui.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/application-swing/src/main/filters/observe-ui.properties b/application-swing/src/main/filters/observe-ui.properties index 4c13a7f..45bbae6 100644 --- a/application-swing/src/main/filters/observe-ui.properties +++ b/application-swing/src/main/filters/observe-ui.properties @@ -87,6 +87,7 @@ icon.action.cancel=action-cancel.png icon.action.closeTab=action-closeTab.png icon.action.combobox-sort=action-combobox-sort.png icon.action.combobox-reset=action-combobox-reset.png +icon.action.combobox-reset2=action-combobox-reset2.png icon.action.data-observe=action-data-observe.png icon.action.data-calcule=action-data-calcule.png icon.action.numbereditor-reset=action-numbereditor-reset.png -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8404 in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit aa8b3b337dbd8957f9e15ee0fec0f511b56b93cf Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 6 12:02:43 2016 +0100 Ajout sizeMeasureType sur nonTargetSample et mise en place type de mensuration par défaut --- .../content/table/impl/seine/AbstractSampleUI.jcss | 49 ++++++++++ .../table/impl/seine/AbstractSampleUIHandler.java | 36 ++++---- .../table/impl/seine/NonTargetSampleUI.jaxx | 37 ++++---- .../table/impl/seine/NonTargetSampleUI.jcss | 25 ------ .../table/impl/seine/NonTargetSampleUIHandler.java | 72 +++++++++++++-- .../table/impl/seine/NonTargetSampleUIModel.java | 26 ++++-- .../content/table/impl/seine/TargetSampleUI.jaxx | 4 +- .../content/table/impl/seine/TargetSampleUI.jcss | 45 ---------- .../table/impl/seine/TargetSampleUIHandler.java | 100 +++++++++++++++------ .../table/impl/seine/TargetSampleUIModel.java | 20 ++++- .../i18n/application-swing_en_GB.properties | 1 + .../i18n/application-swing_es_ES.properties | 1 + .../i18n/application-swing_fr_FR.properties | 1 + .../ReferentialReferenceSetDefinitions.java | 4 +- .../dto/referential/SizeMeasureTypeHelper.java | 17 ---- .../services/topia/binder/BinderSupport.java | 10 +++ .../topia/binder/data/ActivityLonglineBinder.java | 4 +- .../topia/binder/data/ActivitySeineBinder.java | 4 +- .../topia/binder/data/NonTargetLengthBinder.java | 4 + .../topia/binder/data/TripLonglineBinder.java | 8 +- .../topia/binder/data/TripSeineBinder.java | 4 +- .../topia/binder/referential/SpeciesBinder.java | 4 +- 22 files changed, 303 insertions(+), 173 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/AbstractSampleUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/AbstractSampleUI.jcss index 2abd16d..8aeb4fc 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/AbstractSampleUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/AbstractSampleUI.jcss @@ -59,6 +59,55 @@ JToolBar { selectedItem:{tableEditBean.getSex()}; } +#modeAndCodePanel { + layout:{new GridLayout(1,0)}; +} + +#acquisitionModeGroup { + selectedValue:{ModeSaisieEchantillonEnum.valueOf(tableEditBean.getAcquisitionMode())}; +} + +#acquisitionModePanel { + border:{new TitledBorder(t("observe.common.acquisitionMode"))}; + layout:{new GridLayout(1,0)}; +} + +#acquisitionModeEffectif { + buttonGroup:"acquisitionModeGroup"; + value:{ModeSaisieEchantillonEnum.byEffectif}; + text:{ModeSaisieEchantillonEnum.byEffectif.getI18nKey()}; + selected:{tableEditBean.getAcquisitionMode() == 0}; + enabled:{!tableModel.isEditable() || tableModel.isCreate()}; +} + +#acquisitionModeIndividu { + buttonGroup:"acquisitionModeGroup"; + value:{ModeSaisieEchantillonEnum.byIndividu}; + text:{ModeSaisieEchantillonEnum.byIndividu.getI18nKey()}; + selected:{tableEditBean.getAcquisitionMode() == 1}; + enabled:{!tableModel.isEditable() || tableModel.isCreate()}; +} + +#sizeMeasureTypePanel { + border:{new TitledBorder(t("observe.common.sizeMeasureType"))}; +} + +#sizeMeasureTypeLabel { + labelFor:{sizeMeasureType}; +} + +#sizeMeasureType { + _entityClass:{SizeMeasureTypeDto.class}; + property:sizeMeasureType; + bean:{tableEditBean}; + _tablePropertyName:{"sizeMeasureType"}; + selectedItem:{tableEditBean.getSizeMeasureType()}; +} + +#defaultSizeMeasureType { + actionIcon:combobox-reset2; + toolTipText:"observe.content.sample.resetDefaultSizeMeasureType"; +} #lengthLabel { labelFor:{length}; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/AbstractSampleUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/AbstractSampleUIHandler.java index 147bc54..fbf67dc 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/AbstractSampleUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/AbstractSampleUIHandler.java @@ -26,7 +26,8 @@ import fr.ird.observe.application.swing.db.constants.DataContextType; import fr.ird.observe.application.swing.ui.content.table.ContentTableUIHandler; import fr.ird.observe.application.swing.ui.content.table.ObserveContentTableUI; import fr.ird.observe.services.dto.IdDto; -import fr.ird.observe.services.dto.seine.NonTargetLengthDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; +import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.seine.TargetLengthDto; import java.beans.PropertyChangeListener; @@ -57,25 +58,25 @@ public abstract class AbstractSampleUIHandler<E extends IdDto, D extends IdDto> */ protected final PropertyChangeListener lengthChanged; + /** + * Ecoute les modifications de la propriété {@link TargetLengthDto#getLength()}, + * et repasser alors le flag {@link TargetLengthDto#isIsLengthComputed()} à + * {@code false}. + * + * @since 3.0 + */ + protected final PropertyChangeListener speciesChanged; + protected AbstractSampleUIHandler(ObserveContentTableUI<E, D> ui) { super(ui, DataContextType.SetSeine); weightChanged = evt -> { - if (evt.getSource() instanceof TargetLengthDto) { - TargetLengthDto source = (TargetLengthDto) evt.getSource(); - source.setIsWeightComputed(false); - } else if (evt.getSource() instanceof NonTargetLengthDto) { - NonTargetLengthDto source = (NonTargetLengthDto) evt.getSource(); - source.setIsWeightComputed(false); - } + onWeightChanged((Float) evt.getNewValue()); }; lengthChanged = evt -> { - if (evt.getSource() instanceof TargetLengthDto) { - TargetLengthDto source = (TargetLengthDto) evt.getSource(); - source.setIsLengthComputed(false); - } else if (evt.getSource() instanceof NonTargetLengthDto) { - NonTargetLengthDto source = (NonTargetLengthDto) evt.getSource(); - source.setIsLengthComputed(false); - } + onLengthChanged((Float) evt.getNewValue()); + }; + speciesChanged = evt -> { + onSpeciesChanged((ReferentialReference<SpeciesDto>) evt.getNewValue()); }; } @@ -83,4 +84,9 @@ public abstract class AbstractSampleUIHandler<E extends IdDto, D extends IdDto> public abstract void resetIsLengthComputed(); + protected abstract void onSpeciesChanged(ReferentialReference<SpeciesDto> species); + + protected abstract void onWeightChanged(Float newValue); + + protected abstract void onLengthChanged(Float newValue); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetSampleUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetSampleUI.jaxx index 3e6a70f..cc648fa 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetSampleUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetSampleUI.jaxx @@ -21,10 +21,10 @@ --> <fr.ird.observe.application.swing.ui.content.table.ContentTableUI - superGenericType='NonTargetSampleDto, NonTargetLengthDto' - contentTitle='{n("observe.common.nonTargetSample")}' - saveNewEntryText='{n("observe.content.action.create.nonTargetSample")}' - saveNewEntryTip='{n("observe.content.action.create.nonTargetSample.tip")}'> + superGenericType='NonTargetSampleDto, NonTargetLengthDto' + contentTitle='{n("observe.common.nonTargetSample")}' + saveNewEntryText='{n("observe.content.action.create.nonTargetSample")}' + saveNewEntryTip='{n("observe.content.action.create.nonTargetSample.tip")}'> <style source="../../CommonTable.jcss"/> <style source="AbstractSampleUI.jcss"/> @@ -32,6 +32,7 @@ <import> fr.ird.observe.services.dto.CommentableDto fr.ird.observe.services.dto.referential.SexDto + fr.ird.observe.services.dto.referential.SizeMeasureTypeDto fr.ird.observe.services.dto.referential.SpeciesDto fr.ird.observe.services.dto.referential.ReferentialReference fr.ird.observe.services.dto.referential.seine.SpeciesFateDto @@ -110,10 +111,19 @@ public String getSpeciesFauneTypeTaille(ReferentialReference<SpeciesDto> species <!-- mode de saisie --> <row> - <cell columns="2"> - <JPanel id='acquisitionModePanel'> - <JRadioButton id='acquisitionModeEffectif'/> - <JRadioButton id='acquisitionModeIndividu'/> + <cell columns="3"> + <JPanel id="modeAndCodePanel"> + <JPanel id='acquisitionModePanel'> + <JRadioButton id='acquisitionModeEffectif'/> + <JRadioButton id='acquisitionModeIndividu'/> + </JPanel> + <JPanel id='sizeMeasureTypePanel' layout='{new BorderLayout()}'> + <JLabel id='sizeMeasureTypeLabel' constraints="BorderLayout.WEST"/> + <BeanComboBox id='sizeMeasureType' genericType='ReferentialReference<SizeMeasureTypeDto>' + constructorParams='this' constraints="BorderLayout.CENTER"/> + <JButton id="defaultSizeMeasureType" constraints="BorderLayout.EAST" + onActionPerformed="getHandler().resetDefaultSizeMeasureType()"/> + </JPanel> </JPanel> </cell> </row> @@ -128,16 +138,6 @@ public String getSpeciesFauneTypeTaille(ReferentialReference<SpeciesDto> species </cell> </row> - <!-- species faune (type taille) --> - <row> - <cell> - <JLabel id='speciesTypeTailleLabel'/> - </cell> - <cell weightx='1' anchor='east'> - <JLabel id='speciesTypeTaille'/> - </cell> - </row> - <!-- length --> <row> <cell> @@ -199,7 +199,6 @@ public String getSpeciesFauneTypeTaille(ReferentialReference<SpeciesDto> species </cell> </row> - <!-- reference pĥoto --> <row> <cell> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetSampleUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetSampleUI.jcss index a921312..47226c2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetSampleUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetSampleUI.jcss @@ -35,31 +35,6 @@ _entityClass:{SpeciesFateDto.class}; } -#acquisitionModeGroup { - selectedValue:{ModeSaisieEchantillonEnum.valueOf(tableEditBean.getAcquisitionMode())}; -} - -#acquisitionModePanel { - border:{new TitledBorder(t("observe.common.acquisitionMode"))}; - layout:{new GridLayout(1,0)}; -} - -#acquisitionModeEffectif { - buttonGroup:"acquisitionModeGroup"; - value:{ModeSaisieEchantillonEnum.byEffectif}; - text:{ModeSaisieEchantillonEnum.byEffectif.getI18nKey()}; - selected:{tableEditBean.getAcquisitionMode() == 0}; - enabled:{!tableModel.isEditable() || tableModel.isCreate()}; -} - -#acquisitionModeIndividu { - buttonGroup:"acquisitionModeGroup"; - value:{ModeSaisieEchantillonEnum.byIndividu}; - text:{ModeSaisieEchantillonEnum.byIndividu.getI18nKey()}; - selected:{tableEditBean.getAcquisitionMode() == 1}; - enabled:{!tableModel.isEditable() || tableModel.isCreate()}; -} - #lengthLabel { text:"observe.common.taille"; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetSampleUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetSampleUIHandler.java index 9cdbd92..d3799a8 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetSampleUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetSampleUIHandler.java @@ -31,6 +31,7 @@ import fr.ird.observe.services.dto.Form; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.dto.referential.SexDto; +import fr.ird.observe.services.dto.referential.SizeMeasureTypeDto; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.referential.seine.SpeciesFateDto; import fr.ird.observe.services.dto.result.SaveResultDto; @@ -49,6 +50,7 @@ import javax.swing.table.DefaultTableCellRenderer; import java.util.Collection; import java.util.LinkedList; import java.util.List; +import java.util.Optional; import java.util.Set; import static org.nuiton.i18n.I18n.n; @@ -84,6 +86,26 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS getUi().getLength().grabFocus(); } + + @Override + protected void onWeightChanged(Float newValue) { + getTableEditBean().setIsWeightComputed(false); + } + + @Override + protected void onLengthChanged(Float newValue) { + getTableEditBean().setIsLengthComputed(false); + } + + @Override + protected void onSpeciesChanged(ReferentialReference<SpeciesDto> species) { + + // on utilise le code par defaut de l'espèce + Optional<ReferentialReference<SizeMeasureTypeDto>> sizeMeasureType = getSpeciesDefaultSizeMeasureType(species); + getUi().getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null)); + + } + @Override protected String getEditBeanIdToLoad() { return getDataContext().getSelectedSetId(); @@ -100,6 +122,12 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS return; } + + NonTargetLengthDto tableEditBean = getTableEditBean(); + tableEditBean.removePropertyChangeListener(NonTargetLengthDto.PROPERTY_WEIGHT, weightChanged); + tableEditBean.removePropertyChangeListener(NonTargetLengthDto.PROPERTY_LENGTH, lengthChanged); + tableEditBean.removePropertyChangeListener(NonTargetLengthDto.PROPERTY_SPECIES, speciesChanged); + ReferentialReference<SpeciesDto> species = bean.getSpecies(); NonTargetSampleUI ui = getUi(); if (log.isDebugEnabled()) { @@ -107,6 +135,7 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS } List<ReferentialReference<SpeciesDto>> availableEspeces; JComponent requestFocus; + Optional<ReferentialReference<SizeMeasureTypeDto>> sizeMeasureType; if (create) { @@ -118,8 +147,12 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS } Set<ReferentialReference<SpeciesDto>> speciesReferences = getModel().getReferentialReferences(NonTargetLengthDto.PROPERTY_SPECIES); - availableEspeces = Lists.newArrayList(speciesReferences); + + // on utilise le code par defaut de l'espèce + sizeMeasureType = getSpeciesDefaultSizeMeasureType(species); + getUi().getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null)); + requestFocus = ui.getSpecies(); } else { @@ -133,16 +166,23 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS ui.getAcquisitionModeGroup().setSelectedValue(enumValue); availableEspeces = Lists.newArrayList(species); + + sizeMeasureType = Optional.ofNullable(bean.getSizeMeasureType()); + + } + + ui.getSizeMeasureType().setSelectedItem(null); + if (sizeMeasureType.isPresent()) { + ui.getSizeMeasureType().setSelectedItem(sizeMeasureType.get()); } + ui.getSpecies().setData(availableEspeces); requestFocus.requestFocus(); - NonTargetLengthDto tableEditBean = getTableEditBean(); - tableEditBean.removePropertyChangeListener(NonTargetLengthDto.PROPERTY_WEIGHT, weightChanged); tableEditBean.addPropertyChangeListener(NonTargetLengthDto.PROPERTY_WEIGHT, weightChanged); - - tableEditBean.removePropertyChangeListener(NonTargetLengthDto.PROPERTY_LENGTH, lengthChanged); tableEditBean.addPropertyChangeListener(NonTargetLengthDto.PROPERTY_LENGTH, lengthChanged); + tableEditBean.addPropertyChangeListener(NonTargetLengthDto.PROPERTY_SPECIES, speciesChanged); + } @Override @@ -263,6 +303,11 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS } } + public void resetDefaultSizeMeasureType() { + getUi().getSizeMeasureType().setSelectedItem(null); + getUi().getSizeMeasureType().setSelectedItem(getUi().getModel().getDefaultSizeMeasureType()); + } + @Override protected void doPersist(NonTargetSampleDto bean) { @@ -274,8 +319,13 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS @Override protected void loadEditBean(String beanId) { Form<NonTargetSampleDto> form = getNonTargetSampleService().loadForm(beanId); + // on a besoin du formulaire dans cette méthode getModel().setForm(form); loadReferentialReferenceSetsInModel(form); + // on demande une mises à jour des uis avec les bons référentiels + // normalement cela est fait quand on fait le setForm (mais ici le setForm est fait trop tôt) + updateUiWithReferenceSetsFromModel(); + NonTargetSampleHelper.copyNonTargetSampleDto(form.getObject(), getBean()); } @@ -319,4 +369,16 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS protected NonTargetSampleService getNonTargetSampleService() { return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newNonTargetSampleService(); } + + protected Optional<ReferentialReference<SizeMeasureTypeDto>> getSpeciesDefaultSizeMeasureType(ReferentialReference<SpeciesDto> species) { + Optional<ReferentialReference<SizeMeasureTypeDto>> result = Optional.empty(); + if (species != null) { + + String sizeMeasureId = (String) species.getPropertyValue(SpeciesDto.PROPERTY_SIZE_MEASURE_TYPE + "Id"); + result = getUi().getSizeMeasureType().getData().stream() + .filter(s -> s.getId().equals(sizeMeasureId)).findFirst(); + } + return result; + } + } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetSampleUIModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetSampleUIModel.java index 946b1da..3087dba 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetSampleUIModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetSampleUIModel.java @@ -22,16 +22,18 @@ package fr.ird.observe.application.swing.ui.content.table.impl.seine; * #L% */ -import com.google.common.collect.Lists; import com.google.common.collect.Sets; -import fr.ird.observe.services.dto.seine.NonTargetLengthDto; -import fr.ird.observe.services.dto.seine.NonTargetLengthHelper; -import fr.ird.observe.services.dto.seine.NonTargetSampleDto; import fr.ird.observe.application.swing.ui.content.table.ContentTableMeta; import fr.ird.observe.application.swing.ui.content.table.ContentTableModel; import fr.ird.observe.application.swing.ui.content.table.ContentTableUIModel; import fr.ird.observe.application.swing.ui.content.table.ObserveContentTableUI; +import fr.ird.observe.services.dto.referential.ReferentialReference; +import fr.ird.observe.services.dto.referential.SizeMeasureTypeDto; +import fr.ird.observe.services.dto.seine.NonTargetLengthDto; +import fr.ird.observe.services.dto.seine.NonTargetLengthHelper; +import fr.ird.observe.services.dto.seine.NonTargetSampleDto; +import java.util.Arrays; import java.util.Collection; import java.util.List; @@ -45,6 +47,10 @@ public class NonTargetSampleUIModel extends ContentTableUIModel<NonTargetSampleD private static final long serialVersionUID = 1L; + public static final String PROPERTY_DEFAULT_SIZE_MEASURE_TYPE="defaultSizeMeasureType"; + + private ReferentialReference<SizeMeasureTypeDto> defaultSizeMeasureType; + public NonTargetSampleUIModel(NonTargetSampleUI ui) { super(NonTargetSampleDto.class, @@ -64,7 +70,7 @@ public class NonTargetSampleUIModel extends ContentTableUIModel<NonTargetSampleD NonTargetLengthDto.PROPERTY_PICTURES_REFERENCES }); - List<ContentTableMeta<NonTargetLengthDto>> metas = Lists.newArrayList( + List<ContentTableMeta<NonTargetLengthDto>> metas = Arrays.asList( ContentTableModel.newTableMeta(NonTargetLengthDto.class, NonTargetLengthDto.PROPERTY_SPECIES, false), ContentTableModel.newTableMeta(NonTargetLengthDto.class, NonTargetLengthDto.PROPERTY_LENGTH, false), ContentTableModel.newTableMeta(NonTargetLengthDto.class, NonTargetLengthDto.PROPERTY_WEIGHT, false), @@ -104,4 +110,14 @@ public class NonTargetSampleUIModel extends ContentTableUIModel<NonTargetSampleD } }; } + + public ReferentialReference<SizeMeasureTypeDto> getDefaultSizeMeasureType() { + return defaultSizeMeasureType; + } + + public void setDefaultSizeMeasureType(ReferentialReference<SizeMeasureTypeDto> defaultSizeMeasureType) { + ReferentialReference<SizeMeasureTypeDto> oldValue = getDefaultSizeMeasureType(); + this.defaultSizeMeasureType = defaultSizeMeasureType; + firePropertyChange(PROPERTY_DEFAULT_SIZE_MEASURE_TYPE, oldValue, defaultSizeMeasureType); + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/TargetSampleUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/TargetSampleUI.jaxx index 88c055f..74667d6 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/TargetSampleUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/TargetSampleUI.jaxx @@ -103,7 +103,7 @@ public String getLengthDataTip(boolean computed) { <row> <cell columns="3"> <JPanel id="modeAndCodePanel"> - <JPanel id='acquisitionModePanel' constraints="BorderLayout.CENTER"> + <JPanel id='acquisitionModePanel'> <JRadioButton id='acquisitionModeEffectif'/> <JRadioButton id='acquisitionModeIndividu'/> </JPanel> @@ -111,6 +111,8 @@ public String getLengthDataTip(boolean computed) { <JLabel id='sizeMeasureTypeLabel' constraints="BorderLayout.WEST"/> <BeanComboBox id='sizeMeasureType' genericType='ReferentialReference<SizeMeasureTypeDto>' constructorParams='this' constraints="BorderLayout.CENTER"/> + <JButton id="defaultSizeMeasureType" constraints="BorderLayout.EAST" + onActionPerformed="getHandler().resetDefaultSizeMeasureType()"/> </JPanel> </JPanel> </cell> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/TargetSampleUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/TargetSampleUI.jcss index 699dadf..4f7f34d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/TargetSampleUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/TargetSampleUI.jcss @@ -30,51 +30,6 @@ _entityClass:{SpeciesDto.class}; } -#modeAndCodePanel { - layout:{new GridLayout(1,0)}; -} - -#acquisitionModeGroup { - selectedValue:{ModeSaisieEchantillonEnum.valueOf(tableEditBean.getAcquisitionMode())}; -} - -#acquisitionModePanel { - border:{new TitledBorder(t("observe.common.acquisitionMode"))}; - layout:{new GridLayout(0,1)}; -} - -#sizeMeasureTypePanel { - border:{new TitledBorder(t("observe.common.sizeMeasureType"))}; -} - -#sizeMeasureTypeLabel { - labelFor:{sizeMeasureType}; -} - -#sizeMeasureType { - _entityClass:{SizeMeasureTypeDto.class}; - _tablePropertyName:{TargetLengthDto.PROPERTY_SIZE_MEASURE_TYPE}; - property:{TargetLengthDto.PROPERTY_SIZE_MEASURE_TYPE}; - selectedItem:{tableEditBean.getSizeMeasureType()}; - bean:{tableEditBean}; -} - -#acquisitionModeEffectif { - buttonGroup:"acquisitionModeGroup"; - value:{ModeSaisieEchantillonEnum.byEffectif}; - text:{ModeSaisieEchantillonEnum.byEffectif.getI18nKey()}; - selected:{tableEditBean.getAcquisitionMode() == 0}; - enabled:{!tableModel.isEditable() || tableModel.isCreate()}; -} - -#acquisitionModeIndividu { - buttonGroup:"acquisitionModeGroup"; - value:{ModeSaisieEchantillonEnum.byIndividu}; - text:{ModeSaisieEchantillonEnum.byIndividu.getI18nKey()}; - selected:{tableEditBean.getAcquisitionMode() == 1}; - enabled:{!tableModel.isEditable() || tableModel.isCreate()}; -} - #lengthLabel { text:"observe.common.length.inf"; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/TargetSampleUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/TargetSampleUIHandler.java index d2a63a2..55a6081 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/TargetSampleUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/TargetSampleUIHandler.java @@ -6,15 +6,15 @@ * %% * 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 + * 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 + * + * 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% @@ -51,6 +51,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.LinkedList; import java.util.List; +import java.util.Optional; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -72,8 +73,7 @@ public class TargetSampleUIHandler extends AbstractSampleUIHandler<TargetSampleD */ protected final boolean discarded; - public TargetSampleUIHandler(ContentTableUI<TargetSampleDto, TargetLengthDto> ui, - boolean discarded) { + public TargetSampleUIHandler(ContentTableUI<TargetSampleDto, TargetLengthDto> ui, boolean discarded) { super(ui); this.discarded = discarded; } @@ -100,6 +100,27 @@ public class TargetSampleUIHandler extends AbstractSampleUIHandler<TargetSampleD return getDataContext().getSelectedSetId(); } + @Override + protected void onSpeciesChanged(ReferentialReference<SpeciesDto> species) { + + // on utilise le code par defaut de l'espèce + Optional<ReferentialReference<SizeMeasureTypeDto>> sizeMeasureType = getSpeciesDefaultSizeMeasureType(species); + + getUi().getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null)); + + } + + @Override + protected void onWeightChanged(Float newValue) { + getTableEditBean().setIsWeightComputed(false); + } + + @Override + protected void onLengthChanged(Float newValue) { + getTableEditBean().setIsLengthComputed(false); + } + + @Override protected void onSelectedRowChanged(int editingRow, TargetLengthDto bean, boolean create) { ContentTableModel<TargetSampleDto, TargetLengthDto> model = getTableModel(); @@ -108,12 +129,18 @@ public class TargetSampleUIHandler extends AbstractSampleUIHandler<TargetSampleD return; } + TargetLengthDto tableEditBean = getTableEditBean(); + + tableEditBean.removePropertyChangeListener(TargetLengthDto.PROPERTY_WEIGHT, weightChanged); + tableEditBean.removePropertyChangeListener(TargetLengthDto.PROPERTY_LENGTH, lengthChanged); + tableEditBean.removePropertyChangeListener(TargetLengthDto.PROPERTY_SPECIES, speciesChanged); + ReferentialReference<SpeciesDto> species = bean.getSpecies(); JComponent requestFocus; ModeSaisieEchantillonEnum modeSaisieEchantillonEnum; - ReferentialReference<SizeMeasureTypeDto> sizeMeasureType = null; + Optional<ReferentialReference<SizeMeasureTypeDto>> sizeMeasureType = Optional.empty(); if (create) { @@ -127,9 +154,13 @@ public class TargetSampleUIHandler extends AbstractSampleUIHandler<TargetSampleD modeSaisieEchantillonEnum = ModeSaisieEchantillonEnum.valueOf(editBean.getAcquisitionMode()); } - // on utilise par défaut le code mesure lf - sizeMeasureType = SizeMeasureTypeHelper.getLf(ui.getSizeMeasureType().getData()); - + // on utilise le code par defaut de l'espèce + sizeMeasureType = getSpeciesDefaultSizeMeasureType(species); + if (!sizeMeasureType.isPresent()) { + // au cas où, on repasse toujours sur lf + sizeMeasureType = Optional.of(SizeMeasureTypeHelper.getLf(getUi().getSizeMeasureType().getData())); + } + getUi().getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null)); } requestFocus = ui.getSpecies(); @@ -141,20 +172,20 @@ public class TargetSampleUIHandler extends AbstractSampleUIHandler<TargetSampleD int acquisitionMode = bean.getAcquisitionMode(); modeSaisieEchantillonEnum = ModeSaisieEchantillonEnum.valueOf(acquisitionMode); - sizeMeasureType = bean.getSizeMeasureType(); + sizeMeasureType = Optional.ofNullable(bean.getSizeMeasureType()); } - ui.getAcquisitionModeGroup().setSelectedValue(null); ui.getAcquisitionModeGroup().setSelectedValue(modeSaisieEchantillonEnum); ui.getSizeMeasureType().setSelectedItem(null); - ui.getSizeMeasureType().setSelectedItem(sizeMeasureType); + if (sizeMeasureType.isPresent()) { + ui.getSizeMeasureType().setSelectedItem(sizeMeasureType.get()); + } - // on met a jour l'espce + // on met a jour l'espece ui.getSpecies().setSelectedItem(null); - if (species != null) { if (log.isDebugEnabled()) { log.debug("species to use " + species); @@ -163,12 +194,9 @@ public class TargetSampleUIHandler extends AbstractSampleUIHandler<TargetSampleD } requestFocus.requestFocus(); - TargetLengthDto tableEditBean = getTableEditBean(); - tableEditBean.removePropertyChangeListener(TargetLengthDto.PROPERTY_WEIGHT, weightChanged); tableEditBean.addPropertyChangeListener(TargetLengthDto.PROPERTY_WEIGHT, weightChanged); - - tableEditBean.removePropertyChangeListener(TargetLengthDto.PROPERTY_LENGTH, lengthChanged); tableEditBean.addPropertyChangeListener(TargetLengthDto.PROPERTY_LENGTH, lengthChanged); + tableEditBean.addPropertyChangeListener(TargetLengthDto.PROPERTY_SPECIES, speciesChanged); } @Override @@ -308,6 +336,11 @@ public class TargetSampleUIHandler extends AbstractSampleUIHandler<TargetSampleD } } + public void resetDefaultSizeMeasureType() { + getUi().getSizeMeasureType().setSelectedItem(null); + getUi().getSizeMeasureType().setSelectedItem(getUi().getModel().getDefaultSizeMeasureType()); + } + @Override protected void doPersist(TargetSampleDto bean) { @@ -322,12 +355,6 @@ public class TargetSampleUIHandler extends AbstractSampleUIHandler<TargetSampleD loadReferentialReferenceSetsInModel(form); getModel().setForm(form); TargetSampleHelper.copyTargetSampleDto(form.getObject(), getBean()); - for (TargetLengthDto targetLengthDto : getBean().getTargetLength()) { - ReferentialReference<SizeMeasureTypeDto> sizeMeasureType = targetLengthDto.getSizeMeasureType(); - if (sizeMeasureType != null) { - SizeMeasureTypeHelper.filterForSeine(sizeMeasureType); - } - } } @Override @@ -349,8 +376,19 @@ public class TargetSampleUIHandler extends AbstractSampleUIHandler<TargetSampleD break; + case TargetLengthDto.PROPERTY_SIZE_MEASURE_TYPE: { + + result = SizeMeasureTypeHelper.filterForSeine((Collection) incomingReferences); + if (log.isInfoEnabled()) { + log.info("Using " + result.size() + " size measure type(s)."); + } + if (result.size() != 2) { + throw new IllegalStateException("WHY???"); + } + } } + return result; } @@ -358,4 +396,16 @@ public class TargetSampleUIHandler extends AbstractSampleUIHandler<TargetSampleD protected TargetSampleService getTargetSampleService() { return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTargetSampleService(); } + + protected Optional<ReferentialReference<SizeMeasureTypeDto>> getSpeciesDefaultSizeMeasureType(ReferentialReference<SpeciesDto> species) { + Optional<ReferentialReference<SizeMeasureTypeDto>> result = Optional.empty(); + if (species != null) { + + String sizeMeasureId = (String) species.getPropertyValue(SpeciesDto.PROPERTY_SIZE_MEASURE_TYPE + "Id"); + result = getUi().getSizeMeasureType().getData().stream() + .filter(s -> s.getId().equals(sizeMeasureId)).findFirst(); + } + return result; + } + } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/TargetSampleUIModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/TargetSampleUIModel.java index 6906049..8a3ecbb 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/TargetSampleUIModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/TargetSampleUIModel.java @@ -22,16 +22,18 @@ package fr.ird.observe.application.swing.ui.content.table.impl.seine; * #L% */ -import com.google.common.collect.Lists; import com.google.common.collect.Sets; import fr.ird.observe.application.swing.ui.content.table.ContentTableMeta; import fr.ird.observe.application.swing.ui.content.table.ContentTableModel; import fr.ird.observe.application.swing.ui.content.table.ContentTableUIModel; import fr.ird.observe.application.swing.ui.content.table.ObserveContentTableUI; +import fr.ird.observe.services.dto.referential.ReferentialReference; +import fr.ird.observe.services.dto.referential.SizeMeasureTypeDto; import fr.ird.observe.services.dto.seine.TargetLengthDto; import fr.ird.observe.services.dto.seine.TargetLengthHelper; import fr.ird.observe.services.dto.seine.TargetSampleDto; +import java.util.Arrays; import java.util.Collection; import java.util.List; @@ -45,6 +47,10 @@ public class TargetSampleUIModel extends ContentTableUIModel<TargetSampleDto, Ta private static final long serialVersionUID = 1L; + public static final String PROPERTY_DEFAULT_SIZE_MEASURE_TYPE="defaultSizeMeasureType"; + + private ReferentialReference<SizeMeasureTypeDto> defaultSizeMeasureType; + public TargetSampleUIModel(TargetSampleUI ui) { super(TargetSampleDto.class, @@ -64,7 +70,7 @@ public class TargetSampleUIModel extends ContentTableUIModel<TargetSampleDto, Ta TargetLengthDto.PROPERTY_ACQUISITION_MODE, TargetLengthDto.PROPERTY_TAG_NUMBER}); - List<ContentTableMeta<TargetLengthDto>> metas = Lists.newArrayList( + List<ContentTableMeta<TargetLengthDto>> metas = Arrays.asList( ContentTableModel.newTableMeta(TargetLengthDto.class, TargetLengthDto.PROPERTY_SPECIES, true), ContentTableModel.newTableMeta(TargetLengthDto.class, TargetLengthDto.PROPERTY_SEX, true), ContentTableModel.newTableMeta(TargetLengthDto.class, TargetLengthDto.PROPERTY_SIZE_MEASURE_TYPE, true), @@ -100,4 +106,14 @@ public class TargetSampleUIModel extends ContentTableUIModel<TargetSampleDto, Ta } }; } + + public ReferentialReference<SizeMeasureTypeDto> getDefaultSizeMeasureType() { + return defaultSizeMeasureType; + } + + public void setDefaultSizeMeasureType(ReferentialReference<SizeMeasureTypeDto> defaultSizeMeasureType) { + ReferentialReference<SizeMeasureTypeDto> oldValue = getDefaultSizeMeasureType(); + this.defaultSizeMeasureType = defaultSizeMeasureType; + firePropertyChange(PROPERTY_DEFAULT_SIZE_MEASURE_TYPE, oldValue, defaultSizeMeasureType); + } } diff --git a/application-swing/src/main/resources/i18n/application-swing_en_GB.properties b/application-swing/src/main/resources/i18n/application-swing_en_GB.properties index c8d7047..3fafe10 100644 --- a/application-swing/src/main/resources/i18n/application-swing_en_GB.properties +++ b/application-swing/src/main/resources/i18n/application-swing_en_GB.properties @@ -1063,6 +1063,7 @@ observe.content.route.message.not.open=Current route is not open, no modificatio observe.content.route.message.updating=Route is in editing mode. observe.content.route.title=Route observe.content.routes.title=Routes +observe.content.sample.resetDefaultSizeMeasureType=Use default size measure type observe.content.schoolEstimate.table.meanWeight=Mean weight (in Kg) observe.content.schoolEstimate.table.meanWeight.tip=Mean weight (in Kg) observe.content.schoolEstimate.table.speciesThon=Species diff --git a/application-swing/src/main/resources/i18n/application-swing_es_ES.properties b/application-swing/src/main/resources/i18n/application-swing_es_ES.properties index ebc5a15..4424ee0 100644 --- a/application-swing/src/main/resources/i18n/application-swing_es_ES.properties +++ b/application-swing/src/main/resources/i18n/application-swing_es_ES.properties @@ -1063,6 +1063,7 @@ observe.content.route.message.not.open=la ruta actual no está abierta, no se pu observe.content.route.message.updating=Se está modificando la ruta actual. observe.content.route.title=Ruta observe.content.routes.title=Rutas +observe.content.sample.resetDefaultSizeMeasureType=Utiliser le type de mensuration par défaut \#TODO observe.content.schoolEstimate.table.meanWeight=Peso medio (en Kg) observe.content.schoolEstimate.table.meanWeight.tip=Peso medio (en Kg) observe.content.schoolEstimate.table.speciesThon=Especie diff --git a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties index e629cda..2e7dc31 100644 --- a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties +++ b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties @@ -1063,6 +1063,7 @@ observe.content.route.message.not.open=La route courante n'est pas ouverte, aucu observe.content.route.message.updating=La route est en cours de modification. observe.content.route.title=Route observe.content.routes.title=Routes +observe.content.sample.resetDefaultSizeMeasureType=Utiliser le type de mensuration par défaut observe.content.schoolEstimate.table.meanWeight=Poids moyen (en Kg) observe.content.schoolEstimate.table.meanWeight.tip=Poids moyen (en Kg) observe.content.schoolEstimate.table.speciesThon=Espèce de thon diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/reference/ReferentialReferenceSetDefinitions.java b/services-dto/src/main/java/fr/ird/observe/services/dto/reference/ReferentialReferenceSetDefinitions.java index c05a711..730e61c 100644 --- a/services-dto/src/main/java/fr/ird/observe/services/dto/reference/ReferentialReferenceSetDefinitions.java +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/reference/ReferentialReferenceSetDefinitions.java @@ -121,7 +121,7 @@ public enum ReferentialReferenceSetDefinitions { .addProperty(String.class, HarbourDto.PROPERTY_LOCODE)), SHIP_OWNER(newDefaultDefinitionBuilder(ShipOwnerDto.class) - .addProperty(String.class, ShipOwnerDto.PROPERTY_LABEL)), + .addProperty(String.class, ShipOwnerDto.PROPERTY_LABEL)), LENGTH_LENGTH_PARAMETER(newDefinitionBuilder(LengthLengthParameterDto.class) .addProperty(String.class, LengthLengthParameterDto.PROPERTY_CODE) @@ -159,7 +159,7 @@ public enum ReferentialReferenceSetDefinitions { .addProperty(String.class, SpeciesDto.PROPERTY_FAO_CODE) .addProperty(String.class, SpeciesDto.PROPERTY_SCIENTIFIC_LABEL) .addProperty(String.class, SpeciesDto.PROPERTY_HOME_ID) - .addProperty(String.class, SpeciesDto.PROPERTY_SIZE_MEASURE_TYPE)), + .addProperty(String.class, SpeciesDto.PROPERTY_SIZE_MEASURE_TYPE + "Id")), SPECIES_GROUP(newDefaultDefinitionBuilder(SpeciesGroupDto.class)), diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/referential/SizeMeasureTypeHelper.java b/services-dto/src/main/java/fr/ird/observe/services/dto/referential/SizeMeasureTypeHelper.java index d31236d..8acdc5d 100644 --- a/services-dto/src/main/java/fr/ird/observe/services/dto/referential/SizeMeasureTypeHelper.java +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/referential/SizeMeasureTypeHelper.java @@ -36,26 +36,9 @@ public class SizeMeasureTypeHelper extends GeneratedSizeMeasureTypeHelper { public static List<ReferentialReference<SizeMeasureTypeDto>> filterForSeine(Collection<ReferentialReference<SizeMeasureTypeDto>> incoming) { return incoming.stream() .filter(d -> isLd1(d) || isLf(d)) - .map(SizeMeasureTypeHelper::filterForSeine) .collect(Collectors.toList()); - - } - - public static ReferentialReference<SizeMeasureTypeDto> filterForSeine(ReferentialReference<SizeMeasureTypeDto> incoming) { - int index = incoming.getPropertyIndex(SizeMeasureTypeDto.PROPERTY_CODE); - String value; - if (isLd1(incoming)) { - value = "LD1"; - } else if (isLf(incoming)) { - value = "LF"; - } else { - throw new IllegalStateException("Can't manage with code: " + incoming); - } - incoming.getLabelPropertyValues()[index] = value; - return incoming; } - public static boolean isLd1(ReferentialReference<SizeMeasureTypeDto> incoming) { return SEINE_LD1_SIZE_MEASURE_TYPE_ID.contains(incoming.getCode()); } diff --git a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/BinderSupport.java b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/BinderSupport.java index d1c0dbd..f682d56 100644 --- a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/BinderSupport.java +++ b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/BinderSupport.java @@ -24,6 +24,7 @@ package fr.ird.observe.services.topia.binder; import com.google.common.collect.Iterables; import fr.ird.observe.ObserveEntityEnum; +import fr.ird.observe.entities.ObserveEntity; import fr.ird.observe.entities.constants.GearTypePersist; import fr.ird.observe.entities.constants.ReferenceStatusPersist; import fr.ird.observe.entities.constants.TripMapPointTypePersist; @@ -34,6 +35,7 @@ import fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperationPers import fr.ird.observe.entities.referentiel.I18nReferenceEntities; import fr.ird.observe.entities.referentiel.I18nReferentialEntity; import fr.ird.observe.entities.referentiel.ObserveReferentialEntity; +import fr.ird.observe.services.dto.AbstractReference; import fr.ird.observe.services.dto.referential.I18nReferentialHelper; import fr.ird.observe.services.topia.binder.referential.ReferentialBinderSupport; import fr.ird.observe.services.dto.IdDto; @@ -232,4 +234,12 @@ public abstract class BinderSupport<E extends TopiaEntity, D extends IdDto> { } } + + protected <D extends IdDto> String toDtoId(AbstractReference<D> dto) { + return dto == null ? null : dto.getId(); + } + + protected <E extends ObserveEntity> String toEntityId(E entity) { + return entity == null ? null : entity.getTopiaId(); + } } diff --git a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/ActivityLonglineBinder.java b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/ActivityLonglineBinder.java index b9213e7..984f684 100644 --- a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/ActivityLonglineBinder.java +++ b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/ActivityLonglineBinder.java @@ -77,7 +77,7 @@ public class ActivityLonglineBinder extends DataBinderSupport<ActivityLongline, return toDataReference(entity, entity.getTimeStamp(), - entity.getVesselActivityLongline().getTopiaId(), + toEntityId(entity.getVesselActivityLongline()), getLabel(referentialLocale, entity.getVesselActivityLongline()), toDataReference(referentialLocale, entity.getSetLongline(), SetLonglineDto.class)); @@ -88,7 +88,7 @@ public class ActivityLonglineBinder extends DataBinderSupport<ActivityLongline, return toDataReference(dto, dto.getTimeStamp(), - dto.getVesselActivityLongline().getId(), + toDtoId(dto.getVesselActivityLongline()), getLabel(referentialLocale, dto.getVesselActivityLongline()), dto.getSetLongline()); } diff --git a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/ActivitySeineBinder.java b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/ActivitySeineBinder.java index 4f1a360..9d8b2f7 100644 --- a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/ActivitySeineBinder.java +++ b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/ActivitySeineBinder.java @@ -109,7 +109,7 @@ public class ActivitySeineBinder extends DataBinderSupport<ActivitySeine, Activi return toDataReference(entity, entity.getTime(), - entity.getVesselActivitySeine().getTopiaId(), + toEntityId(entity.getVesselActivitySeine()), getLabel(referentialLocale, entity.getVesselActivitySeine()), toDataReference(referentialLocale, entity.getSetSeine(), SetSeineDto.class)); @@ -120,7 +120,7 @@ public class ActivitySeineBinder extends DataBinderSupport<ActivitySeine, Activi return toDataReference(dto, dto.getTime(), - dto.getVesselActivitySeine().getId(), + toDtoId(dto.getVesselActivitySeine()), getLabel(referentialLocale, dto.getVesselActivitySeine()), dto.getSetSeine()); diff --git a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/NonTargetLengthBinder.java b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/NonTargetLengthBinder.java index 91e27ce..345dd31 100644 --- a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/NonTargetLengthBinder.java +++ b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/NonTargetLengthBinder.java @@ -23,12 +23,14 @@ package fr.ird.observe.services.topia.binder.data; */ import fr.ird.observe.entities.referentiel.Sex; +import fr.ird.observe.entities.referentiel.SizeMeasureType; import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.referentiel.seine.SpeciesFate; import fr.ird.observe.entities.seine.NonTargetLength; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.referential.SexDto; +import fr.ird.observe.services.dto.referential.SizeMeasureTypeDto; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.referential.seine.SpeciesFateDto; import fr.ird.observe.services.dto.seine.NonTargetLengthDto; @@ -60,6 +62,7 @@ public class NonTargetLengthBinder extends DataBinderSupport<NonTargetLength, No entity.setSpecies(toEntity(dto.getSpecies(), Species.class)); entity.setSex(toEntity(dto.getSex(), Sex.class)); entity.setSpeciesFate(toEntity(dto.getSpeciesFate(), SpeciesFate.class)); + entity.setSizeMeasureType(toEntity(dto.getSizeMeasureType(), SizeMeasureType.class)); entity.setTagNumber(dto.getTagNumber()); } @@ -80,6 +83,7 @@ public class NonTargetLengthBinder extends DataBinderSupport<NonTargetLength, No dto.setSpecies(toReferentialReference(referentialLocale, entity.getSpecies(), SpeciesDto.class)); dto.setSex(toReferentialReference(referentialLocale, entity.getSex(), SexDto.class)); dto.setSpeciesFate(toReferentialReference(referentialLocale, entity.getSpeciesFate(), SpeciesFateDto.class)); + dto.setSizeMeasureType(toReferentialReference(referentialLocale, entity.getSizeMeasureType(), SizeMeasureTypeDto.class)); dto.setTagNumber(entity.getTagNumber()); } diff --git a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/TripLonglineBinder.java b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/TripLonglineBinder.java index 8b2eb78..7ab3890 100644 --- a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/TripLonglineBinder.java +++ b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/TripLonglineBinder.java @@ -103,8 +103,8 @@ public class TripLonglineBinder extends DataBinderSupport<TripLongline, TripLong return toDataReference(entity, entity.getStartDate(), entity.getEndDate(), - entity.getProgram().getTopiaId(), - entity.getTripType().getTopiaId(), + toEntityId(entity.getProgram()), + toEntityId(entity.getTripType()), getLabel(referentialLocale, entity.getVessel()), entity.getObserverLabel()); @@ -116,8 +116,8 @@ public class TripLonglineBinder extends DataBinderSupport<TripLongline, TripLong return toDataReference(dto, dto.getStartDate(), dto.getEndDate(), - dto.getProgram().getId(), - dto.getTripType().getId(), + toDtoId(dto.getProgram()), + toDtoId(dto.getTripType()), getLabel(referentialLocale, dto.getVessel()), PersonHelper.getNames(dto.getObserver())); diff --git a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/TripSeineBinder.java b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/TripSeineBinder.java index ad5bb84..a4ce727 100644 --- a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/TripSeineBinder.java +++ b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/data/TripSeineBinder.java @@ -104,7 +104,7 @@ public class TripSeineBinder extends DataBinderSupport<TripSeine, TripSeineDto> return toDataReference(entity, entity.getStartDate(), entity.getEndDate(), - entity.getProgram().getTopiaId(), + toEntityId(entity.getProgram()), entity.getRouteCount(), getLabel(referentialLocale, entity.getVessel()), entity.getObserverLabel()); @@ -117,7 +117,7 @@ public class TripSeineBinder extends DataBinderSupport<TripSeine, TripSeineDto> return toDataReference(dto, dto.getStartDate(), dto.getEndDate(), - dto.getProgram().getId(), + toDtoId(dto.getProgram()), dto.getRouteCount(), getLabel(referentialLocale, dto.getVessel()), PersonHelper.getNames(dto.getObserver())); diff --git a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/referential/SpeciesBinder.java b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/referential/SpeciesBinder.java index 016258c..b707f21 100644 --- a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/referential/SpeciesBinder.java +++ b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/referential/SpeciesBinder.java @@ -92,7 +92,7 @@ public class SpeciesBinder extends ReferentialBinderSupport<Species, SpeciesDto> entity.getFaoCode(), entity.getScientificLabel(), entity.getHomeId(), - entity.getSizeMeasureType() == null ? null : getLabel(referentialLocale, entity.getSizeMeasureType())); + toEntityId(entity.getSizeMeasureType())); } @@ -104,7 +104,7 @@ public class SpeciesBinder extends ReferentialBinderSupport<Species, SpeciesDto> dto.getFaoCode(), dto.getScientificLabel(), dto.getHomeId(), - dto.getSizeMeasureType() == null ? null : getLabel(referentialLocale, dto.getSizeMeasureType())); + toDtoId(dto.getSizeMeasureType())); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8404 in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit f6609dd61769b259529ed0ba0282a65117479549 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 6 12:03:03 2016 +0100 Ajout validation de sizeMeasureType sur NonTargetLength --- .../NonTargetLengthDto-ui-update-error-validation.xml | 17 +++++++++++++++++ .../i18n/application-swing-validation_en_GB.properties | 2 ++ .../i18n/application-swing-validation_es_ES.properties | 2 ++ .../i18n/application-swing-validation_fr_FR.properties | 3 ++- 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetLengthDto-ui-update-error-validation.xml b/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetLengthDto-ui-update-error-validation.xml index 3e29532..361b885 100644 --- a/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetLengthDto-ui-update-error-validation.xml +++ b/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetLengthDto-ui-update-error-validation.xml @@ -55,6 +55,23 @@ </field> + <field name="sizeMeasureType"> + + <!-- pas de sizeMeasureType selectionnee --> + <field-validator type="required" short-circuit="true"> + <message>validator.ui.nonTargetLength.required.sizeMeasureType</message> + </field-validator> + + <!-- sizeMeasureType desactive --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ sizeMeasureType.enabled ]]> + </param> + <message>validator.ui.nonTargetLength.desactivated.sizeMeasureType</message> + </field-validator> + + </field> + <field name="length"> <!-- taille obligatoire en mode par count --> diff --git a/application-swing-validation/src/main/resources/i18n/application-swing-validation_en_GB.properties b/application-swing-validation/src/main/resources/i18n/application-swing-validation_en_GB.properties index 9f9426d..6d8aa55 100644 --- a/application-swing-validation/src/main/resources/i18n/application-swing-validation_en_GB.properties +++ b/application-swing-validation/src/main/resources/i18n/application-swing-validation_en_GB.properties @@ -371,7 +371,9 @@ validator.ui.nonTargetCatch.required.speciesFate=Species fate must be filled. validator.ui.nonTargetCatch.required.weightOrNombreEstime=Weight or estimated count must be filled. validator.ui.nonTargetCatch.required.weightOrTailleMoyen=Weight or mean size must be filled. validator.ui.nonTargetCatch.uniqueKey=Tuple (speces - objectFate) muste be unique. +validator.ui.nonTargetLength.desactivated.sizeMeasureType=Selected size measure type is disabled. validator.ui.nonTargetLength.desactivated.speciesFate=Selected species fate is disabled. +validator.ui.nonTargetLength.required.sizeMeasureType=Size measure type is mandatory. validator.ui.nonTargetLength.required.speciesFate=Species fate must be filled. validator.ui.nonTargetSample.bound.length=Length must be bound between %s and %s. validator.ui.nonTargetSample.bound.weight=Weight must be bound between %s and %s. diff --git a/application-swing-validation/src/main/resources/i18n/application-swing-validation_es_ES.properties b/application-swing-validation/src/main/resources/i18n/application-swing-validation_es_ES.properties index 51bdabd..1e0b795 100644 --- a/application-swing-validation/src/main/resources/i18n/application-swing-validation_es_ES.properties +++ b/application-swing-validation/src/main/resources/i18n/application-swing-validation_es_ES.properties @@ -371,7 +371,9 @@ validator.ui.nonTargetCatch.required.speciesFate=Es obligatoiro seleccionar un f validator.ui.nonTargetCatch.required.weightOrNombreEstime=Debe seleccionar uno de los dos valores (peso estimado, número estimado). validator.ui.nonTargetCatch.required.weightOrTailleMoyen=Debe seleccionar uno de los dos valores (peso medio o talla media). validator.ui.nonTargetCatch.uniqueKey=El par (especie - objectFate) debe ser único. +validator.ui.nonTargetLength.desactivated.sizeMeasureType=Selected size mesure type is disabled. \#TODO validator.ui.nonTargetLength.desactivated.speciesFate=El objectFate de fauna seleccionado está desactivado. +validator.ui.nonTargetLength.required.sizeMeasureType=Es obligatoria especificar el size measure type \#TODO validator.ui.nonTargetLength.required.speciesFate=Es obligatoiro seleccionar un futuro de fauna. validator.ui.nonTargetSample.bound.length=La talla para esta especie debe estar comprendida entre %1$s y %2$s. validator.ui.nonTargetSample.bound.weight=La peso para esta especie debe estar comprendida entre %1$s y %2$s. diff --git a/application-swing-validation/src/main/resources/i18n/application-swing-validation_fr_FR.properties b/application-swing-validation/src/main/resources/i18n/application-swing-validation_fr_FR.properties index fb6e9ea..801b518 100644 --- a/application-swing-validation/src/main/resources/i18n/application-swing-validation_fr_FR.properties +++ b/application-swing-validation/src/main/resources/i18n/application-swing-validation_fr_FR.properties @@ -371,7 +371,9 @@ validator.ui.nonTargetCatch.required.speciesFate=La sélection d'un devenir faun validator.ui.nonTargetCatch.required.weightOrNombreEstime=Une des deux valeurs (poids estimé, nombre estimé) doit être renseignée. validator.ui.nonTargetCatch.required.weightOrTailleMoyen=Une des deux valeurs (poids moyen ou taille moyenne) devrait être renseignée. validator.ui.nonTargetCatch.uniqueKey=Le couple (espèce - objectFate) doit être unique. +validator.ui.nonTargetLength.desactivated.sizeMeasureType=Le type de mesure sélectionné est désactivé. validator.ui.nonTargetLength.desactivated.speciesFate=Le devenir faune sélectionné est désactivé. +validator.ui.nonTargetLength.required.sizeMeasureType=Le type de mesure est obligatoire. validator.ui.nonTargetLength.required.speciesFate=La sélection d'un devenir faune est obligatoire. validator.ui.nonTargetSample.bound.length=La taille pour cette espèce doit être comprise entre %1$s et %2$s. validator.ui.nonTargetSample.bound.weight=Le poids pour cette espèce doit être compris entre %1$s et %2$s. @@ -562,7 +564,6 @@ validator.ui.targetLength.desactivated.species=L'espèce sélectionnée est dés validator.ui.targetLength.positive.length=La longueur est un entier strictement positif. validator.ui.targetLength.positive.weight=Le poids est un entier strictement positif. validator.ui.targetLength.required.count=Le nombre effectif est obligatoire. -validator.ui.targetLength.required.sizeMeasureType=Le type de mesure est obligatoire. validator.ui.targetLength.required.species=La sélection d'une espèce de thon est obligatoire. validator.ui.targetLength.required.taille=La taille est obligatoire. validator.ui.targetLength.required.weight.or.taille=Au moins une des valeurs (taille / poids) doit être renseignée. -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm