Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe

Commits:

4 changed files:

Changes:

  • client/src/main/java/fr/ird/observe/client/ui/content/data/seine/AbstractSampleUI.jcss
    ... ... @@ -86,7 +86,7 @@ JToolBar {
    86 86
     #defaultSizeMeasureType {
    
    87 87
       actionIcon:combobox-reset2;
    
    88 88
       toolTipText:"observe.common.Sample.action.resetDefaultSizeMeasureType.tip";
    
    89
    -  enabled:{tableEditBean.getSpecies() != null};
    
    89
    +  enabled:{model.getDefaultSizeMeasureType() != null};
    
    90 90
     }
    
    91 91
     
    
    92 92
     #length {
    

  • 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;
    22 22
      * #L%
    
    23 23
      */
    
    24 24
     
    
    25
    +import com.google.common.collect.ImmutableMap;
    
    26
    +import com.google.common.collect.Maps;
    
    25 27
     import fr.ird.observe.client.db.constants.DataContextType;
    
    26 28
     import fr.ird.observe.client.ui.content.table.ContentTableUI;
    
    27 29
     import fr.ird.observe.client.ui.content.table.ContentTableUIHandler;
    
    28 30
     import fr.ird.observe.dto.IdDto;
    
    31
    +import fr.ird.observe.dto.data.seine.NonTargetLengthDto;
    
    29 32
     import fr.ird.observe.dto.data.seine.TargetLengthDto;
    
    33
    +import fr.ird.observe.dto.referential.SizeMeasureTypeReference;
    
    30 34
     import fr.ird.observe.dto.referential.SpeciesReference;
    
    35
    +import org.apache.commons.logging.Log;
    
    36
    +import org.apache.commons.logging.LogFactory;
    
    31 37
     
    
    32 38
     import java.beans.PropertyChangeListener;
    
    39
    +import java.util.List;
    
    40
    +import java.util.Optional;
    
    33 41
     
    
    34 42
     /**
    
    35 43
      * Created on 31/10/16.
    
    ... ... @@ -39,6 +47,7 @@ import java.beans.PropertyChangeListener;
    39 47
      */
    
    40 48
     public abstract class AbstractSampleUIHandler<E extends IdDto, D extends IdDto, U extends ContentTableUI<E, D, U>> extends ContentTableUIHandler<E, D, U> {
    
    41 49
     
    
    50
    +    protected final Log log = LogFactory.getLog(getClass());
    
    42 51
         /**
    
    43 52
          * Ecoute les modifications de la propriété {@link TargetLengthDto#getWeight()},
    
    44 53
          * et repasser alors le flag {@link TargetLengthDto#isIsWeightComputed()} à
    
    ... ... @@ -66,6 +75,8 @@ public abstract class AbstractSampleUIHandler<E extends IdDto, D extends IdDto,
    66 75
          */
    
    67 76
         final PropertyChangeListener speciesChanged;
    
    68 77
     
    
    78
    +    ImmutableMap<String, SizeMeasureTypeReference> sizeMeasureTypeReferenceMap;
    
    79
    +
    
    69 80
         AbstractSampleUIHandler() {
    
    70 81
             super(DataContextType.SetSeine);
    
    71 82
             weightChanged = evt -> onWeightChanged((Float) evt.getNewValue());
    
    ... ... @@ -82,4 +93,22 @@ public abstract class AbstractSampleUIHandler<E extends IdDto, D extends IdDto,
    82 93
         protected abstract void onWeightChanged(Float newValue);
    
    83 94
     
    
    84 95
         protected abstract void onLengthChanged(Float newValue);
    
    96
    +
    
    97
    +    void loadSizeMeasureTypes() {
    
    98
    +        List<SizeMeasureTypeReference> sizeMeasureTypeReferences = getModel().getReferentialReferences(NonTargetLengthDto.PROPERTY_SIZE_MEASURE_TYPE);
    
    99
    +        sizeMeasureTypeReferenceMap = Maps.uniqueIndex(sizeMeasureTypeReferences, SizeMeasureTypeReference::getTopiaId);
    
    100
    +    }
    
    101
    +
    
    102
    +    Optional<SizeMeasureTypeReference> getSpeciesDefaultSizeMeasureType(SpeciesReference species) {
    
    103
    +        SizeMeasureTypeReference result = null;
    
    104
    +        if (species != null && species.getSizeMeasureTypeId() != null) {
    
    105
    +            String sizeMeasureId = species.getSizeMeasureTypeId();
    
    106
    +            result = sizeMeasureTypeReferenceMap.get(sizeMeasureId);
    
    107
    +            log.info("Use as default size measure type: " + result);
    
    108
    +        } else  {
    
    109
    +            log.info("No default size measure type defined (species is null, or no default size measure definied on it.");
    
    110
    +        }
    
    111
    +        return Optional.ofNullable(result);
    
    112
    +    }
    
    113
    +
    
    85 114
     }

  • client/src/main/java/fr/ird/observe/client/ui/content/data/seine/NonTargetSampleUIHandler.java
    ... ... @@ -44,7 +44,8 @@ import org.apache.commons.logging.LogFactory;
    44 44
     import org.nuiton.jaxx.runtime.spi.UIHandler;
    
    45 45
     import org.nuiton.validator.NuitonValidatorScope;
    
    46 46
     
    
    47
    -import javax.swing.*;
    
    47
    +import javax.swing.JComponent;
    
    48
    +import javax.swing.JTable;
    
    48 49
     import javax.swing.table.DefaultTableCellRenderer;
    
    49 50
     import java.util.Collection;
    
    50 51
     import java.util.LinkedList;
    
    ... ... @@ -60,21 +61,14 @@ import static org.nuiton.i18n.I18n.t;
    60 61
      */
    
    61 62
     public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetSampleDto, NonTargetLengthDto, NonTargetSampleUI> implements UIHandler<NonTargetSampleUI> {
    
    62 63
     
    
    63
    -    /**
    
    64
    -     * Logger
    
    65
    -     */
    
    66
    -    private static final Log log = LogFactory.getLog(NonTargetSampleUIHandler.class);
    
    67
    -
    
    68 64
         NonTargetSampleUIHandler() {
    
    69 65
             addReferentialFilter(NonTargetLengthDto.PROPERTY_SPECIES, incomingReferences -> {
    
    70 66
                 ReferentialDtoReferenceSet<SpeciesReference> sampleSpecies = getNonTargetSampleService().getSampleSpecies(getSelectedParentId());
    
    71 67
                 return new LinkedList<>(sampleSpecies.toSet());
    
    72
    -//            return ReferentialDtoReferences.filterEnabled(result);
    
    73 68
             });
    
    74 69
             addReferentialFilter(NonTargetLengthDto.PROPERTY_SPECIES_FATE, incomingReferences -> {
    
    75 70
                 Collection<SpeciesFateReference> speciesFate = getModel().getForm().getObject().getSpeciesFate();
    
    76 71
                 return new LinkedList<>(speciesFate);
    
    77
    -//            return ReferentialDtoReferences.filterEnabled(result);
    
    78 72
             });
    
    79 73
         }
    
    80 74
     
    
    ... ... @@ -106,7 +100,7 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS
    106 100
     
    
    107 101
             // on utilise le code par defaut de l'espèce
    
    108 102
             Optional<SizeMeasureTypeReference> sizeMeasureType = getSpeciesDefaultSizeMeasureType(species);
    
    109
    -        log.debug("Default size measure "+sizeMeasureType.orElse(null));
    
    103
    +        log.debug("Default size measure " + sizeMeasureType.orElse(null));
    
    110 104
             getUi().getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null));
    
    111 105
             resetDefaultSizeMeasureType();
    
    112 106
         }
    
    ... ... @@ -350,21 +344,11 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS
    350 344
             // normalement cela est fait quand on fait le setForm (mais ici le setForm est fait trop tôt)
    
    351 345
             updateUiWithReferenceSetsFromModel();
    
    352 346
     
    
    347
    +        loadSizeMeasureTypes();
    
    353 348
             NonTargetSampleHelper.copyNonTargetSampleDto(form.getObject(), getBean());
    
    354 349
     
    
    355 350
         }
    
    356 351
     
    
    357
    -    private Optional<SizeMeasureTypeReference> getSpeciesDefaultSizeMeasureType(SpeciesReference species) {
    
    358
    -        Optional<SizeMeasureTypeReference> result = Optional.empty();
    
    359
    -        if (species != null) {
    
    360
    -
    
    361
    -            String sizeMeasureId = species.getSizeMeasureTypeId();
    
    362
    -            result = getUi().getSizeMeasureType().getData().stream()
    
    363
    -                    .filter(s -> s.getId().equals(sizeMeasureId)).findFirst();
    
    364
    -        }
    
    365
    -        return result;
    
    366
    -    }
    
    367
    -
    
    368 352
         class TablePopupSupport extends AutotSelectRowAndShowPopupActionSupport {
    
    369 353
     
    
    370 354
             private final NonTargetSampleUI ui;
    

  • client/src/main/java/fr/ird/observe/client/ui/content/data/seine/TargetSampleUIHandler.java
    ... ... @@ -8,12 +8,12 @@
    8 8
      * it under the terms of the GNU General Public License as
    
    9 9
      * published by the Free Software Foundation, either version 3 of the
    
    10 10
      * License, or (at your option) any later version.
    
    11
    - * 
    
    11
    + *
    
    12 12
      * This program is distributed in the hope that it will be useful,
    
    13 13
      * but WITHOUT ANY WARRANTY; without even the implied warranty of
    
    14 14
      * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    
    15 15
      * GNU General Public License for more details.
    
    16
    - * 
    
    16
    + *
    
    17 17
      * You should have received a copy of the GNU General Public
    
    18 18
      * License along with this program.  If not, see
    
    19 19
      * <http://www.gnu.org/licenses/gpl-3.0.html>.
    
    ... ... @@ -41,11 +41,10 @@ import fr.ird.observe.dto.referential.SizeMeasureTypeReference;
    41 41
     import fr.ird.observe.dto.referential.SpeciesDto;
    
    42 42
     import fr.ird.observe.dto.referential.SpeciesReference;
    
    43 43
     import fr.ird.observe.dto.result.SaveResultDto;
    
    44
    -import org.apache.commons.logging.Log;
    
    45
    -import org.apache.commons.logging.LogFactory;
    
    46 44
     import org.nuiton.validator.NuitonValidatorScope;
    
    47 45
     
    
    48
    -import javax.swing.*;
    
    46
    +import javax.swing.JComponent;
    
    47
    +import javax.swing.JTable;
    
    49 48
     import javax.swing.table.DefaultTableCellRenderer;
    
    50 49
     import java.util.List;
    
    51 50
     import java.util.Optional;
    
    ... ... @@ -59,9 +58,6 @@ import static org.nuiton.i18n.I18n.t;
    59 58
      */
    
    60 59
     public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, TargetLengthDto, U>> extends AbstractSampleUIHandler<TargetSampleDto, TargetLengthDto, U> {
    
    61 60
     
    
    62
    -    /** Logger */
    
    63
    -    private static final Log log = LogFactory.getLog(TargetSampleUIHandler.class);
    
    64
    -
    
    65 61
         /**
    
    66 62
          * Pour différencier positionner l'invariant de l'écran
    
    67 63
          * {@link TargetSampleDto#getDiscarded()}.
    
    ... ... @@ -83,6 +79,65 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar
    83 79
             });
    
    84 80
         }
    
    85 81
     
    
    82
    +    /**
    
    83
    +     * Le mode de saisie a été mis à jour.
    
    84
    +     *
    
    85
    +     * @param newMode le nouveau de mode de saisie à utiliser
    
    86
    +     * @since 1.8
    
    87
    +     */
    
    88
    +    static void updateModeSaisie(TargetSampleUI ui, AcquisitionMode newMode) {
    
    89
    +
    
    90
    +        if (newMode == null) {
    
    91
    +
    
    92
    +            // mode null (cela peut arriver avec les bindings)
    
    93
    +            return;
    
    94
    +        }
    
    95
    +        boolean createMode = ui.getTableModel().isCreate();
    
    96
    +
    
    97
    +        TargetLengthDto editBean = ui.getTableEditBean();
    
    98
    +        switch (newMode) {
    
    99
    +
    
    100
    +            case byEffectif:
    
    101
    +
    
    102
    +                // le weight n'est pas modifiable
    
    103
    +                ui.getWeight().setEnabled(false);
    
    104
    +
    
    105
    +                // l'count est modifiable
    
    106
    +                ui.getCount().setEnabled(true);
    
    107
    +
    
    108
    +                if (createMode) {
    
    109
    +
    
    110
    +                    // on supprime le weight (si il a été saisie)
    
    111
    +                    editBean.setWeight(null);
    
    112
    +                    // on supprime aussi l'count (pour forcer la saisie)
    
    113
    +                    editBean.setCount(null);
    
    114
    +                }
    
    115
    +                break;
    
    116
    +
    
    117
    +            case byIndividu:
    
    118
    +
    
    119
    +                // le weight est pas modifiable
    
    120
    +                ui.getWeight().setEnabled(true);
    
    121
    +
    
    122
    +                // l'count n'est pas modifiable et est toujours de 1
    
    123
    +                ui.getCount().setEnabled(false);
    
    124
    +
    
    125
    +
    
    126
    +                if (createMode) {
    
    127
    +
    
    128
    +                    // on positionne l'count à 1 (seule valeur possible)
    
    129
    +                    editBean.setCount(1);
    
    130
    +                }
    
    131
    +                break;
    
    132
    +        }
    
    133
    +
    
    134
    +        if (createMode) {
    
    135
    +
    
    136
    +            // on propage le mode de saisie dans le bean
    
    137
    +            editBean.setAcquisitionMode(newMode.ordinal());
    
    138
    +        }
    
    139
    +    }
    
    140
    +
    
    86 141
         @Override
    
    87 142
         public void afterInit(U ui) {
    
    88 143
             super.afterInit(ui);
    
    ... ... @@ -111,7 +166,6 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar
    111 166
     
    
    112 167
             // on utilise le code par defaut de l'espèce
    
    113 168
             Optional<SizeMeasureTypeReference> sizeMeasureType = getSpeciesDefaultSizeMeasureType(species);
    
    114
    -        log.debug("Default size measure "+sizeMeasureType.orElse(null));
    
    115 169
             ((TargetSampleUI) getUi()).getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null));
    
    116 170
             resetDefaultSizeMeasureType();
    
    117 171
         }
    
    ... ... @@ -208,9 +262,8 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar
    208 262
     
    
    209 263
             List<SizeMeasureTypeReference> sizeMeasureTypes = getReferentialReferences(SizeMeasureTypeReference.class);
    
    210 264
             List<SizeMeasureTypeReference> data = SizeMeasureTypeHelper.filterForSeine(sizeMeasureTypes);
    
    211
    -        if (log.isInfoEnabled()) {
    
    212
    -            log.info("Using " + data.size() + " size measure type(s).");
    
    213
    -        }
    
    265
    +        log.info("Using " + data.size() + " size measure type(s).");
    
    266
    +        loadSizeMeasureTypes();
    
    214 267
             checkSizeMeasureTypes(data);
    
    215 268
             ((TargetSampleUI) getUi()).getSizeMeasureType().setData(data);
    
    216 269
         }
    
    ... ... @@ -268,78 +321,16 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar
    268 321
                 mode = ContentMode.READ;
    
    269 322
     
    
    270 323
                 addMessage(getUi(),
    
    271
    -                       NuitonValidatorScope.INFO,
    
    272
    -                       getTypeI18nKey(SetSeineDto.class),
    
    273
    -                       discarded ?
    
    274
    -                               t("observe.common.SetSeineDto.message.no.targetCatch") :
    
    275
    -                               t("observe.common.SetSeineDto.message.no.targetDiscarded")
    
    324
    +                    NuitonValidatorScope.INFO,
    
    325
    +                    getTypeI18nKey(SetSeineDto.class),
    
    326
    +                    discarded ?
    
    327
    +                            t("observe.common.SetSeineDto.message.no.targetCatch") :
    
    328
    +                            t("observe.common.SetSeineDto.message.no.targetDiscarded")
    
    276 329
                 );
    
    277 330
             }
    
    278 331
             return mode;
    
    279 332
         }
    
    280 333
     
    
    281
    -    /**
    
    282
    -     * Le mode de saisie a été mis à jour.
    
    283
    -     *
    
    284
    -     * @param newMode le nouveau de mode de saisie à utiliser
    
    285
    -     * @since 1.8
    
    286
    -     */
    
    287
    -    static void updateModeSaisie(TargetSampleUI ui, AcquisitionMode newMode) {
    
    288
    -
    
    289
    -        if (log.isDebugEnabled()) {
    
    290
    -            log.debug("Change mode saisie to " + newMode);
    
    291
    -        }
    
    292
    -        if (newMode == null) {
    
    293
    -
    
    294
    -            // mode null (cela peut arriver avec les bindings)
    
    295
    -            return;
    
    296
    -        }
    
    297
    -        boolean createMode = ui.getTableModel().isCreate();
    
    298
    -
    
    299
    -        TargetLengthDto editBean = ui.getTableEditBean();
    
    300
    -        switch (newMode) {
    
    301
    -
    
    302
    -            case byEffectif:
    
    303
    -
    
    304
    -                // le weight n'est pas modifiable
    
    305
    -                ui.getWeight().setEnabled(false);
    
    306
    -
    
    307
    -                // l'count est modifiable
    
    308
    -                ui.getCount().setEnabled(true);
    
    309
    -
    
    310
    -                if (createMode) {
    
    311
    -
    
    312
    -                    // on supprime le weight (si il a été saisie)
    
    313
    -                    editBean.setWeight(null);
    
    314
    -                    // on supprime aussi l'count (pour forcer la saisie)
    
    315
    -                    editBean.setCount(null);
    
    316
    -                }
    
    317
    -                break;
    
    318
    -
    
    319
    -            case byIndividu:
    
    320
    -
    
    321
    -                // le weight est pas modifiable
    
    322
    -                ui.getWeight().setEnabled(true);
    
    323
    -
    
    324
    -                // l'count n'est pas modifiable et est toujours de 1
    
    325
    -                ui.getCount().setEnabled(false);
    
    326
    -
    
    327
    -
    
    328
    -                if (createMode) {
    
    329
    -
    
    330
    -                    // on positionne l'count à 1 (seule valeur possible)
    
    331
    -                    editBean.setCount(1);
    
    332
    -                }
    
    333
    -                break;
    
    334
    -        }
    
    335
    -
    
    336
    -        if (createMode) {
    
    337
    -
    
    338
    -            // on propage le mode de saisie dans le bean
    
    339
    -            editBean.setAcquisitionMode(newMode.ordinal());
    
    340
    -        }
    
    341
    -    }
    
    342
    -
    
    343 334
         public void resetDefaultSizeMeasureType() {
    
    344 335
             TargetSampleUI ui = (TargetSampleUI) getUi();
    
    345 336
             ui.getSizeMeasureType().setSelectedItem(null);
    
    ... ... @@ -371,17 +362,6 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar
    371 362
             TargetSampleHelper.copyTargetSampleDto(form.getObject(), getBean());
    
    372 363
         }
    
    373 364
     
    
    374
    -    private Optional<SizeMeasureTypeReference> getSpeciesDefaultSizeMeasureType(SpeciesReference species) {
    
    375
    -        Optional<SizeMeasureTypeReference> result = Optional.empty();
    
    376
    -        if (species != null) {
    
    377
    -
    
    378
    -            String sizeMeasureId = species.getSizeMeasureTypeId();
    
    379
    -            result = ((TargetSampleUI) getUi()).getSizeMeasureType().getData().stream()
    
    380
    -                    .filter(s -> s.getId().equals(sizeMeasureId)).findFirst();
    
    381
    -        }
    
    382
    -        return result;
    
    383
    -    }
    
    384
    -
    
    385 365
         class TablePopupSupport extends AutotSelectRowAndShowPopupActionSupport {
    
    386 366
     
    
    387 367
             private final TargetSampleUI ui;