This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 3f97c1a1e43ba9555717322236c4fab4dc722309 Author: Benjamin POUSSIN <poussin@codelutin.com> Date: Thu Jul 28 16:12:10 2016 +0200 fixes #8331: [CAPTURE] permettre de modifier le taxon sur des lots avec mensurations déjà enregistrées --- .../catches/species/edit/SpeciesBatchRowModel.java | 19 ++++++-- .../species/edit/SpeciesBatchUIHandler.java | 2 +- .../edit/actions/RenameSpeciesBatchAction.java | 52 ++++++++++++++++++++++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 2 +- 4 files changed, 69 insertions(+), 6 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/edit/SpeciesBatchRowModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/edit/SpeciesBatchRowModel.java index 6d861f2..0529dd5 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/edit/SpeciesBatchRowModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/edit/SpeciesBatchRowModel.java @@ -708,14 +708,25 @@ public class SpeciesBatchRowModel extends AbstractTuttiBeanUIModel<SpeciesBatch, } } - public boolean containsIndividualObservations() { + public boolean containsIndividualObservations(boolean withSampleCode) { - boolean result = CollectionUtils.isNotEmpty(getIndividualObservation()); + boolean result; + if (withSampleCode) { + result = false; + for (IndividualObservationBatchRowModel obs : getIndividualObservation()) { + result = obs.getSamplingCode() != null; + if (result) { + break; + } + } + } else { + result = CollectionUtils.isNotEmpty(getIndividualObservation()); + } if (!result && !isChildBatchsEmpty()) { for (SpeciesBatchRowModel childRow : childBatch) { - result = childRow.containsIndividualObservations(); + result = childRow.containsIndividualObservations(withSampleCode); if (result) { break; } @@ -723,6 +734,6 @@ public class SpeciesBatchRowModel extends AbstractTuttiBeanUIModel<SpeciesBatch, } return result; - } + } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/edit/SpeciesBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/edit/SpeciesBatchUIHandler.java index e890545..ef4fd87 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/edit/SpeciesBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/edit/SpeciesBatchUIHandler.java @@ -553,7 +553,7 @@ public class SpeciesBatchUIHandler extends AbstractTuttiBatchTableUIHandler<Spec if (enableRename) { - enableRename = !row.containsIndividualObservations(); + enableRename = !row.containsIndividualObservations(true); } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/edit/actions/RenameSpeciesBatchAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/edit/actions/RenameSpeciesBatchAction.java index 8da4e90..477333d 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/edit/actions/RenameSpeciesBatchAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/edit/actions/RenameSpeciesBatchAction.java @@ -27,6 +27,8 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategory; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Speciess; +import fr.ifremer.tutti.persistence.entities.referential.TaxonCache; +import fr.ifremer.tutti.persistence.entities.referential.TaxonCaches; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBenthosBatchUISupport; @@ -35,6 +37,7 @@ import fr.ifremer.tutti.ui.swing.content.operation.catches.species.edit.SpeciesB import fr.ifremer.tutti.ui.swing.content.operation.catches.species.edit.SpeciesBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.edit.SpeciesBatchUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.edit.SpeciesBatchUIModel; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.IndividualObservationBatchRowModel; import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import jaxx.runtime.SwingUtil; import org.jdesktop.swingx.JXTable; @@ -42,8 +45,10 @@ import org.jdesktop.swingx.JXTable; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; +import java.util.Iterator; import java.util.List; import java.util.Map; +import org.apache.commons.lang3.StringUtils; import static org.nuiton.i18n.I18n.t; @@ -97,6 +102,32 @@ public class RenameSpeciesBatchAction extends LongActionSupport<SpeciesBatchUIMo allSpeciesList.removeAll(synonyms); } + if (row.containsIndividualObservations(true)) { + // remove species without same length Step Caracteristic + + TaxonCache taxonCache = TaxonCaches.createSpeciesCacheWithoutVernacularCode(getContext().getPersistenceService(), getDataContext().getProtocol()); + + Species species = row.getSpecies(); + String lengthStepPmfmId = taxonCache.getLengthStepPmfmId(species); + + // remove species with different lengthStepCaracteristic + Iterator<Species> i = speciesList.iterator(); + while(i.hasNext()) { + Species s = i.next(); + if (!StringUtils.equals(lengthStepPmfmId, taxonCache.getLengthStepPmfmId(s))) { + i.remove(); + } + } + + i = allSpeciesList.iterator(); + while(i.hasNext()) { + Species s = i.next(); + if (!StringUtils.equals(lengthStepPmfmId, taxonCache.getLengthStepPmfmId(s))) { + i.remove(); + } + } + } + selectedSpecies = openAddSpeciesDialog(t("tutti.selectSpecies.title"), allSpeciesList, speciesList); if (selectedSpecies != null && !selectedSpecies.isReferenceTaxon()) { @@ -136,6 +167,27 @@ public class RenameSpeciesBatchAction extends LongActionSupport<SpeciesBatchUIMo speciesUsed.remove(row.getSpecies()); changeChildrenSpecies(row, selectedSpecies); speciesUsed.add(selectedSpecies); + + // change species in IndividualObservations + setIndividualObservationSpecies(row, selectedSpecies); + } + + protected void setIndividualObservationSpecies(SpeciesBatchRowModel row, Species species) { + boolean mustSave = false; + for (IndividualObservationBatchRowModel o : row.getIndividualObservation()) { + o.setSpecies(species); + mustSave = true; + } + if (mustSave) { + handler.saveRow(row); + } + + List<SpeciesBatchRowModel> children = row.getChildBatch(); + if (children != null) { + for (SpeciesBatchRowModel c : children) { + setIndividualObservationSpecies(c, species); + } + } } protected void changeChildrenSpecies(SpeciesBatchRowModel row, Species species) { diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties index 3519009..ba3f68b 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties @@ -1372,7 +1372,7 @@ tutti.editSpeciesBatch.action.removeSubBatch.mnemonic=f tutti.editSpeciesBatch.action.removeSubBatch.tip=Supprimer tous les lots fils du lot sélectionné tutti.editSpeciesBatch.action.renameBatch=Corriger l'espèce tutti.editSpeciesBatch.action.renameBatch.mnemonic=o -tutti.editSpeciesBatch.action.renameBatch.tip=Corriger l'espèce +tutti.editSpeciesBatch.action.renameBatch.tip=Corriger l'espèce (seules les espèces sans code de prélèvement sont corrigeable) tutti.editSpeciesBatch.action.showReport=Consulter le rapport généré tutti.editSpeciesBatch.action.splitBatch=Catégoriser le lot tutti.editSpeciesBatch.action.splitBatch.mnemonic=C -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.