Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe
Commits:
-
669db5b4
by Tony CHEMIT at 2018-07-04T09:34:47Z
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:
| ... | ... | @@ -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 {
|
| ... | ... | @@ -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 |
}
|
| ... | ... | @@ -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;
|
| ... | ... | @@ -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;
|