Author: tchemit Date: 2013-10-15 11:24:23 +0200 (Tue, 15 Oct 2013) New Revision: 1306 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1306 Log: fixes #3506: [DONNEES INDIVIDUELLES] Ajouter un warning si pas de mensuration ?\195?\160 recopier dans les observations individuelles fixes #3510: [DONNEES INDIVIDUELLES] Ajouter une confirmation lors de la cr?\195?\169ation de donn?\195?\169es individuelles sur une esp?\195?\168ce d?\195?\169j?\195?\160 renseign?\195?\169e Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel.java trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java 2013-10-15 09:23:49 UTC (rev 1305) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java 2013-10-15 09:24:23 UTC (rev 1306) @@ -468,12 +468,53 @@ IndividualObservationBatchTableModel tableModel = getTableModel(); if (model.isCreateFromBatch()) { + + Species species = model.getSpecies(); + + String speciesStr = decorate(species); + + // check if there is some rows to create + + if (!model.isSpeciesFromBatchWithCount()) { + + String htmlMessage = String.format("<html>%s</html>", + _("tutti.createIndividualObservationBatch.warn.nocount", speciesStr)); + JOptionPane.showMessageDialog(getContext().getMainUI(), + htmlMessage, + _("tutti.createIndividualObservationBatch.warn.nocount.title"), + JOptionPane.WARNING_MESSAGE); + return; + } + + // check if there is already some indivudal data for this species + + Set<Species> speciesUsed = getModel().getSpeciesUsed(); + if (speciesUsed.contains(species)) { + + String htmlMessage = String.format( + CONFIRMATION_FORMAT, + _("tutti.createIndividualObservationBatch.confirm.alreadyUsedSpecies.message", speciesStr), + _("tutti.createIndividualObservationBatch.confirm.alreadyUsedSpecies.help")); + int response = JOptionPane.showConfirmDialog( + getTopestUI(), + htmlMessage, + _("tutti.createIndividualObservationBatch.confirm.alreadyUsedSpecies.title"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.WARNING_MESSAGE); + + + boolean create = response == JOptionPane.OK_OPTION; + + if (!create) { + return; + } + } EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class); SpeciesBatchUIModel speciesBatchUIModel = parent.getSpeciesTabContent().getModel(); // get species rows to use (all leafs for the given species) - Species species = model.getSpecies(); + List<SpeciesBatchRowModel> leafs = speciesBatchUIModel.getLeafs(species); @@ -608,8 +649,6 @@ sb.append("<th>").append(_("tutti.createIndividualObservationBatch.field.individualObservationLengthStepCaracteristic")).append("</th>"); sb.append("</tr>"); - String speciesStr = decorate(species); - for (IndividualObservationBatchRowModel rowModel : rowsToCreate) { sb.append("<tr>"); sb.append("<td>").append(speciesStr).append("</td>"); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java 2013-10-15 09:23:49 UTC (rev 1305) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java 2013-10-15 09:24:23 UTC (rev 1306) @@ -23,6 +23,7 @@ */ import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchUIModel; @@ -31,6 +32,7 @@ import org.apache.commons.collections.CollectionUtils; import java.util.List; +import java.util.Set; import static org.nuiton.i18n.I18n.n_; @@ -93,6 +95,14 @@ return result; } + public Set<Species> getSpeciesUsed() { + Set<Species> result = Sets.newHashSet(); + for (IndividualObservationBatchRowModel row : getRows()) { + result.add(row.getSpecies()); + } + return result; + } + //------------------------------------------------------------------------// //-- TabContentModel --// //------------------------------------------------------------------------// Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel.java 2013-10-15 09:23:49 UTC (rev 1305) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel.java 2013-10-15 09:24:23 UTC (rev 1306) @@ -186,6 +186,10 @@ return isSpeciesFromBatch() && batchSpecies.get(getSpecies()) == 1; } + public boolean isSpeciesFromBatchWithCount() { + return isSpeciesFromBatch() && batchSpecies.get(getSpecies()) >0; + } + public void setBatchSpecies(Map<Species, Integer> batchSpecies) { this.batchSpecies = batchSpecies; firePropertyChange(PROPERTY_BATCH_SPECIES, null, batchSpecies); Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-10-15 09:23:49 UTC (rev 1305) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-10-15 09:24:23 UTC (rev 1306) @@ -236,6 +236,9 @@ tutti.createIndividualObservationBatch.action.saveAndContinue= tutti.createIndividualObservationBatch.action.saveAndContinue.mnemonic= tutti.createIndividualObservationBatch.action.saveAndContinue.tip= +tutti.createIndividualObservationBatch.confirm.alreadyUsedSpecies.help= +tutti.createIndividualObservationBatch.confirm.alreadyUsedSpecies.message= +tutti.createIndividualObservationBatch.confirm.alreadyUsedSpecies.title= tutti.createIndividualObservationBatch.confirm.help= tutti.createIndividualObservationBatch.confirm.message= tutti.createIndividualObservationBatch.confirm.title= @@ -250,6 +253,8 @@ tutti.createIndividualObservationBatch.field.individualObservationWeight= tutti.createIndividualObservationBatch.field.individualObservationWeight.tip= tutti.createIndividualObservationBatch.title= +tutti.createIndividualObservationBatch.warn.nocount= +tutti.createIndividualObservationBatch.warn.nocount.title= tutti.createMarineLitterBatch.action.cancel= tutti.createMarineLitterBatch.action.cancel.mnemonic= tutti.createMarineLitterBatch.action.cancel.tip= Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-10-15 09:23:49 UTC (rev 1305) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-10-15 09:24:23 UTC (rev 1306) @@ -234,7 +234,10 @@ tutti.createIndividualObservationBatch.action.saveAndContinue=Créer et Continuer tutti.createIndividualObservationBatch.action.saveAndContinue.mnemonic=C tutti.createIndividualObservationBatch.action.saveAndContinue.tip=Créer et saisir une nouvelle observation indidivuelle -tutti.createIndividualObservationBatch.confirm.help=Que voulez-vous faire?<ul><li><strong>Annuler</strong> pour rester sur cet écran et annuler la création</li><li><strong>Ok</strong> pour confirmer la création des données individuellesd</li></ul> +tutti.createIndividualObservationBatch.confirm.alreadyUsedSpecies.help=Que voulez-vous faire?<ul><li><strong>Annuler</strong> pour annuler la création des données individuelles</li><li><strong>Ok</strong> pour confirmer la création des données individuellesd</li></ul> +tutti.createIndividualObservationBatch.confirm.alreadyUsedSpecies.message=Il existe déjà des données individuelles pour l'espèce <strong>%s</strong><br/>Êtes-vous sûr de vouloir récupérer les données depuis l'onglet <strong>Espèces</strong>? +tutti.createIndividualObservationBatch.confirm.alreadyUsedSpecies.title=Confirmer la création des données individuelles sur une espèce déjà utilisée +tutti.createIndividualObservationBatch.confirm.help=Que voulez-vous faire?<ul><li><strong>Annuler</strong> pour ne pas créer les données individuelles</li><li><strong>Ok</strong> pour confirmer la création des données individuellesd</li></ul> tutti.createIndividualObservationBatch.confirm.message=Vous avez demandé la création des données individuelles pour l'espèce %s depuis les captures saisies.<br/>%s données vont être créées \: %s tutti.createIndividualObservationBatch.confirm.title=Confirmer la création des données individuelles tutti.createIndividualObservationBatch.field.createFromBatch=Créer les données depuis les captures @@ -248,6 +251,8 @@ tutti.createIndividualObservationBatch.field.individualObservationWeight=Poids tutti.createIndividualObservationBatch.field.individualObservationWeight.tip=Poids tutti.createIndividualObservationBatch.title=Créer une observation +tutti.createIndividualObservationBatch.warn.nocount=Aucune donnée individuelle pour l'espèce <strong>%s</strong> ne sera remplie pour la raison suivante\:<br/>Aucune mensuration (ou dénombrement) renseigné pour cette espèce dans l'onglet <strong>Espèces</strong>. +tutti.createIndividualObservationBatch.warn.nocount.title=Pas de mensuration pour l'éespèce sélectionnée tutti.createMarineLitterBatch.action.cancel=Annuler tutti.createMarineLitterBatch.action.cancel.mnemonic=A tutti.createMarineLitterBatch.action.cancel.tip=Annuler la création du lot macro-déchet