This is an automated email from the git hooks/post-receive script. New commit to branch feature/7063 in repository tutti. See http://git.codelutin.com/tutti.git commit 0ea56dc307593ec4207431b5df9c73b729d3e44f Author: Kevin Morin <morin@codelutin.com> Date: Wed Jan 13 18:51:09 2016 +0100 joue un bip à la réception d'une donnée de l'ychtiomètre et 3 bips différents en cas d'erreur (refs #7063) --- .../java/fr/ifremer/tutti/TuttiConfiguration.java | 8 ++++++-- .../fr/ifremer/tutti/TuttiConfigurationOption.java | 13 ++++++++++--- .../i18n/tutti-persistence_en_GB.properties | 2 ++ .../i18n/tutti-persistence_fr_FR.properties | 3 ++- .../swing/content/config/TuttiConfigUIHandler.java | 7 +++++-- .../frequency/SpeciesFrequencyUIHandler.java | 6 ++++++ .../fr/ifremer/tutti/ui/swing/util/SoundUtil.java | 22 ++++++++++++++++++++-- .../resources/i18n/tutti-ui-swing_en_GB.properties | 2 ++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 2 ++ 9 files changed, 55 insertions(+), 10 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfiguration.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfiguration.java index 7d5a819..550dc95 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfiguration.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfiguration.java @@ -728,8 +728,12 @@ public class TuttiConfiguration extends ApplicationConfiguration { return applicationConfig.getOptionAsInt(TuttiConfigurationOption.ICHTYOMETER_MAXIMUM_NUMBER_OF_ATTEMPT_TO_CONNECT.getKey()); } - public BeepFrequency getBeepFrequency() { - return (BeepFrequency) applicationConfig.getOptionAsObject(TuttiConfigurationOption.BEEP_FREQUENCY.getKey()); + public BeepFrequency getIchtyometerDataReceptionBeepFrequency() { + return BeepFrequency.valueOf(applicationConfig.getOption(TuttiConfigurationOption.ICHTYOMETER_DATA_RECEPTION_BEEP_FREQUENCY.getKey())); + } + + public BeepFrequency getIchtyometerErrorReceptionBeepFrequency() { + return BeepFrequency.valueOf(applicationConfig.getOption(TuttiConfigurationOption.ICHTYOMETER_ERROR_RECEPTION_BEEP_FREQUENCY.getKey())); } public String getJavaCommandPath() { diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfigurationOption.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfigurationOption.java index 4301378..836d2d9 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfigurationOption.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfigurationOption.java @@ -605,12 +605,19 @@ public enum TuttiConfigurationOption implements ConfigOptionDef { int.class, false ), - BEEP_FREQUENCY( - "tutti.ichtyometer.beepFrequency", - n("tutti.config.option.beepFrequency.description"), + ICHTYOMETER_DATA_RECEPTION_BEEP_FREQUENCY( + "tutti.ichtyometer.dataBeepFrequency", + n("tutti.config.option.dataBeepFrequency.description"), BeepFrequency.A2.toString(), BeepFrequency.class, false + ), + ICHTYOMETER_ERROR_RECEPTION_BEEP_FREQUENCY( + "tutti.ichtyometer.errorBeepFrequency", + n("tutti.config.option.errorBeepFrequency.description"), + BeepFrequency.A1.toString(), + BeepFrequency.class, + false ); /** Configuration key. */ diff --git a/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties b/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties index 1709df9..bb634eb 100644 --- a/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties +++ b/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties @@ -13,7 +13,9 @@ tutti.config.option.beepFrequency.description= tutti.config.option.cruiseId.description= tutti.config.option.csv.separator.description= tutti.config.option.data.directory.description= +tutti.config.option.dataBeepFrequency.description= tutti.config.option.db.import.skipBackup.description= +tutti.config.option.errorBeepFrequency.description= tutti.config.option.export.backup.directory.description= tutti.config.option.export.countryId.description= tutti.config.option.genericFormat.import.maximumRowsInErrorPerFile.description= diff --git a/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties b/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties index 36602b8..3a1fea2 100644 --- a/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties +++ b/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties @@ -5,11 +5,12 @@ application.common.unit.short.g=g application.common.unit.short.kg=kg tutti.config=Configuration d'Allegro Campagne tutti.config.option.basedir.description=Répertoire principale -tutti.config.option.beepFrequency.description=Tonalité du bip tutti.config.option.cruiseId.description=Identifiant de la dernière campagne utilisée tutti.config.option.csv.separator.description=Caractère séparateur pour les import / export de fichier au format csv. tutti.config.option.data.directory.description=Répertoire de données de l'application. Vous pouvez utiliser l'expression ${tutti.data.directory} pour le référence dans d'autres propriétés de configuration (ex\: ${tutti.data.directory}/tmp). +tutti.config.option.dataBeepFrequency.description=Tonalité du bip lors de la réception de données de l'ichtyomètre tutti.config.option.db.import.skipBackup.description=Pour ne pas effectuer une sauvegarde avant un import de base +tutti.config.option.errorBeepFrequency.description=Tonalité du bip lors de la réception d'une erreur de l'ichtyomètre tutti.config.option.export.backup.directory.description=Répertoire où sont enregistrées les exports génériques tutti.config.option.export.countryId.description=L'id du pays à utiliser pour les exports (il s'agit de la valeur LOCATION.ID). tutti.config.option.genericFormat.import.maximumRowsInErrorPerFile.description=Nombre maximum de lignes en erreur possible par fichier lors de la validation de l'import générique diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java index fc2820f..2af8379 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java @@ -140,8 +140,11 @@ public class TuttiConfigUIHandler extends AbstractTuttiUIHandler<TuttiUIContext, .addOption(TuttiConfigurationOption.ICHTYOMETER_MAXIMUM_NUMBER_OF_ATTEMPT_TO_CONNECT) .setOptionShortLabel(t("tutti.config.option.ui.ichtyometerMaximumNumberOfAttemptToConnect.shortLabel")) - .addOption(TuttiConfigurationOption.BEEP_FREQUENCY) - .setOptionShortLabel(t("tutti.config.option.ui.beepFrequency.shortLabel")) + .addOption(TuttiConfigurationOption.ICHTYOMETER_DATA_RECEPTION_BEEP_FREQUENCY) + .setOptionShortLabel(t("tutti.config.option.ui.ichtyometerDataBeepFrequency.shortLabel")) + + .addOption(TuttiConfigurationOption.ICHTYOMETER_ERROR_RECEPTION_BEEP_FREQUENCY) + .setOptionShortLabel(t("tutti.config.option.ui.ichtyometerErrorBeepFrequency.shortLabel")) .addOption(TuttiConfigurationOption.SHOW_BATCH_LOG) .setOptionShortLabel(t("tutti.config.option.ui.showBatchLog.shortLabel")) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java index eb76303..126041a 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java @@ -40,6 +40,7 @@ import fr.ifremer.tutti.ui.swing.content.operation.catches.FrequencyConfiguratio import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyCellComponent.FrequencyCellEditor; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions.ApplySpeciesFrequencyRafaleAction; +import fr.ifremer.tutti.ui.swing.util.SoundUtil; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.TuttiNumberTickUnitSource; import fr.ifremer.tutti.ui.swing.util.TuttiUI; @@ -650,6 +651,8 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci protected void consumeFeedRecord(FeedReaderMeasureRecord record) { if (record.isValid()) { + SoundUtil.beep(getConfig().getIchtyometerDataReceptionBeepFrequency()); + String unit = getModel().getLengthStepCaracteristicUnit(); // board measurements are in mm @@ -671,6 +674,9 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci applySpeciesFrequencyRafaleAction.applyRafaleStep(length, true); } else { + + SoundUtil.beep(getConfig().getIchtyometerErrorReceptionBeepFrequency(), 3); + throw new ApplicationBusinessException( t("tutti.editSpeciesFrequencies.error.itchyometer.bad.record", record.getRecord())); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SoundUtil.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SoundUtil.java index 7804f01..b4ef694 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SoundUtil.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SoundUtil.java @@ -1,6 +1,8 @@ package fr.ifremer.tutti.ui.swing.util; import fr.ifremer.tutti.util.BeepFrequency; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; @@ -13,10 +15,26 @@ import javax.sound.sampled.SourceDataLine; */ public class SoundUtil { + /** Logger. */ + private static final Log log = LogFactory.getLog(SoundUtil.class); + public static float SAMPLE_RATE = 8000f; - public static void tone(BeepFrequency beepFrequency, int msecs) throws LineUnavailableException { - tone(beepFrequency.getFrequency(), msecs, 1.0); + public static void beep(BeepFrequency beepFrequency) { + beep(beepFrequency, 1); + } + + public static void beep(BeepFrequency beepFrequency, int number) { + try { + for (int i = 0; i < number; i++) { + tone(beepFrequency.getFrequency(), 500, 1.0); + } + + } catch (LineUnavailableException e) { + if (log.isErrorEnabled()) { + log.error("Error while playing a beep", e); + } + } } public static void tone(int hz, int msecs, double vol) throws LineUnavailableException { diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties index 913d754..92d72f9 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties @@ -176,6 +176,8 @@ tutti.config.option.ui.db.import.skipBackup.shortLabel= tutti.config.option.ui.fullBluetoothScan.shortLabel= tutti.config.option.ui.genericFormat.import.maximumRowsInErrorPerFile.shortLabel= tutti.config.option.ui.genericFormat.import.skipBackup.shortLabel= +tutti.config.option.ui.ichtyometerDataBeepFrequency.shortLabel= +tutti.config.option.ui.ichtyometerErrorBeepFrequency.shortLabel= tutti.config.option.ui.ichtyometerMaximumNumberOfAttemptToConnect.shortLabel= tutti.config.option.ui.individualObservationRowsToCreate.shortLabel= tutti.config.option.ui.showBatchLog.shortLabel= 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 7778628..f691250 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 @@ -155,6 +155,8 @@ tutti.config.option.ui.db.import.skipBackup.shortLabel=Ne pas faire de sauvegard tutti.config.option.ui.fullBluetoothScan.shortLabel=Recherche complète des périphériques bluetooth tutti.config.option.ui.genericFormat.import.maximumRowsInErrorPerFile.shortLabel=Nombre maximum de lignes en erreur possible par fichier lors de la validation de l'import générique tutti.config.option.ui.genericFormat.import.skipBackup.shortLabel=Ne pas faire de sauvegarde avant un import au format générique +tutti.config.option.ui.ichtyometerDataBeepFrequency.shortLabel=Tonalité de réception de données +tutti.config.option.ui.ichtyometerErrorBeepFrequency.shortLabel=Tonalité de réception d'erreur tutti.config.option.ui.ichtyometerMaximumNumberOfAttemptToConnect.shortLabel=Nombre maximum de tentatives de connection à l'ichtyomètre tutti.config.option.ui.individualObservationRowsToCreate.shortLabel=Nombre max de données individuelles tutti.config.option.ui.showBatchLog.shortLabel=Voir la structure des lots dans les logs -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.