Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 669db5b4 by Tony CHEMIT at 2018-07-04T09:34:47Z [PS] Bycatch : la gomme ne réinitialise pas correctement le type de taille par défaut - Closes #997 - - - - - 4 changed files: - client/src/main/java/fr/ird/observe/client/ui/content/data/seine/AbstractSampleUI.jcss - client/src/main/java/fr/ird/observe/client/ui/content/data/seine/AbstractSampleUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/data/seine/NonTargetSampleUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/data/seine/TargetSampleUIHandler.java Changes: ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/seine/AbstractSampleUI.jcss ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/data/seine/AbstractSampleUI.jcss +++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/seine/AbstractSampleUI.jcss @@ -86,7 +86,7 @@ JToolBar { #defaultSizeMeasureType { actionIcon:combobox-reset2; toolTipText:"observe.common.Sample.action.resetDefaultSizeMeasureType.tip"; - enabled:{tableEditBean.getSpecies() != null}; + enabled:{model.getDefaultSizeMeasureType() != null}; } #length { ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/seine/AbstractSampleUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/data/seine/AbstractSampleUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/seine/AbstractSampleUIHandler.java @@ -22,14 +22,22 @@ package fr.ird.observe.client.ui.content.data.seine; * #L% */ +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; import fr.ird.observe.client.db.constants.DataContextType; import fr.ird.observe.client.ui.content.table.ContentTableUI; import fr.ird.observe.client.ui.content.table.ContentTableUIHandler; import fr.ird.observe.dto.IdDto; +import fr.ird.observe.dto.data.seine.NonTargetLengthDto; import fr.ird.observe.dto.data.seine.TargetLengthDto; +import fr.ird.observe.dto.referential.SizeMeasureTypeReference; import fr.ird.observe.dto.referential.SpeciesReference; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import java.beans.PropertyChangeListener; +import java.util.List; +import java.util.Optional; /** * Created on 31/10/16. @@ -39,6 +47,7 @@ import java.beans.PropertyChangeListener; */ public abstract class AbstractSampleUIHandler<E extends IdDto, D extends IdDto, U extends ContentTableUI<E, D, U>> extends ContentTableUIHandler<E, D, U> { + protected final Log log = LogFactory.getLog(getClass()); /** * Ecoute les modifications de la propriété {@link TargetLengthDto#getWeight()}, * et repasser alors le flag {@link TargetLengthDto#isIsWeightComputed()} à @@ -66,6 +75,8 @@ public abstract class AbstractSampleUIHandler<E extends IdDto, D extends IdDto, */ final PropertyChangeListener speciesChanged; + ImmutableMap<String, SizeMeasureTypeReference> sizeMeasureTypeReferenceMap; + AbstractSampleUIHandler() { super(DataContextType.SetSeine); weightChanged = evt -> onWeightChanged((Float) evt.getNewValue()); @@ -82,4 +93,22 @@ public abstract class AbstractSampleUIHandler<E extends IdDto, D extends IdDto, protected abstract void onWeightChanged(Float newValue); protected abstract void onLengthChanged(Float newValue); + + void loadSizeMeasureTypes() { + List<SizeMeasureTypeReference> sizeMeasureTypeReferences = getModel().getReferentialReferences(NonTargetLengthDto.PROPERTY_SIZE_MEASURE_TYPE); + sizeMeasureTypeReferenceMap = Maps.uniqueIndex(sizeMeasureTypeReferences, SizeMeasureTypeReference::getTopiaId); + } + + Optional<SizeMeasureTypeReference> getSpeciesDefaultSizeMeasureType(SpeciesReference species) { + SizeMeasureTypeReference result = null; + if (species != null && species.getSizeMeasureTypeId() != null) { + String sizeMeasureId = species.getSizeMeasureTypeId(); + result = sizeMeasureTypeReferenceMap.get(sizeMeasureId); + log.info("Use as default size measure type: " + result); + } else { + log.info("No default size measure type defined (species is null, or no default size measure definied on it."); + } + return Optional.ofNullable(result); + } + } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/seine/NonTargetSampleUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/data/seine/NonTargetSampleUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/seine/NonTargetSampleUIHandler.java @@ -44,7 +44,8 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.jaxx.runtime.spi.UIHandler; import org.nuiton.validator.NuitonValidatorScope; -import javax.swing.*; +import javax.swing.JComponent; +import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import java.util.Collection; import java.util.LinkedList; @@ -60,21 +61,14 @@ import static org.nuiton.i18n.I18n.t; */ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetSampleDto, NonTargetLengthDto, NonTargetSampleUI> implements UIHandler<NonTargetSampleUI> { - /** - * Logger - */ - private static final Log log = LogFactory.getLog(NonTargetSampleUIHandler.class); - NonTargetSampleUIHandler() { addReferentialFilter(NonTargetLengthDto.PROPERTY_SPECIES, incomingReferences -> { ReferentialDtoReferenceSet<SpeciesReference> sampleSpecies = getNonTargetSampleService().getSampleSpecies(getSelectedParentId()); return new LinkedList<>(sampleSpecies.toSet()); -// return ReferentialDtoReferences.filterEnabled(result); }); addReferentialFilter(NonTargetLengthDto.PROPERTY_SPECIES_FATE, incomingReferences -> { Collection<SpeciesFateReference> speciesFate = getModel().getForm().getObject().getSpeciesFate(); return new LinkedList<>(speciesFate); -// return ReferentialDtoReferences.filterEnabled(result); }); } @@ -106,7 +100,7 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS // on utilise le code par defaut de l'espèce Optional<SizeMeasureTypeReference> sizeMeasureType = getSpeciesDefaultSizeMeasureType(species); - log.debug("Default size measure "+sizeMeasureType.orElse(null)); + log.debug("Default size measure " + sizeMeasureType.orElse(null)); getUi().getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null)); resetDefaultSizeMeasureType(); } @@ -350,21 +344,11 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS // normalement cela est fait quand on fait le setForm (mais ici le setForm est fait trop tôt) updateUiWithReferenceSetsFromModel(); + loadSizeMeasureTypes(); NonTargetSampleHelper.copyNonTargetSampleDto(form.getObject(), getBean()); } - private Optional<SizeMeasureTypeReference> getSpeciesDefaultSizeMeasureType(SpeciesReference species) { - Optional<SizeMeasureTypeReference> result = Optional.empty(); - if (species != null) { - - String sizeMeasureId = species.getSizeMeasureTypeId(); - result = getUi().getSizeMeasureType().getData().stream() - .filter(s -> s.getId().equals(sizeMeasureId)).findFirst(); - } - return result; - } - class TablePopupSupport extends AutotSelectRowAndShowPopupActionSupport { private final NonTargetSampleUI ui; ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/seine/TargetSampleUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/data/seine/TargetSampleUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/seine/TargetSampleUIHandler.java @@ -8,12 +8,12 @@ * 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>. @@ -41,11 +41,10 @@ import fr.ird.observe.dto.referential.SizeMeasureTypeReference; import fr.ird.observe.dto.referential.SpeciesDto; import fr.ird.observe.dto.referential.SpeciesReference; import fr.ird.observe.dto.result.SaveResultDto; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.nuiton.validator.NuitonValidatorScope; -import javax.swing.*; +import javax.swing.JComponent; +import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import java.util.List; import java.util.Optional; @@ -59,9 +58,6 @@ import static org.nuiton.i18n.I18n.t; */ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, TargetLengthDto, U>> extends AbstractSampleUIHandler<TargetSampleDto, TargetLengthDto, U> { - /** Logger */ - private static final Log log = LogFactory.getLog(TargetSampleUIHandler.class); - /** * Pour différencier positionner l'invariant de l'écran * {@link TargetSampleDto#getDiscarded()}. @@ -83,6 +79,65 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar }); } + /** + * Le mode de saisie a été mis à jour. + * + * @param newMode le nouveau de mode de saisie à utiliser + * @since 1.8 + */ + static void updateModeSaisie(TargetSampleUI ui, AcquisitionMode newMode) { + + if (newMode == null) { + + // mode null (cela peut arriver avec les bindings) + return; + } + boolean createMode = ui.getTableModel().isCreate(); + + TargetLengthDto editBean = ui.getTableEditBean(); + switch (newMode) { + + case byEffectif: + + // le weight n'est pas modifiable + ui.getWeight().setEnabled(false); + + // l'count est modifiable + ui.getCount().setEnabled(true); + + if (createMode) { + + // on supprime le weight (si il a été saisie) + editBean.setWeight(null); + // on supprime aussi l'count (pour forcer la saisie) + editBean.setCount(null); + } + break; + + case byIndividu: + + // le weight est pas modifiable + ui.getWeight().setEnabled(true); + + // l'count n'est pas modifiable et est toujours de 1 + ui.getCount().setEnabled(false); + + + if (createMode) { + + // on positionne l'count à 1 (seule valeur possible) + editBean.setCount(1); + } + break; + } + + if (createMode) { + + // on propage le mode de saisie dans le bean + editBean.setAcquisitionMode(newMode.ordinal()); + } + } + @Override public void afterInit(U ui) { super.afterInit(ui); @@ -111,7 +166,6 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar // on utilise le code par defaut de l'espèce Optional<SizeMeasureTypeReference> sizeMeasureType = getSpeciesDefaultSizeMeasureType(species); - log.debug("Default size measure "+sizeMeasureType.orElse(null)); ((TargetSampleUI) getUi()).getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null)); resetDefaultSizeMeasureType(); } @@ -208,9 +262,8 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar List<SizeMeasureTypeReference> sizeMeasureTypes = getReferentialReferences(SizeMeasureTypeReference.class); List<SizeMeasureTypeReference> data = SizeMeasureTypeHelper.filterForSeine(sizeMeasureTypes); - if (log.isInfoEnabled()) { - log.info("Using " + data.size() + " size measure type(s)."); - } + log.info("Using " + data.size() + " size measure type(s)."); + loadSizeMeasureTypes(); checkSizeMeasureTypes(data); ((TargetSampleUI) getUi()).getSizeMeasureType().setData(data); } @@ -268,78 +321,16 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar mode = ContentMode.READ; addMessage(getUi(), - NuitonValidatorScope.INFO, - getTypeI18nKey(SetSeineDto.class), - discarded ? - t("observe.common.SetSeineDto.message.no.targetCatch") : - t("observe.common.SetSeineDto.message.no.targetDiscarded") + NuitonValidatorScope.INFO, + getTypeI18nKey(SetSeineDto.class), + discarded ? + t("observe.common.SetSeineDto.message.no.targetCatch") : + t("observe.common.SetSeineDto.message.no.targetDiscarded") ); } return mode; } - /** - * Le mode de saisie a été mis à jour. - * - * @param newMode le nouveau de mode de saisie à utiliser - * @since 1.8 - */ - static void updateModeSaisie(TargetSampleUI ui, AcquisitionMode newMode) { - - if (log.isDebugEnabled()) { - log.debug("Change mode saisie to " + newMode); - } - if (newMode == null) { - - // mode null (cela peut arriver avec les bindings) - return; - } - boolean createMode = ui.getTableModel().isCreate(); - - TargetLengthDto editBean = ui.getTableEditBean(); - switch (newMode) { - - case byEffectif: - - // le weight n'est pas modifiable - ui.getWeight().setEnabled(false); - - // l'count est modifiable - ui.getCount().setEnabled(true); - - if (createMode) { - - // on supprime le weight (si il a été saisie) - editBean.setWeight(null); - // on supprime aussi l'count (pour forcer la saisie) - editBean.setCount(null); - } - break; - - case byIndividu: - - // le weight est pas modifiable - ui.getWeight().setEnabled(true); - - // l'count n'est pas modifiable et est toujours de 1 - ui.getCount().setEnabled(false); - - - if (createMode) { - - // on positionne l'count à 1 (seule valeur possible) - editBean.setCount(1); - } - break; - } - - if (createMode) { - - // on propage le mode de saisie dans le bean - editBean.setAcquisitionMode(newMode.ordinal()); - } - } - public void resetDefaultSizeMeasureType() { TargetSampleUI ui = (TargetSampleUI) getUi(); ui.getSizeMeasureType().setSelectedItem(null); @@ -371,17 +362,6 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar TargetSampleHelper.copyTargetSampleDto(form.getObject(), getBean()); } - private Optional<SizeMeasureTypeReference> getSpeciesDefaultSizeMeasureType(SpeciesReference species) { - Optional<SizeMeasureTypeReference> result = Optional.empty(); - if (species != null) { - - String sizeMeasureId = species.getSizeMeasureTypeId(); - result = ((TargetSampleUI) getUi()).getSizeMeasureType().getData().stream() - .filter(s -> s.getId().equals(sizeMeasureId)).findFirst(); - } - return result; - } - class TablePopupSupport extends AutotSelectRowAndShowPopupActionSupport { private final TargetSampleUI ui; View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/669db5b468070bb4b1442324a899... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/669db5b468070bb4b1442324a899... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT