Author: kmorin Date: 2013-04-30 16:12:06 +0200 (Tue, 30 Apr 2013) New Revision: 896 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/896 Log: refs #2000 [TECH] Mettre en place les messages d'erreur m?\195?\169tier fixes #2386 [CAPTURE] - Esp?\195?\168ces - Erreur quand on veut catgoriser un lot cat?\195?\169goriser par age Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeHelper.java trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.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-persistence/src/main/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeHelper.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeHelper.java 2013-04-30 12:23:35 UTC (rev 895) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeHelper.java 2013-04-30 14:12:06 UTC (rev 896) @@ -48,6 +48,8 @@ import java.util.Properties; import java.util.Set; +import static org.nuiton.i18n.I18n._; + /** * Helper to synchronize referential between two databases. * @@ -103,12 +105,12 @@ try { ProgressionModel progressionModel = result.getProgressionModel(); - progressionModel.setMessage("Connection à la base de synchronisation"); + progressionModel.setMessage(_("tutti.persistence.synchronizeReferential.prepare.step1")); // create local connection localConnection = TuttiEntities.createConnection(localProperties); - progressionModel.setMessage("Connection à la base à synchroniser"); + progressionModel.setMessage(_("tutti.persistence.synchronizeReferential.prepare.step2")); // create remote Connection remoteConnection = TuttiEntities.createConnection(remoteProperties); @@ -119,7 +121,7 @@ TuttiDatabaseMetadata remoteMeta = loadDatabaseMetadata(remoteConnection, dialect); - progressionModel.setMessage("Vérification de la compatibilité des schémas"); + progressionModel.setMessage(_("tutti.persistence.synchronizeReferential.prepare.step3")); // check schema try { @@ -136,7 +138,7 @@ String tableName = tuttiTable.name(); - progressionModel.setMessage("Lecture de la table " + tableName); + progressionModel.setMessage(_("tutti.persistence.synchronizeReferential.prepare.step4", tableName)); TuttiTableMetadata table = remoteMeta.getTable(tableName); @@ -219,7 +221,7 @@ String tableName = tuttiTable.name(); - progressionModel.setMessage("Mise à jour de la table " + tableName); + progressionModel.setMessage(_("tutti.persistence.synchronizeReferential.synchronize.step1", tableName)); TuttiTableMetadata table = remoteMeta.getTable(tableName); @@ -243,7 +245,7 @@ releaseSynch(localConnection); } - progressionModel.setMessage("Sauvegarde des données dans la base locale"); + progressionModel.setMessage(_("tutti.persistence.synchronizeReferential.synchronize.step2")); localConnection.commit(); @@ -571,7 +573,7 @@ String tableName = table.getName(); - result.getProgressionModel().setMessage("Mise à jour de la table " + tableName); + result.getProgressionModel().setMessage(_("tutti.persistence.synchronizeReferential.synchronizeTable", tableName)); String tablePrefix = getTablePrefix(table); Modified: trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties =================================================================== --- trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties 2013-04-30 12:23:35 UTC (rev 895) +++ trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties 2013-04-30 14:12:06 UTC (rev 896) @@ -36,6 +36,13 @@ tutti.persistence.mkDir.error= tutti.persistence.protocol.delete.error= tutti.persistence.protocol.fromFile.error= +tutti.persistence.synchronizeReferential.prepare.step1= +tutti.persistence.synchronizeReferential.prepare.step2= +tutti.persistence.synchronizeReferential.prepare.step3= +tutti.persistence.synchronizeReferential.prepare.step4= +tutti.persistence.synchronizeReferential.synchronize.step1= +tutti.persistence.synchronizeReferential.synchronize.step2= +tutti.persistence.synchronizeReferential.synchronizeTable= tutti.persistence.tableMetadata.instanciation.error= tutti.sampleCategoryType.age= tutti.sampleCategoryType.maturity= Modified: trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties =================================================================== --- trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties 2013-04-30 12:23:35 UTC (rev 895) +++ trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties 2013-04-30 14:12:06 UTC (rev 896) @@ -36,6 +36,13 @@ tutti.persistence.mkDir.error=Erreur lors de la création du dossier %s tutti.persistence.protocol.delete.error=Erreur lors de la suppression du protocole %1s (fichier %2s) tutti.persistence.protocol.fromFile.error=Erreur lors de l'import du protocol du fichier %s +tutti.persistence.synchronizeReferential.prepare.step1=Connection à la base de synchronisation +tutti.persistence.synchronizeReferential.prepare.step2=Connection à la base à synchroniser +tutti.persistence.synchronizeReferential.prepare.step3=Vérification de la compatibilité des schémas +tutti.persistence.synchronizeReferential.prepare.step4=Lecture de la table %s +tutti.persistence.synchronizeReferential.synchronize.step1=Mise à jour de la table %s +tutti.persistence.synchronizeReferential.synchronize.step2=Sauvegarde des données dans la base locale +tutti.persistence.synchronizeReferential.synchronizeTable=Mise à jour de la table %s tutti.persistence.tableMetadata.instanciation.error=Erreur à l'initialisation de %s tutti.sampleCategoryType.age=Age tutti.sampleCategoryType.maturity=Maturité Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java 2013-04-30 12:23:35 UTC (rev 895) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java 2013-04-30 14:12:06 UTC (rev 896) @@ -163,24 +163,24 @@ if (Version.VZERO.toString().equals(info.oldVersion)) { - progressionModel.setMessage("Téléchargement et installation de la base (version " + info.newVersion + ")"); + progressionModel.setMessage(_("tutti.applicationUpdater.startUpdate.db.installation", info.newVersion)); } else { - progressionModel.setMessage("Téléchargement et mise à jour de la base (version " + info.newVersion + ")"); + progressionModel.setMessage(_("tutti.applicationUpdater.startUpdate.db.update", info.newVersion)); } } if (UpdateType.JRE.name().toLowerCase().equals(info.name)) { - progressionModel.setMessage("Téléchargement et installation d'une nouvelle JRE (version " + info.newVersion + ")"); + progressionModel.setMessage(_("tutti.applicationUpdater.startUpdate.jre", info.newVersion)); } if (UpdateType.TUTTI.name().toLowerCase().equals(info.name)) { - progressionModel.setMessage("Téléchargement et installation d'une nouvelle version de Tutti (version " + info.newVersion + ")"); + progressionModel.setMessage(_("tutti.applicationUpdater.startUpdate.tutti", info.newVersion)); } if (UpdateType.I18N.name().toLowerCase().equals(info.name)) { - progressionModel.setMessage("Téléchargement et installation d'une nouveau version I18N (version " + info.newVersion + ")"); + progressionModel.setMessage(_("tutti.applicationUpdater.startUpdate.i18n", info.newVersion)); } if (UpdateType.HELP.name().toLowerCase().equals(info.name)) { - progressionModel.setMessage("Téléchargement et installation d'une nouveau version Help (version " + info.newVersion + ")"); + progressionModel.setMessage(_("tutti.applicationUpdater.startUpdate.help", info.newVersion)); } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java 2013-04-30 12:23:35 UTC (rev 895) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java 2013-04-30 14:12:06 UTC (rev 896) @@ -123,7 +123,7 @@ ProgressionModel progressionModel = new ProgressionModel(); context.getActionUI().getModel().setProgressionModel(progressionModel); - progressionModel.setMessage("Recherche de mises à jour"); + progressionModel.setMessage(_("tutti.updateApplication.checkUpdates")); TuttiApplicationUpdaterCallBack callback = new TuttiApplicationUpdaterCallBack(this, progressionModel); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java 2013-04-30 12:23:35 UTC (rev 895) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java 2013-04-30 14:12:06 UTC (rev 896) @@ -93,7 +93,7 @@ File dest = new File(config.getTuttiBasedir(), "NEW"); ProgressionModel progressionModel = new ProgressionModel(); context.getActionUI().getModel().setProgressionModel(progressionModel); - progressionModel.setMessage("Recherche de mises à jour de base"); + progressionModel.setMessage(_("tutti.dbManager.action.upgradeDb.check")); TuttiApplicationUpdaterCallBack callback = new TuttiApplicationUpdaterCallBack(this, progressionModel); callback.setTypes(TuttiApplicationUpdaterCallBack.UpdateType.DB); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-04-30 12:23:35 UTC (rev 895) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-04-30 14:12:06 UTC (rev 896) @@ -970,8 +970,17 @@ if (enableSplit) { // can split if selected batch is a leaf + Map<Integer, SampleCategoryEnum> categoryEnumMap = + SampleCategoryEnum.toIdMapping(); + + List<Integer> samplingOrderIds = getConfig().getServiceConfig().getSamplingOrderIds(); + int lastSamplingId = samplingOrderIds.get(samplingOrderIds.size() - 1); + SampleCategoryEnum lastCategory = categoryEnumMap.get(lastSamplingId); + + // can split if selected batch is a leaf enableSplit = row.isBatchLeaf() && selectedRowCount == 1 + && !lastCategory.equals(row.getFinestCategory().getCategoryType()) && row.getNumber() == null && (row.getComputedNumber() == null || row.getComputedNumber() == 0); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUI.css 2013-04-30 12:23:35 UTC (rev 895) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUI.css 2013-04-30 14:12:06 UTC (rev 896) @@ -22,12 +22,6 @@ * #L% */ -BeanFilterableComboBox { - showReset: true; - i18nPrefix: "tutti.property."; - bean: {model}; -} - #splitBenthosBatchTopPanel { _help: {"tutti.splitBenthosBatch.help"}; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUI.jaxx 2013-04-30 12:23:35 UTC (rev 895) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUI.jaxx 2013-04-30 14:12:06 UTC (rev 896) @@ -32,7 +32,6 @@ org.jdesktop.swingx.JXTable - jaxx.runtime.swing.editor.bean.BeanFilterableComboBox jaxx.runtime.validator.swing.SwingValidatorUtil jaxx.runtime.validator.swing.SwingValidatorMessageTableModel Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java 2013-04-30 12:23:35 UTC (rev 895) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java 2013-04-30 14:12:06 UTC (rev 896) @@ -41,6 +41,7 @@ import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; import jaxx.runtime.SwingUtil; import jaxx.runtime.validator.swing.SwingValidator; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; @@ -191,6 +192,9 @@ } }); + ui.getCategoryComboBox().setRenderer(newListCellRender(SampleCategoryEnum.class)); + + ui.getCategoryComboBox().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -271,18 +275,28 @@ if (batch.getSizeCategory().isValid()) { categories.remove(SampleCategoryEnum.size); + categories.remove(SampleCategoryEnum.sortedUnsorted); } if (batch.getSexCategory().isValid()) { categories.remove(SampleCategoryEnum.sex); + categories.remove(SampleCategoryEnum.size); + categories.remove(SampleCategoryEnum.sortedUnsorted); } if (batch.getMaturityCategory().isValid()) { categories.remove(SampleCategoryEnum.maturity); + categories.remove(SampleCategoryEnum.sex); + categories.remove(SampleCategoryEnum.size); + categories.remove(SampleCategoryEnum.sortedUnsorted); } if (batch.getAgeCategory().isValid()) { categories.remove(SampleCategoryEnum.age); + categories.remove(SampleCategoryEnum.maturity); + categories.remove(SampleCategoryEnum.sex); + categories.remove(SampleCategoryEnum.size); + categories.remove(SampleCategoryEnum.sortedUnsorted); } } @@ -293,7 +307,9 @@ model.setSampleWeight(null); model.setCategory(categories); - model.setSelectedCategory(categories.get(0)); + if (CollectionUtils.isNotEmpty(categories)) { + model.setSelectedCategory(categories.get(0)); + } // keep batch (will be used to push back editing entry) model.setBatch(batch); @@ -322,11 +338,14 @@ log.info("Will recompute sample weight from row: " + row); } - Float result = 0f; + Float result = null; List<SplitBenthosBatchRowModel> rows = getTableModel().getRows(); for (SplitBenthosBatchRowModel rowModel : rows) { Float weight = rowModel.getWeight(); if (weight != null) { + if (result == null) { + result = 0f; + } result += weight; } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-04-30 12:23:35 UTC (rev 895) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-04-30 14:12:06 UTC (rev 896) @@ -71,6 +71,7 @@ import jaxx.runtime.SwingUtil; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.ListUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -965,8 +966,16 @@ if (enableSplit) { // can split if selected batch is a leaf + Map<Integer, SampleCategoryEnum> categoryEnumMap = + SampleCategoryEnum.toIdMapping(); + + List<Integer> samplingOrderIds = getConfig().getServiceConfig().getSamplingOrderIds(); + int lastSamplingId = samplingOrderIds.get(samplingOrderIds.size() - 1); + SampleCategoryEnum lastCategory = categoryEnumMap.get(lastSamplingId); + enableSplit = row.isBatchLeaf() && selectedRowCount == 1 + && !lastCategory.equals(row.getFinestCategory().getCategoryType()) && row.getNumber() == null && (row.getComputedNumber() == null || row.getComputedNumber() == 0); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css 2013-04-30 12:23:35 UTC (rev 895) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css 2013-04-30 14:12:06 UTC (rev 896) @@ -22,12 +22,6 @@ * #L% */ -BeanFilterableComboBox { - showReset: true; - i18nPrefix: "tutti.property."; - bean: {model}; -} - #splitSpeciesBatchTopPanel { _help: {"tutti.splitSpeciesBatch.help"}; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.jaxx 2013-04-30 12:23:35 UTC (rev 895) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.jaxx 2013-04-30 14:12:06 UTC (rev 896) @@ -32,7 +32,6 @@ org.jdesktop.swingx.JXTable - jaxx.runtime.swing.editor.bean.BeanFilterableComboBox jaxx.runtime.validator.swing.SwingValidatorUtil jaxx.runtime.validator.swing.SwingValidatorMessageTableModel Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-04-30 12:23:35 UTC (rev 895) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-04-30 14:12:06 UTC (rev 896) @@ -41,10 +41,12 @@ import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; import jaxx.runtime.SwingUtil; import jaxx.runtime.validator.swing.SwingValidator; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.table.DefaultTableColumnModelExt; +import org.nuiton.util.decorator.Decorator; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; @@ -55,6 +57,8 @@ import java.beans.PropertyChangeListener; import java.util.List; +import static org.nuiton.i18n.I18n._; + /** * Handler of {@link SplitSpeciesBatchUI}. * @@ -191,6 +195,8 @@ } }); + ui.getCategoryComboBox().setRenderer(newListCellRender(SampleCategoryEnum.class)); + ui.getCategoryComboBox().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -271,18 +277,28 @@ if (batch.getSizeCategory().isValid()) { categories.remove(SampleCategoryEnum.size); + categories.remove(SampleCategoryEnum.sortedUnsorted); } if (batch.getSexCategory().isValid()) { categories.remove(SampleCategoryEnum.sex); + categories.remove(SampleCategoryEnum.size); + categories.remove(SampleCategoryEnum.sortedUnsorted); } if (batch.getMaturityCategory().isValid()) { categories.remove(SampleCategoryEnum.maturity); + categories.remove(SampleCategoryEnum.sex); + categories.remove(SampleCategoryEnum.size); + categories.remove(SampleCategoryEnum.sortedUnsorted); } if (batch.getAgeCategory().isValid()) { categories.remove(SampleCategoryEnum.age); + categories.remove(SampleCategoryEnum.maturity); + categories.remove(SampleCategoryEnum.sex); + categories.remove(SampleCategoryEnum.size); + categories.remove(SampleCategoryEnum.sortedUnsorted); } } @@ -293,7 +309,9 @@ model.setSampleWeight(null); model.setCategory(categories); - model.setSelectedCategory(categories.get(0)); + if (CollectionUtils.isNotEmpty(categories)) { + model.setSelectedCategory(categories.get(0)); + } // keep batch (will be used to push back editing entry) model.setBatch(batch); @@ -328,11 +346,14 @@ log.info("Will recompute sample weight from row: " + row); } - Float result = 0f; + Float result = null; List<SplitSpeciesBatchRowModel> rows = getTableModel().getRows(); for (SplitSpeciesBatchRowModel rowModel : rows) { Float weight = rowModel.getWeight(); if (weight != null) { + if (result == null) { + result = 0f; + } result += weight; } } 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-04-30 12:23:35 UTC (rev 895) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-04-30 14:12:06 UTC (rev 896) @@ -18,6 +18,12 @@ tutti.action.create.error= tutti.applicationUpdater.prepareFirstDB.copyDirectory.error= tutti.applicationUpdater.prepareFirstDB.deleteDirectory.error= +tutti.applicationUpdater.startUpdate.db.installation= +tutti.applicationUpdater.startUpdate.db.update= +tutti.applicationUpdater.startUpdate.help= +tutti.applicationUpdater.startUpdate.i18n= +tutti.applicationUpdater.startUpdate.jre= +tutti.applicationUpdater.startUpdate.tutti= tutti.applicationUpdater.synchroDB.prepare.error= tutti.applicationUpdater.synchroDB.synchro.error= tutti.applicationUpdater.synchroDB.writeVersion.error= @@ -233,6 +239,7 @@ tutti.dbManager.action.openDb.mnemonic= tutti.dbManager.action.openDb.tip= tutti.dbManager.action.upgradeDb= +tutti.dbManager.action.upgradeDb.check= tutti.dbManager.action.upgradeDb.mnemonic= tutti.dbManager.action.upgradeDb.opening= tutti.dbManager.action.upgradeDb.reloading= @@ -1033,6 +1040,7 @@ tutti.manageTemporaryReferential.title.choose.importTemporarySpeciesFile= tutti.manageTemporaryReferential.title.choose.importTemporaryVesselFile= tutti.message.action.running= +tutti.property.= tutti.property.get.error= tutti.property.set.error= tutti.sampleOrder.caracteristicNotFound= @@ -1142,6 +1150,7 @@ tutti.update.i18n= tutti.update.jre= tutti.update.tutti= +tutti.updateApplication.checkUpdates= tutti.updateApplication.message.success= tutti.updateApplication.noUpdate= tutti.updateApplication.title.success= 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-04-30 12:23:35 UTC (rev 895) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-30 14:12:06 UTC (rev 896) @@ -16,6 +16,12 @@ tutti.action.create.error=Erreur à l'instanciation de l'action %s tutti.applicationUpdater.prepareFirstDB.copyDirectory.error=Erreur lors de la copie du contenu du dossier %1s vers %2s tutti.applicationUpdater.prepareFirstDB.deleteDirectory.error=Erreur lors de la suppression du dossier %s +tutti.applicationUpdater.startUpdate.db.installation=Téléchargement et installation de la base (version %s) +tutti.applicationUpdater.startUpdate.db.update=Téléchargement et mise à jour de la base (version %s) +tutti.applicationUpdater.startUpdate.help=Téléchargement et installation d'une nouvelle version de l'aide (version %s) +tutti.applicationUpdater.startUpdate.i18n=Téléchargement et installation d'une nouvelle version des traductions (version %s) +tutti.applicationUpdater.startUpdate.jre=Téléchargement et installation d'une nouvelle JRE (version %s) +tutti.applicationUpdater.startUpdate.tutti=Téléchargement et installation d'une nouvelle version de Tutti (version %s) tutti.applicationUpdater.synchroDB.prepare.error=Erreur lors de la préparation de la synchronisation de la base tutti.applicationUpdater.synchroDB.synchro.error=Erreur lors de la synchronisation de la base tutti.applicationUpdater.synchroDB.writeVersion.error=Erreur lors de l'écriture de la nouvelle version de la base de données dans le fichier %s @@ -229,6 +235,7 @@ tutti.dbManager.action.openDb.mnemonic=O tutti.dbManager.action.openDb.tip=Ouvrir la base de données tutti.dbManager.action.upgradeDb=Vérifier les mises à jour +tutti.dbManager.action.upgradeDb.check=Recherche des mises à jour de la base tutti.dbManager.action.upgradeDb.mnemonic=V tutti.dbManager.action.upgradeDb.opening=Ouverture de la base de données tutti.dbManager.action.upgradeDb.reloading=Rechargement de la base de données @@ -1004,6 +1011,7 @@ tutti.manageTemporaryReferential.title.choose.importTemporarySpeciesFile=Importer un réferentiel Espèce tutti.manageTemporaryReferential.title.choose.importTemporaryVesselFile=Importer un réferentiel Navire tutti.message.action.running=<html>Action <strong>%s</strong> en cours d'execution...<hr/></html> +tutti.property.= tutti.property.get.error=Propriété %1s non trouvée sur l'objet de type %2s tutti.property.set.error=Propriété %1s non trouvée sur l'objet de type %2s tutti.sampleOrder.caracteristicNotFound=La caractéristique d'id %s n'est pas prévue pour l'échantillonage @@ -1112,6 +1120,7 @@ tutti.update.i18n=Traductions tutti.update.jre=Java tutti.update.tutti=Tutti +tutti.updateApplication.checkUpdates=Recherche de mises à jour tutti.updateApplication.message.success=La mise à jour nécessite le redémarrage du Tutti.\nL'application va se fermer puis se ré-ouvrir automatiquement. tutti.updateApplication.noUpdate=Aucune mise à jour de l'application détectée. tutti.updateApplication.title.success=Redémarrage de Tutti nécessaire...