branch feature/7063 updated (db53fbb -> 906fd36)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7063 in repository tutti. See http://git.codelutin.com/tutti.git omits db53fbb correction de la lecture des voix (fixes #7063) omits d39faf4 ajout de la lecture des nombres mais il reste un problème de lecture de certains nombres (2000 cm par exemple, mais je ne sais pas pourquoi) (refs #7063) omits e5d5f95 ajout de la tonalité nulle dans la conf (refs #7063) omits 8756563 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) omits 579c5e8 génération et lecture de bips + ajout d'une option pour configurer la tonalité du bip à jouer (refs #7063) adds c3afc48 Utiliser un comparateur de date pour le tri de la liste des opérations (See #7874) adds 20d63c1 Suppression constante inutile adds a205fc9 Merge branch 'feature/7874_tri_sur_les_traits_par_date' into 'develop' adds 8d70e7d Renommage des css en jcss adds 8eedb54 Changement du niveau de log adds 5c9c674 Ajout de méthodes sur la persistence pour récupérer des objets obsolètes (See #7909) adds 7d9a05a Pouvoir lors de l'import générique utiliser des objets obsolètes (partie service) (See #7909) adds 1e1adbb Pouvoir lors de l'import générique utiliser des objets obsolètes (partie ui) (See #7909) adds feda4a0 Mise à jour des tests d'import générique adds 912ce8c Les bases de tests ont été mises à jour, plus besoin d'utiliser l'ancien mécanisme pour récupérer les utilisateurs adds 3fc6609 Utilisation d'une base vide pour les tests d'import générique adds bccde35 Ajout d'un test pour la validation d'import générique avec des données obsolètes (See #7909) adds 9b20e27 Test d'import de données obsolètes pour les engins, strates adds 5f644ac Permettre de récupérer des référentiels obsolètes (See #7909) adds 8139a51 Suppresion d'un service obsolète adds fa6349e Correction de la requete pour récupérer les navires obsolètes adds 31acffd Correction de la requete pour récupérer les navires obsolètes adds 69fac2b Fixes #7909 Merge branch 'feature/7909_import_generique_id_obsoletes' into develop new 63fdb96 génération et lecture de bips + ajout d'une option pour configurer la tonalité du bip à jouer (refs #7063) new 6b2b50e 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) new 9796769 ajout de la tonalité nulle dans la conf (refs #7063) new cf2c730 ajout de la lecture des nombres mais il reste un problème de lecture de certains nombres (2000 cm par exemple, mais je ne sais pas pourquoi) (refs #7063) new 906fd36 correction de la lecture des voix (fixes #7063) This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (db53fbb) \ N -- N -- N refs/heads/feature/7063 (906fd36) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omits" are not gone; other references still refer to them. Any revisions marked "discards" are gone forever. The 5 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 906fd368e4b628ff8a0ca2c1aa0a75b8096fa6e7 Author: Kevin Morin <morin@codelutin.com> Date: Fri Jan 15 12:26:27 2016 +0100 correction de la lecture des voix (fixes #7063) commit cf2c730e2c2d46c7144ad5cd55337f49fdd1aeb9 Author: Kevin Morin <morin@codelutin.com> Date: Thu Jan 14 18:45:59 2016 +0100 ajout de la lecture des nombres mais il reste un problème de lecture de certains nombres (2000 cm par exemple, mais je ne sais pas pourquoi) (refs #7063) commit 97967695c92c13b8391e8a615448bb08f81f732e Author: Kevin Morin <morin@codelutin.com> Date: Wed Jan 13 19:58:12 2016 +0100 ajout de la tonalité nulle dans la conf (refs #7063) commit 6b2b50e289ec51e2af5a15789845ebde333b508a 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) commit 63fdb96253b8c314dfe87dd3bbf6c5686c5f2438 Author: Kevin Morin <morin@codelutin.com> Date: Thu Jan 7 12:32:46 2016 +0100 génération et lecture de bips + ajout d'une option pour configurer la tonalité du bip à jouer (refs #7063) Summary of changes: .../tutti/persistence/TuttiPersistenceImpl.java | 47 +- .../persistence/TuttiPersistenceNoDbImpl.java | 40 + .../tutti/persistence/dao/TaxonNameDaoTutti.java | 14 + .../persistence/dao/TaxonNameDaoTuttiImpl.java | 85 ++ .../service/ProgramPersistenceService.java | 1 + .../service/ReferentialPersistenceService.java | 495 ------- .../service/ReferentialPersistenceServiceImpl.java | 1423 -------------------- .../referential/GearPersistenceService.java | 15 +- .../referential/GearPersistenceServiceImpl.java | 42 +- .../referential/LocationPersistenceService.java | 10 +- .../LocationPersistenceServiceImpl.java | 129 +- .../referential/PersonPersistenceService.java | 14 +- .../referential/PersonPersistenceServiceImpl.java | 32 +- .../ReferentialPersistenceServiceSupport.java | 24 +- .../referential/SpeciesPersistenceService.java | 13 +- .../referential/SpeciesPersistenceServiceImpl.java | 41 +- .../referential/VesselPersistenceService.java | 13 +- .../referential/VesselPersistenceServiceImpl.java | 134 +- .../tutti/persistence/test/DatabaseResource.java | 11 - .../resources/applicationContext-service-tutti.xml | 32 +- .../src/main/resources/queries-failsafe.hbm.xml | 187 ++- .../fr/ifremer/tutti/service/DecoratorService.java | 55 +- .../ifremer/tutti/service/PersistenceService.java | 40 + .../service/TuttiValidationDataContextSupport.java | 8 +- .../service/csv/CaracteristicParserFormatter.java | 5 + .../service/csv/EntityParserFormatterSupport.java | 15 +- .../FishingOperationLocationParserFormatter.java | 5 + .../csv/FishingOperationStrataParserFormatter.java | 5 + .../FishingOperationSubStrataParserFormatter.java | 5 + .../tutti/service/csv/GearParserFormatter.java | 5 + .../tutti/service/csv/HarbourParserFormatter.java | 5 + .../tutti/service/csv/PersonParserFormatter.java | 5 + .../tutti/service/csv/ProgramParserFormatter.java | 5 + .../tutti/service/csv/SpeciesParserFormatter.java | 5 + .../tutti/service/csv/VesselParserFormatter.java | 5 + .../GenericFormatImportConfiguration.java | 10 + .../GenericFormatImportEntityParserFactory.java | 17 +- .../genericformat/GenericFormatImportRequest.java | 4 + .../ifremer/tutti/service/ServiceDbResource.java | 20 +- .../service/bigfin/BigfinImportService2Test.java | 1 - .../GenericFormatImportServiceTest.java | 3 +- .../GenericFormatImportServiceValidTest.java | 40 +- .../test/resources/genericFormat/catch/catch.csv | 866 ++++++------ .../test/resources/genericFormat/default/catch.csv | 866 ++++++------ .../resources/genericFormat/default/operation.csv | 6 +- .../resources/genericFormat/default/survey.csv | 4 +- .../test/resources/genericFormat/empty/catch.csv | 2 +- .../resources/genericFormat/empty/operation.csv | 2 +- .../test/resources/genericFormat/empty/survey.csv | 2 +- .../genericFormat/marineLitter/marineLitter.csv | 8 +- .../genericFormat/operation/operation.csv | 6 +- .../referentials/temporarySpecies.csv | 18 +- .../test/resources/genericFormat/survey/survey.csv | 4 +- .../genericFormat/withObsoletes/catch.csv | 16 + .../{empty => withObsoletes}/operation.csv | 3 +- .../withObsoletes/protocol.tuttiProtocol} | 29 +- .../genericFormat/withObsoletes/sampleCategory.csv | 9 + .../genericFormat/withObsoletes/survey.csv | 2 + .../genericFormat/withObsoletes/temporaryGears.csv | 1 + .../withObsoletes/temporaryPersons.csv | 1 + .../withObsoletes/temporarySpecies.csv | 11 + .../withObsoletes/temporaryVessels.csv | 1 + tutti-ui-swing/pom.xml | 3 +- .../filtered-resources/tutti-help-fr.properties | 5 +- .../ui/swing/content/{Common.css => Common.jcss} | 0 .../ui/swing/content/{MainUI.css => MainUI.jcss} | 0 .../actions/AbstractChangeScreenAction.java | 44 + .../actions/OpenGenericFormatImportScreen.java | 2 +- ...yModelUI.css => EditSampleCategoryModelUI.jcss} | 0 .../{TuttiConfigUI.css => TuttiConfigUI.jcss} | 0 .../cruise/{EditCruiseUI.css => EditCruiseUI.jcss} | 0 ...ditorUI.css => GearCaracteristicsEditorUI.jcss} | 0 .../db/{DbManagerUI.css => DbManagerUI.jcss} | 0 ...rmatExportUI.css => GenericFormatExportUI.jcss} | 0 .../genericformat/GenericFormatImportUI.jaxx | 5 + ...rmatImportUI.css => GenericFormatImportUI.jcss} | 7 + .../GenericFormatImportUIHandler.java | 14 +- .../genericformat/GenericFormatImportUIModel.java | 16 + .../{SelectCruiseUI.css => SelectCruiseUI.jcss} | 0 ...OperationUI.css => EditFishingOperationUI.jcss} | 0 ...ngOperationsUI.css => FishingOperationsUI.jcss} | 0 .../{EditCatchesUI.css => EditCatchesUI.jcss} | 0 ...LogDialog.css => MultiPostImportLogDialog.jcss} | 0 ...ccidentalBatchUI.css => AccidentalBatchUI.jcss} | 0 ...talBatchUI.css => CreateAccidentalBatchUI.jcss} | 0 .../{BenthosBatchUI.css => BenthosBatchUI.jcss} | 0 ...enthosBatchUI.css => CreateBenthosBatchUI.jcss} | 0 ...thosFrequencyUI.css => BenthosFrequencyUI.jcss} | 0 ...BenthosBatchUI.css => SplitBenthosBatchUI.jcss} | 0 ...tchUI.css => IndividualObservationBatchUI.jcss} | 0 ...css => CreateIndividualObservationBatchUI.jcss} | 0 ...eLitterBatchUI.css => MarineLitterBatchUI.jcss} | 0 ...rBatchUI.css => CreateMarineLitterBatchUI.jcss} | 0 ...UI.css => ImportPupitriMelagWeightPopupUI.jcss} | 0 ...upitriPopupUI.css => ImportPupitriPopupUI.jcss} | 0 .../{SpeciesBatchUI.css => SpeciesBatchUI.jcss} | 0 ...peciesBatchUI.css => CreateSpeciesBatchUI.jcss} | 0 ...ciesFrequencyUI.css => SpeciesFrequencyUI.jcss} | 0 ...SpeciesBatchUI.css => SplitSpeciesBatchUI.jcss} | 0 ...seFeatureTabUI.css => GearUseFeatureTabUI.jcss} | 0 ...FeatureTabUI.css => VesselUseFeatureTabUI.jcss} | 0 .../{EditProgramUI.css => EditProgramUI.jcss} | 0 .../{EditProtocolUI.css => EditProtocolUI.jcss} | 0 ...ialUI.css => ManageTemporaryReferentialUI.jcss} | 0 ...oraryUI.css => AbstractReplaceTemporaryUI.jcss} | 0 ...oraryGearUI.css => ReplaceTemporaryGearUI.jcss} | 0 ...yPersonUI.css => ReplaceTemporaryPersonUI.jcss} | 0 ...peciesUI.css => ReplaceTemporarySpeciesUI.jcss} | 0 ...yVesselUI.css => ReplaceTemporaryVesselUI.jcss} | 0 .../content/report/{ReportUI.css => ReportUI.jcss} | 0 ...{ValidateCruiseUI.css => ValidateCruiseUI.jcss} | 0 ...achmentEditorUI.css => AttachmentEditorUI.jcss} | 0 .../{AttachmentItem.css => AttachmentItem.jcss} | 0 .../swing/util/auth/{LoginUI.css => LoginUI.jcss} | 0 ...pEditorUI.css => CaracteristicMapEditorUI.jcss} | 0 .../{EnterWeightUI.css => EnterWeightUI.jcss} | 0 .../{CommentEditorUI.css => CommentEditorUI.jcss} | 0 ...erMelagWeightUI.css => EnterMelagWeightUI.jcss} | 0 .../{SelectSpeciesUI.css => SelectSpeciesUI.jcss} | 0 .../resources/i18n/tutti-ui-swing_en_GB.properties | 6 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 6 + 121 files changed, 2017 insertions(+), 3013 deletions(-) create mode 100644 tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/dao/TaxonNameDaoTutti.java create mode 100644 tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/dao/TaxonNameDaoTuttiImpl.java delete mode 100644 tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java delete mode 100644 tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java create mode 100644 tutti-service/src/test/resources/genericFormat/withObsoletes/catch.csv copy tutti-service/src/test/resources/genericFormat/{empty => withObsoletes}/operation.csv (71%) copy tutti-service/src/test/resources/{pupitri/evo-6116.tuttiProtocol => genericFormat/withObsoletes/protocol.tuttiProtocol} (87%) create mode 100644 tutti-service/src/test/resources/genericFormat/withObsoletes/sampleCategory.csv create mode 100644 tutti-service/src/test/resources/genericFormat/withObsoletes/survey.csv create mode 100644 tutti-service/src/test/resources/genericFormat/withObsoletes/temporaryGears.csv create mode 100644 tutti-service/src/test/resources/genericFormat/withObsoletes/temporaryPersons.csv create mode 100644 tutti-service/src/test/resources/genericFormat/withObsoletes/temporarySpecies.csv create mode 100644 tutti-service/src/test/resources/genericFormat/withObsoletes/temporaryVessels.csv rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/{Common.css => Common.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/{MainUI.css => MainUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/{EditSampleCategoryModelUI.css => EditSampleCategoryModelUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/{TuttiConfigUI.css => TuttiConfigUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/{EditCruiseUI.css => EditCruiseUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/{GearCaracteristicsEditorUI.css => GearCaracteristicsEditorUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/{DbManagerUI.css => DbManagerUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/genericformat/{GenericFormatExportUI.css => GenericFormatExportUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/genericformat/{GenericFormatImportUI.css => GenericFormatImportUI.jcss} (96%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/{SelectCruiseUI.css => SelectCruiseUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/{EditFishingOperationUI.css => EditFishingOperationUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/{FishingOperationsUI.css => FishingOperationsUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/{EditCatchesUI.css => EditCatchesUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/{MultiPostImportLogDialog.css => MultiPostImportLogDialog.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/{AccidentalBatchUI.css => AccidentalBatchUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/{CreateAccidentalBatchUI.css => CreateAccidentalBatchUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/{BenthosBatchUI.css => BenthosBatchUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/{CreateBenthosBatchUI.css => CreateBenthosBatchUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/{BenthosFrequencyUI.css => BenthosFrequencyUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/{SplitBenthosBatchUI.css => SplitBenthosBatchUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/{IndividualObservationBatchUI.css => IndividualObservationBatchUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/{CreateIndividualObservationBatchUI.css => CreateIndividualObservationBatchUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/{MarineLitterBatchUI.css => MarineLitterBatchUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/{CreateMarineLitterBatchUI.css => CreateMarineLitterBatchUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/{ImportPupitriMelagWeightPopupUI.css => ImportPupitriMelagWeightPopupUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/{ImportPupitriPopupUI.css => ImportPupitriPopupUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/{SpeciesBatchUI.css => SpeciesBatchUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/{CreateSpeciesBatchUI.css => CreateSpeciesBatchUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/{SpeciesFrequencyUI.css => SpeciesFrequencyUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/{SplitSpeciesBatchUI.css => SplitSpeciesBatchUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/{GearUseFeatureTabUI.css => GearUseFeatureTabUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/{VesselUseFeatureTabUI.css => VesselUseFeatureTabUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/{EditProgramUI.css => EditProgramUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/{EditProtocolUI.css => EditProtocolUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/{ManageTemporaryReferentialUI.css => ManageTemporaryReferentialUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/replace/{AbstractReplaceTemporaryUI.css => AbstractReplaceTemporaryUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/replace/{ReplaceTemporaryGearUI.css => ReplaceTemporaryGearUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/replace/{ReplaceTemporaryPersonUI.css => ReplaceTemporaryPersonUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/replace/{ReplaceTemporarySpeciesUI.css => ReplaceTemporarySpeciesUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/replace/{ReplaceTemporaryVesselUI.css => ReplaceTemporaryVesselUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/report/{ReportUI.css => ReportUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/validation/{ValidateCruiseUI.css => ValidateCruiseUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/{AttachmentEditorUI.css => AttachmentEditorUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/{AttachmentItem.css => AttachmentItem.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/auth/{LoginUI.css => LoginUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/{CaracteristicMapEditorUI.css => CaracteristicMapEditorUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/catches/{EnterWeightUI.css => EnterWeightUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/comment/{CommentEditorUI.css => CommentEditorUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/{EnterMelagWeightUI.css => EnterMelagWeightUI.jcss} (100%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/{SelectSpeciesUI.css => SelectSpeciesUI.jcss} (100%) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 63fdb96253b8c314dfe87dd3bbf6c5686c5f2438 Author: Kevin Morin <morin@codelutin.com> Date: Thu Jan 7 12:32:46 2016 +0100 génération et lecture de bips + ajout d'une option pour configurer la tonalité du bip à jouer (refs #7063) --- .../java/fr/ifremer/tutti/TuttiConfiguration.java | 5 +++ .../fr/ifremer/tutti/TuttiConfigurationOption.java | 8 +++++ .../java/fr/ifremer/tutti/util/BeepFrequency.java | 33 +++++++++++++++++ .../i18n/tutti-persistence_en_GB.properties | 1 + .../i18n/tutti-persistence_fr_FR.properties | 1 + .../swing/content/config/TuttiConfigUIHandler.java | 2 ++ .../fr/ifremer/tutti/ui/swing/util/SoundUtil.java | 42 ++++++++++++++++++++++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 1 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 1 + 9 files changed, 94 insertions(+) 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 4d95ce7..0907dc8 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfiguration.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfiguration.java @@ -28,6 +28,7 @@ import fr.ifremer.adagio.core.config.AdagioConfigurationOption; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.type.CoordinateEditorType; import fr.ifremer.tutti.type.WeightUnit; +import fr.ifremer.tutti.util.BeepFrequency; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.ReflectionToStringBuilder; import org.apache.commons.logging.Log; @@ -727,6 +728,10 @@ 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 String getJavaCommandPath() { String path; String commandName = windowsOS ? "java.exe" : "java"; 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 9cdb4f7..54ffb96 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfigurationOption.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfigurationOption.java @@ -25,6 +25,7 @@ package fr.ifremer.tutti; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.type.CoordinateEditorType; import fr.ifremer.tutti.type.WeightUnit; +import fr.ifremer.tutti.util.BeepFrequency; import org.hibernate.dialect.HSQLDialect; import org.hsqldb.jdbcDriver; import org.nuiton.config.ConfigOptionDef; @@ -603,6 +604,13 @@ public enum TuttiConfigurationOption implements ConfigOptionDef { "5", int.class, false + ), + BEEP_FREQUENCY( + "tutti.ichtyometer.beepFrequency", + n("tutti.config.option.beepFrequency.description"), + BeepFrequency.A2.toString(), + BeepFrequency.class, + false ); /** Configuration key. */ diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/util/BeepFrequency.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/util/BeepFrequency.java new file mode 100644 index 0000000..c298836 --- /dev/null +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/util/BeepFrequency.java @@ -0,0 +1,33 @@ +package fr.ifremer.tutti.util; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.3 + */ +public enum BeepFrequency { + + A1(880), + B1(987), + C1(1046), + D1(1174), + E1(1318), + F1(1396), + G1(1567), + A2(1760), + B2(1975), + C2(2093), + D2(2349), + E2(2637), + F2(2793), + G2(3135); + + private int frequency; + + BeepFrequency(int frequency) { + this.frequency = frequency; + } + + public int getFrequency() { + return frequency; + } +} 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 5a20bce..1709df9 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 @@ -9,6 +9,7 @@ tutti.caracteristicType.lengthStep= tutti.caracteristicType.vesselUseFeature= tutti.config= tutti.config.option.basedir.description= +tutti.config.option.beepFrequency.description= tutti.config.option.cruiseId.description= tutti.config.option.csv.separator.description= tutti.config.option.data.directory.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 d817e42..36602b8 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,6 +5,7 @@ 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). 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 9914e08..79b732d 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,6 +140,8 @@ 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.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/util/SoundUtil.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SoundUtil.java new file mode 100644 index 0000000..7804f01 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SoundUtil.java @@ -0,0 +1,42 @@ +package fr.ifremer.tutti.ui.swing.util; + +import fr.ifremer.tutti.util.BeepFrequency; + +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.SourceDataLine; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.3 + */ +public class SoundUtil { + + 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 tone(int hz, int msecs, double vol) throws LineUnavailableException { + byte[] buf = new byte[1]; + AudioFormat af = new AudioFormat(SAMPLE_RATE, // sampleRate + 8, // sampleSizeInBits + 1, // channels + true, // signed + false); // bigEndian + SourceDataLine sdl = AudioSystem.getSourceDataLine(af); + sdl.open(af); + sdl.start(); + for (int i = 0, end = msecs * 8 ; i < end ; i++) { + double angle = i / (SAMPLE_RATE / hz) * 2.0 * Math.PI; + buf[0] = (byte)(Math.sin(angle) * 127.0 * vol); + sdl.write(buf,0,1); + } + sdl.drain(); + sdl.stop(); + sdl.close(); + } + +} 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 a4669b9..f89c2dc 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 @@ -151,6 +151,7 @@ tutti.config.option.service.report.log.directory.shortLabel= tutti.config.option.site.url.shortLabel= tutti.config.option.tmp.directory.shortLabel= tutti.config.option.tremieCarousselVessel.shortLabel= +tutti.config.option.ui.beepFrequency.shortLabel= tutti.config.option.ui.color.alternateRow.shortLabel= tutti.config.option.ui.color.benthos.shortLabel= tutti.config.option.ui.color.blockingLayer.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 61efbe2..6b93620 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 @@ -133,6 +133,7 @@ tutti.config.option.service.report.log.directory.shortLabel=Répertoire des log tutti.config.option.site.url.shortLabel=URL du site technique tutti.config.option.tmp.directory.shortLabel=Répertoire temporaire tutti.config.option.tremieCarousselVessel.shortLabel=Navire ayant un carrousel et une trémie +tutti.config.option.ui.beepFrequency.shortLabel=Tonalité du bip tutti.config.option.ui.color.alternateRow.shortLabel=Couleur alternée tutti.config.option.ui.color.benthos.shortLabel=Couleur des libellés de benthos (Écran Capture > Résumé) tutti.config.option.ui.color.blockingLayer.shortLabel=Couleur d'attente -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 6b2b50e289ec51e2af5a15789845ebde333b508a 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 0907dc8..024bd52 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 54ffb96..0e7ce21 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 79b732d..b9b9d66 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 d4cc2da..0a91360 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 f89c2dc..b9f8b00 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 @@ -172,6 +172,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 6b93620..5949ea7 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 @@ -154,6 +154,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>.
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 97967695c92c13b8391e8a615448bb08f81f732e Author: Kevin Morin <morin@codelutin.com> Date: Wed Jan 13 19:58:12 2016 +0100 ajout de la tonalité nulle dans la conf (refs #7063) --- .../fr/ifremer/tutti/TuttiConfigurationOption.java | 4 ++-- .../main/java/fr/ifremer/tutti/util/BeepFrequency.java | 4 ++-- .../ui/swing/content/config/TuttiConfigUIHandler.java | 11 +++++++++-- .../java/fr/ifremer/tutti/ui/swing/util/SoundUtil.java | 18 +++++++++++------- 4 files changed, 24 insertions(+), 13 deletions(-) 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 0e7ce21..f9c0354 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfigurationOption.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfigurationOption.java @@ -608,14 +608,14 @@ public enum TuttiConfigurationOption implements ConfigOptionDef { ICHTYOMETER_DATA_RECEPTION_BEEP_FREQUENCY( "tutti.ichtyometer.dataBeepFrequency", n("tutti.config.option.dataBeepFrequency.description"), - BeepFrequency.A2.toString(), + null, BeepFrequency.class, false ), ICHTYOMETER_ERROR_RECEPTION_BEEP_FREQUENCY( "tutti.ichtyometer.errorBeepFrequency", n("tutti.config.option.errorBeepFrequency.description"), - BeepFrequency.A1.toString(), + null, BeepFrequency.class, false ); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/util/BeepFrequency.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/util/BeepFrequency.java index c298836..e2b3e68 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/util/BeepFrequency.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/util/BeepFrequency.java @@ -21,13 +21,13 @@ public enum BeepFrequency { F2(2793), G2(3135); - private int frequency; + private final int frequency; BeepFrequency(int frequency) { this.frequency = frequency; } - public int getFrequency() { + public Integer getFrequency() { return frequency; } } 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 b9b9d66..9868f4d 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 @@ -31,6 +31,7 @@ import fr.ifremer.tutti.ui.swing.content.config.actions.ReloadTuttiAction; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.util.editor.TuttiLocationTableCell; import fr.ifremer.tutti.ui.swing.util.editor.VesselTableCell; +import fr.ifremer.tutti.util.BeepFrequency; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.config.ConfigCategoryUI; import jaxx.runtime.swing.config.ConfigUI; @@ -138,13 +139,19 @@ public class TuttiConfigUIHandler extends AbstractTuttiUIHandler<TuttiUIContext, .setOptionShortLabel(t("tutti.config.option.ui.fullBluetoothScan.shortLabel")) .addOption(TuttiConfigurationOption.ICHTYOMETER_MAXIMUM_NUMBER_OF_ATTEMPT_TO_CONNECT) - .setOptionShortLabel(t("tutti.config.option.ui.ichtyometerMaximumNumberOfAttemptToConnect.shortLabel")) + .setOptionShortLabel(t("tutti.config.option.ui.ichtyometerMaximumNumberOfAttemptToConnect.shortLabel")); - .addOption(TuttiConfigurationOption.ICHTYOMETER_DATA_RECEPTION_BEEP_FREQUENCY) + EnumEditor<BeepFrequency> beepFrequencyEnumEditor = EnumEditor.newEditor(BeepFrequency.class); + beepFrequencyEnumEditor.insertItemAt(null, 0); + DefaultCellEditor beepFrequencyUnitTableCellEditor = new DefaultCellEditor(beepFrequencyEnumEditor); + + helper.addOption(TuttiConfigurationOption.ICHTYOMETER_DATA_RECEPTION_BEEP_FREQUENCY) .setOptionShortLabel(t("tutti.config.option.ui.ichtyometerDataBeepFrequency.shortLabel")) + .setOptionEditor(beepFrequencyUnitTableCellEditor) .addOption(TuttiConfigurationOption.ICHTYOMETER_ERROR_RECEPTION_BEEP_FREQUENCY) .setOptionShortLabel(t("tutti.config.option.ui.ichtyometerErrorBeepFrequency.shortLabel")) + .setOptionEditor(beepFrequencyUnitTableCellEditor) .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/util/SoundUtil.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SoundUtil.java index b4ef694..c63bb26 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 @@ -25,14 +25,18 @@ public class SoundUtil { } public static void beep(BeepFrequency beepFrequency, int number) { - try { - for (int i = 0; i < number; i++) { - tone(beepFrequency.getFrequency(), 500, 1.0); - } + + if (beepFrequency != null) { + + 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); + } catch (LineUnavailableException e) { + if (log.isErrorEnabled()) { + log.error("Error while playing a beep", e); + } } } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 cf2c730e2c2d46c7144ad5cd55337f49fdd1aeb9 Author: Kevin Morin <morin@codelutin.com> Date: Thu Jan 14 18:45:59 2016 +0100 ajout de la lecture des nombres mais il reste un problème de lecture de certains nombres (2000 cm par exemple, mais je ne sais pas pourquoi) (refs #7063) --- .../src/main/filtered-resources/log4j.properties | 1 + .../java/fr/ifremer/tutti/ui/swing/RunTutti.java | 8 ++ .../frequency/SpeciesFrequencyUIHandler.java | 2 - .../actions/ApplySpeciesFrequencyRafaleAction.java | 8 +- .../fr/ifremer/tutti/ui/swing/util/SoundUtil.java | 100 ++++++++++++++++++++- tutti-ui-swing/src/main/resources/sounds/,.wav | Bin 0 -> 29038 bytes tutti-ui-swing/src/main/resources/sounds/0.wav | Bin 0 -> 21626 bytes tutti-ui-swing/src/main/resources/sounds/1.wav | Bin 0 -> 9636 bytes tutti-ui-swing/src/main/resources/sounds/10.wav | Bin 0 -> 20536 bytes tutti-ui-swing/src/main/resources/sounds/100.wav | Bin 0 -> 14214 bytes tutti-ui-swing/src/main/resources/sounds/1000.wav | Bin 0 -> 17048 bytes tutti-ui-swing/src/main/resources/sounds/11.wav | Bin 0 -> 15086 bytes tutti-ui-swing/src/main/resources/sounds/12.wav | Bin 0 -> 19010 bytes tutti-ui-swing/src/main/resources/sounds/13.wav | Bin 0 -> 22280 bytes tutti-ui-swing/src/main/resources/sounds/14.wav | Bin 0 -> 30564 bytes tutti-ui-swing/src/main/resources/sounds/15.wav | Bin 0 -> 21844 bytes tutti-ui-swing/src/main/resources/sounds/16.wav | Bin 0 -> 20536 bytes tutti-ui-swing/src/main/resources/sounds/17.wav | Bin 0 -> 29910 bytes tutti-ui-swing/src/main/resources/sounds/18.wav | Bin 0 -> 30782 bytes tutti-ui-swing/src/main/resources/sounds/19.wav | Bin 0 -> 31872 bytes tutti-ui-swing/src/main/resources/sounds/2.wav | Bin 0 -> 12252 bytes tutti-ui-swing/src/main/resources/sounds/20.wav | Bin 0 -> 12252 bytes tutti-ui-swing/src/main/resources/sounds/21.wav | Bin 0 -> 25986 bytes tutti-ui-swing/src/main/resources/sounds/22.wav | Bin 0 -> 24242 bytes tutti-ui-swing/src/main/resources/sounds/23.wav | Bin 0 -> 26640 bytes tutti-ui-swing/src/main/resources/sounds/24.wav | Bin 0 -> 31218 bytes tutti-ui-swing/src/main/resources/sounds/25.wav | Bin 0 -> 34270 bytes tutti-ui-swing/src/main/resources/sounds/26.wav | Bin 0 -> 33398 bytes tutti-ui-swing/src/main/resources/sounds/27.wav | Bin 0 -> 32308 bytes tutti-ui-swing/src/main/resources/sounds/28.wav | Bin 0 -> 31654 bytes tutti-ui-swing/src/main/resources/sounds/29.wav | Bin 0 -> 34052 bytes tutti-ui-swing/src/main/resources/sounds/3.wav | Bin 0 -> 17048 bytes tutti-ui-swing/src/main/resources/sounds/30.wav | Bin 0 -> 24896 bytes tutti-ui-swing/src/main/resources/sounds/31.wav | Bin 0 -> 30564 bytes tutti-ui-swing/src/main/resources/sounds/32.wav | Bin 0 -> 26640 bytes tutti-ui-swing/src/main/resources/sounds/33.wav | Bin 0 -> 28384 bytes tutti-ui-swing/src/main/resources/sounds/34.wav | Bin 0 -> 32962 bytes tutti-ui-swing/src/main/resources/sounds/35.wav | Bin 0 -> 36014 bytes tutti-ui-swing/src/main/resources/sounds/36.wav | Bin 0 -> 35142 bytes tutti-ui-swing/src/main/resources/sounds/37.wav | Bin 0 -> 34270 bytes tutti-ui-swing/src/main/resources/sounds/38.wav | Bin 0 -> 33398 bytes tutti-ui-swing/src/main/resources/sounds/39.wav | Bin 0 -> 35796 bytes tutti-ui-swing/src/main/resources/sounds/4.wav | Bin 0 -> 19228 bytes tutti-ui-swing/src/main/resources/sounds/40.wav | Bin 0 -> 27948 bytes tutti-ui-swing/src/main/resources/sounds/41.wav | Bin 0 -> 33616 bytes tutti-ui-swing/src/main/resources/sounds/42.wav | Bin 0 -> 29692 bytes tutti-ui-swing/src/main/resources/sounds/43.wav | Bin 0 -> 31436 bytes tutti-ui-swing/src/main/resources/sounds/44.wav | Bin 0 -> 36014 bytes tutti-ui-swing/src/main/resources/sounds/45.wav | Bin 0 -> 39066 bytes tutti-ui-swing/src/main/resources/sounds/46.wav | Bin 0 -> 38412 bytes tutti-ui-swing/src/main/resources/sounds/47.wav | Bin 0 -> 37322 bytes tutti-ui-swing/src/main/resources/sounds/48.wav | Bin 0 -> 36450 bytes tutti-ui-swing/src/main/resources/sounds/49.wav | Bin 0 -> 38848 bytes tutti-ui-swing/src/main/resources/sounds/5.wav | Bin 0 -> 23588 bytes tutti-ui-swing/src/main/resources/sounds/50.wav | Bin 0 -> 33180 bytes tutti-ui-swing/src/main/resources/sounds/51.wav | Bin 0 -> 36450 bytes tutti-ui-swing/src/main/resources/sounds/52.wav | Bin 0 -> 32526 bytes tutti-ui-swing/src/main/resources/sounds/53.wav | Bin 0 -> 34270 bytes tutti-ui-swing/src/main/resources/sounds/54.wav | Bin 0 -> 38848 bytes tutti-ui-swing/src/main/resources/sounds/55.wav | Bin 0 -> 42118 bytes tutti-ui-swing/src/main/resources/sounds/56.wav | Bin 0 -> 41246 bytes tutti-ui-swing/src/main/resources/sounds/57.wav | Bin 0 -> 40156 bytes tutti-ui-swing/src/main/resources/sounds/58.wav | Bin 0 -> 39284 bytes tutti-ui-swing/src/main/resources/sounds/59.wav | Bin 0 -> 41682 bytes tutti-ui-swing/src/main/resources/sounds/6.wav | Bin 0 -> 22280 bytes tutti-ui-swing/src/main/resources/sounds/60.wav | Bin 0 -> 35578 bytes tutti-ui-swing/src/main/resources/sounds/61.wav | Bin 0 -> 38630 bytes tutti-ui-swing/src/main/resources/sounds/62.wav | Bin 0 -> 34706 bytes tutti-ui-swing/src/main/resources/sounds/63.wav | Bin 0 -> 36232 bytes tutti-ui-swing/src/main/resources/sounds/64.wav | Bin 0 -> 41028 bytes tutti-ui-swing/src/main/resources/sounds/65.wav | Bin 0 -> 44080 bytes tutti-ui-swing/src/main/resources/sounds/66.wav | Bin 0 -> 43208 bytes tutti-ui-swing/src/main/resources/sounds/67.wav | Bin 0 -> 42118 bytes tutti-ui-swing/src/main/resources/sounds/68.wav | Bin 0 -> 41464 bytes tutti-ui-swing/src/main/resources/sounds/69.wav | Bin 0 -> 43644 bytes tutti-ui-swing/src/main/resources/sounds/7.wav | Bin 0 -> 21626 bytes tutti-ui-swing/src/main/resources/sounds/70.wav | Bin 0 -> 41900 bytes tutti-ui-swing/src/main/resources/sounds/71.wav | Bin 0 -> 42772 bytes tutti-ui-swing/src/main/resources/sounds/72.wav | Bin 0 -> 40810 bytes tutti-ui-swing/src/main/resources/sounds/73.wav | Bin 0 -> 41682 bytes tutti-ui-swing/src/main/resources/sounds/74.wav | Bin 0 -> 51710 bytes tutti-ui-swing/src/main/resources/sounds/75.wav | Bin 0 -> 43644 bytes tutti-ui-swing/src/main/resources/sounds/76.wav | Bin 0 -> 41028 bytes tutti-ui-swing/src/main/resources/sounds/77.wav | Bin 0 -> 50402 bytes tutti-ui-swing/src/main/resources/sounds/78.wav | Bin 0 -> 51056 bytes tutti-ui-swing/src/main/resources/sounds/79.wav | Bin 0 -> 52146 bytes tutti-ui-swing/src/main/resources/sounds/8.wav | Bin 0 -> 17484 bytes tutti-ui-swing/src/main/resources/sounds/80.wav | Bin 0 -> 28166 bytes tutti-ui-swing/src/main/resources/sounds/81.wav | Bin 0 -> 35360 bytes tutti-ui-swing/src/main/resources/sounds/82.wav | Bin 0 -> 34270 bytes tutti-ui-swing/src/main/resources/sounds/83.wav | Bin 0 -> 38848 bytes tutti-ui-swing/src/main/resources/sounds/84.wav | Bin 0 -> 43862 bytes tutti-ui-swing/src/main/resources/sounds/85.wav | Bin 0 -> 46696 bytes tutti-ui-swing/src/main/resources/sounds/86.wav | Bin 0 -> 46042 bytes tutti-ui-swing/src/main/resources/sounds/87.wav | Bin 0 -> 44734 bytes tutti-ui-swing/src/main/resources/sounds/88.wav | Bin 0 -> 39938 bytes tutti-ui-swing/src/main/resources/sounds/89.wav | Bin 0 -> 42554 bytes tutti-ui-swing/src/main/resources/sounds/9.wav | Bin 0 -> 20972 bytes tutti-ui-swing/src/main/resources/sounds/90.wav | Bin 0 -> 42118 bytes tutti-ui-swing/src/main/resources/sounds/91.wav | Bin 0 -> 40592 bytes tutti-ui-swing/src/main/resources/sounds/92.wav | Bin 0 -> 40592 bytes tutti-ui-swing/src/main/resources/sounds/93.wav | Bin 0 -> 44080 bytes tutti-ui-swing/src/main/resources/sounds/94.wav | Bin 0 -> 54108 bytes tutti-ui-swing/src/main/resources/sounds/95.wav | Bin 0 -> 45606 bytes tutti-ui-swing/src/main/resources/sounds/96.wav | Bin 0 -> 43644 bytes tutti-ui-swing/src/main/resources/sounds/97.wav | Bin 0 -> 51492 bytes tutti-ui-swing/src/main/resources/sounds/98.wav | Bin 0 -> 52364 bytes tutti-ui-swing/src/main/resources/sounds/99.wav | Bin 0 -> 53454 bytes tutti-ui-swing/src/main/resources/sounds/cm.wav | Bin 0 -> 37322 bytes tutti-ui-swing/src/main/resources/sounds/mm.wav | Bin 0 -> 32090 bytes .../fr/ifremer/tutti/ui/swing/SoundUtilTest.java | 29 ++++++ tutti-ui-swing/src/test/resources/log4j.properties | 2 + 112 files changed, 145 insertions(+), 5 deletions(-) diff --git a/tutti-ui-swing/src/main/filtered-resources/log4j.properties b/tutti-ui-swing/src/main/filtered-resources/log4j.properties index 0549718..a8f69d0 100644 --- a/tutti-ui-swing/src/main/filtered-resources/log4j.properties +++ b/tutti-ui-swing/src/main/filtered-resources/log4j.properties @@ -31,6 +31,7 @@ log4j.appender.stdout.layout.ConversionPattern=[%20t] %d{ISO8601} %5p (%c:%L) - # tutti levels log4j.logger.fr.ifremer=INFO +log4j.logger.fr.ifremer.tutti.ui.swing.util.SoundUtil=DEBUG # Keep this one to Info to show batch tree log4j.logger.fr.ifremer.tutti.persistence.service.util.BatchTreeHelper=INFO log4j.logger.fr.ifremer.tutti.service.toconfirmreport=DEBUG diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java index cabf77b..724a90e 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java @@ -28,6 +28,7 @@ import fr.ifremer.tutti.ui.swing.update.actions.UpdateApplicationAction; import fr.ifremer.tutti.ui.swing.update.actions.UpdateReportAction; import fr.ifremer.tutti.ui.swing.content.MainUI; import fr.ifremer.tutti.ui.swing.content.MainUIHandler; +import fr.ifremer.tutti.ui.swing.util.SoundUtil; import fr.ifremer.tutti.ui.swing.util.TuttiExceptionHandler; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; @@ -60,6 +61,13 @@ public class RunTutti { log.info("Starting Tutti with arguments: " + Arrays.toString(args)); } + SoundUtil.readNumber(2001, "cm"); + SoundUtil.readNumber(2001.2, "mm"); + SoundUtil.readNumber(2000.5, "cm"); + SoundUtil.readNumber(2000, "cm"); + SoundUtil.readNumber(200, "cm"); + SoundUtil.readNumber(201, "cm"); + // Create configuration TuttiConfiguration config = new TuttiConfiguration("tutti.config", args); 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 0a91360..16b1ead 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 @@ -651,8 +651,6 @@ 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 diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java index 0e06b90..71d4d12 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java @@ -32,6 +32,7 @@ import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.Spe import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIModel; +import fr.ifremer.tutti.ui.swing.util.SoundUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; @@ -110,10 +111,13 @@ public class ApplySpeciesFrequencyRafaleAction { ui.getTable().scrollRowToVisible(rowIndex); - if (fromIchtyometer) { +// if (fromIchtyometer) { String unit = model.getLengthStepCaracteristicUnit(); handler.showInformationMessage(t("tutti.editSpeciesFrequencies.addMeasure", step, aroundLengthStep, unit)); - } + + SoundUtil.beep(handler.getConfig().getIchtyometerDataReceptionBeepFrequency()); + SoundUtil.readNumber(aroundLengthStep, unit); +// } JXTable logsTable = ui.getLogsTable(); SpeciesFrequencyLogsTableModel logsTableModel = (SpeciesFrequencyLogsTableModel) logsTable.getModel(); 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 c63bb26..fd920d7 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 @@ -5,9 +5,18 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.Clip; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.SourceDataLine; +import javax.sound.sampled.UnsupportedAudioFileException; +import java.io.IOException; +import java.io.InputStream; +import java.io.SequenceInputStream; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; /** * @author Kevin Morin (Code Lutin) @@ -18,6 +27,8 @@ public class SoundUtil { /** Logger. */ private static final Log log = LogFactory.getLog(SoundUtil.class); + public static String SOUNDS_DIRECTORY = "/sounds"; + public static float SAMPLE_RATE = 8000f; public static void beep(BeepFrequency beepFrequency) { @@ -25,7 +36,7 @@ public class SoundUtil { } public static void beep(BeepFrequency beepFrequency, int number) { - + if (beepFrequency != null) { try { @@ -61,4 +72,91 @@ public class SoundUtil { sdl.close(); } + public static void readNumber(double number, String unit) { + + try { + + int thousands = (int) (number / 1000); + int hundreds = (int) (number % 1000) / 100; + int tensAndUnits = (int) number % 100; + int decimal = (int) (number * 10) % 10; + + List<AudioInputStream> audioInputStreams = new ArrayList<>(); + long length = 0; + length += addSound(audioInputStreams, thousands, 1000); + length += addSound(audioInputStreams, hundreds, 100); + if (tensAndUnits != 0 || thousands == 0 && hundreds == 0) { + length += addSound(audioInputStreams, tensAndUnits); + } + if (decimal > 0) { + length += addSound(audioInputStreams, ","); + length += addSound(audioInputStreams, decimal); + } + length += addSound(audioInputStreams, unit); + + if (!audioInputStreams.isEmpty()) { + + AudioFormat audioFormat = audioInputStreams.get(0).getFormat(); + + InputStream inputStream = new SequenceInputStream(Collections.enumeration(audioInputStreams)); + + Clip clip = AudioSystem.getClip(); + AudioInputStream appendedFiles = new AudioInputStream(inputStream, audioFormat, length); + clip.open(appendedFiles); + clip.start(); + } + + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("Error while reading " + number + " " + unit, e); + } + } + } + + protected static long addSound(List<AudioInputStream> inputStreams, int number) throws IOException, UnsupportedAudioFileException { + return addSound(inputStreams, number, 1); + } + + protected static long addSound(List<AudioInputStream> inputStreams, int number, int suffix) throws IOException, UnsupportedAudioFileException { + long length = 0; + + if (number > 1 || suffix == 1) { + if (log.isDebugEnabled()) { + log.debug("add " + number + ".wav"); + } + AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(SoundUtil.class.getResource(SOUNDS_DIRECTORY + "/" + number + ".wav")); + inputStreams.add(audioInputStream); + if (log.isDebugEnabled()) { + log.debug("--> " + audioInputStream.getFrameLength()); + } + length += audioInputStream.getFrameLength(); + } + + if (number > 1 && suffix > 1) { + if (log.isDebugEnabled()) { + log.debug("add " + suffix + ".wav"); + } + AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(SoundUtil.class.getResource(SOUNDS_DIRECTORY + "/" + suffix + ".wav")); + inputStreams.add(audioInputStream); + if (log.isDebugEnabled()) { + log.debug("--> " + audioInputStream.getFrameLength()); + } + length += audioInputStream.getFrameLength(); + } + + return length; + } + + protected static long addSound(List<AudioInputStream> inputStreams, String name) throws IOException, UnsupportedAudioFileException { + if (log.isDebugEnabled()) { + log.debug("add " + name + ".wav"); + } + AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(SoundUtil.class.getResource(SOUNDS_DIRECTORY + "/" + name + ".wav")); + inputStreams.add(audioInputStream); + if (log.isDebugEnabled()) { + log.debug("--> " + audioInputStream.getFrameLength()); + } + return audioInputStream.getFrameLength(); + } + } diff --git a/tutti-ui-swing/src/main/resources/sounds/,.wav b/tutti-ui-swing/src/main/resources/sounds/,.wav new file mode 100755 index 0000000..e82e912 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/,.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/0.wav b/tutti-ui-swing/src/main/resources/sounds/0.wav new file mode 100755 index 0000000..33b7256 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/0.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/1.wav b/tutti-ui-swing/src/main/resources/sounds/1.wav new file mode 100755 index 0000000..828aa03 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/1.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/10.wav b/tutti-ui-swing/src/main/resources/sounds/10.wav new file mode 100755 index 0000000..896dd3e Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/10.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/100.wav b/tutti-ui-swing/src/main/resources/sounds/100.wav new file mode 100755 index 0000000..73522a7 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/100.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/1000.wav b/tutti-ui-swing/src/main/resources/sounds/1000.wav new file mode 100755 index 0000000..96f3a72 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/1000.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/11.wav b/tutti-ui-swing/src/main/resources/sounds/11.wav new file mode 100755 index 0000000..cabd3b5 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/11.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/12.wav b/tutti-ui-swing/src/main/resources/sounds/12.wav new file mode 100755 index 0000000..6f7239b Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/12.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/13.wav b/tutti-ui-swing/src/main/resources/sounds/13.wav new file mode 100755 index 0000000..7a2bcf8 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/13.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/14.wav b/tutti-ui-swing/src/main/resources/sounds/14.wav new file mode 100755 index 0000000..2c61235 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/14.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/15.wav b/tutti-ui-swing/src/main/resources/sounds/15.wav new file mode 100755 index 0000000..1526b19 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/15.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/16.wav b/tutti-ui-swing/src/main/resources/sounds/16.wav new file mode 100755 index 0000000..65dc652 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/16.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/17.wav b/tutti-ui-swing/src/main/resources/sounds/17.wav new file mode 100755 index 0000000..491f828 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/17.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/18.wav b/tutti-ui-swing/src/main/resources/sounds/18.wav new file mode 100755 index 0000000..00f2719 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/18.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/19.wav b/tutti-ui-swing/src/main/resources/sounds/19.wav new file mode 100755 index 0000000..086a9ad Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/19.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/2.wav b/tutti-ui-swing/src/main/resources/sounds/2.wav new file mode 100755 index 0000000..ab3b827 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/2.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/20.wav b/tutti-ui-swing/src/main/resources/sounds/20.wav new file mode 100755 index 0000000..5e11645 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/20.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/21.wav b/tutti-ui-swing/src/main/resources/sounds/21.wav new file mode 100755 index 0000000..650829c Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/21.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/22.wav b/tutti-ui-swing/src/main/resources/sounds/22.wav new file mode 100755 index 0000000..272aa65 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/22.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/23.wav b/tutti-ui-swing/src/main/resources/sounds/23.wav new file mode 100755 index 0000000..41cdc1f Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/23.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/24.wav b/tutti-ui-swing/src/main/resources/sounds/24.wav new file mode 100755 index 0000000..1c986dc Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/24.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/25.wav b/tutti-ui-swing/src/main/resources/sounds/25.wav new file mode 100755 index 0000000..5214789 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/25.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/26.wav b/tutti-ui-swing/src/main/resources/sounds/26.wav new file mode 100755 index 0000000..dec60ab Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/26.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/27.wav b/tutti-ui-swing/src/main/resources/sounds/27.wav new file mode 100755 index 0000000..1068ef5 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/27.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/28.wav b/tutti-ui-swing/src/main/resources/sounds/28.wav new file mode 100755 index 0000000..20c86c3 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/28.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/29.wav b/tutti-ui-swing/src/main/resources/sounds/29.wav new file mode 100755 index 0000000..0147e86 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/29.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/3.wav b/tutti-ui-swing/src/main/resources/sounds/3.wav new file mode 100755 index 0000000..a5fe16f Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/3.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/30.wav b/tutti-ui-swing/src/main/resources/sounds/30.wav new file mode 100755 index 0000000..199352a Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/30.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/31.wav b/tutti-ui-swing/src/main/resources/sounds/31.wav new file mode 100755 index 0000000..2b91532 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/31.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/32.wav b/tutti-ui-swing/src/main/resources/sounds/32.wav new file mode 100755 index 0000000..fbdbcee Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/32.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/33.wav b/tutti-ui-swing/src/main/resources/sounds/33.wav new file mode 100755 index 0000000..d06f200 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/33.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/34.wav b/tutti-ui-swing/src/main/resources/sounds/34.wav new file mode 100755 index 0000000..37e5529 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/34.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/35.wav b/tutti-ui-swing/src/main/resources/sounds/35.wav new file mode 100755 index 0000000..173ad3f Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/35.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/36.wav b/tutti-ui-swing/src/main/resources/sounds/36.wav new file mode 100755 index 0000000..6b74c97 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/36.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/37.wav b/tutti-ui-swing/src/main/resources/sounds/37.wav new file mode 100755 index 0000000..65dedc4 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/37.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/38.wav b/tutti-ui-swing/src/main/resources/sounds/38.wav new file mode 100755 index 0000000..ceb077e Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/38.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/39.wav b/tutti-ui-swing/src/main/resources/sounds/39.wav new file mode 100755 index 0000000..bfdf7eb Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/39.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/4.wav b/tutti-ui-swing/src/main/resources/sounds/4.wav new file mode 100755 index 0000000..985eca8 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/4.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/40.wav b/tutti-ui-swing/src/main/resources/sounds/40.wav new file mode 100755 index 0000000..c112b0d Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/40.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/41.wav b/tutti-ui-swing/src/main/resources/sounds/41.wav new file mode 100755 index 0000000..29b150a Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/41.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/42.wav b/tutti-ui-swing/src/main/resources/sounds/42.wav new file mode 100755 index 0000000..10d2379 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/42.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/43.wav b/tutti-ui-swing/src/main/resources/sounds/43.wav new file mode 100755 index 0000000..ff1dcc3 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/43.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/44.wav b/tutti-ui-swing/src/main/resources/sounds/44.wav new file mode 100755 index 0000000..743277b Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/44.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/45.wav b/tutti-ui-swing/src/main/resources/sounds/45.wav new file mode 100755 index 0000000..46adc3a Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/45.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/46.wav b/tutti-ui-swing/src/main/resources/sounds/46.wav new file mode 100755 index 0000000..17bf1f8 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/46.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/47.wav b/tutti-ui-swing/src/main/resources/sounds/47.wav new file mode 100755 index 0000000..6b46478 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/47.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/48.wav b/tutti-ui-swing/src/main/resources/sounds/48.wav new file mode 100755 index 0000000..deac085 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/48.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/49.wav b/tutti-ui-swing/src/main/resources/sounds/49.wav new file mode 100755 index 0000000..b144694 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/49.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/5.wav b/tutti-ui-swing/src/main/resources/sounds/5.wav new file mode 100755 index 0000000..e432e32 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/5.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/50.wav b/tutti-ui-swing/src/main/resources/sounds/50.wav new file mode 100755 index 0000000..58be65d Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/50.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/51.wav b/tutti-ui-swing/src/main/resources/sounds/51.wav new file mode 100755 index 0000000..3124b46 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/51.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/52.wav b/tutti-ui-swing/src/main/resources/sounds/52.wav new file mode 100755 index 0000000..b9cd186 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/52.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/53.wav b/tutti-ui-swing/src/main/resources/sounds/53.wav new file mode 100755 index 0000000..3024d7b Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/53.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/54.wav b/tutti-ui-swing/src/main/resources/sounds/54.wav new file mode 100755 index 0000000..fad1eb7 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/54.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/55.wav b/tutti-ui-swing/src/main/resources/sounds/55.wav new file mode 100755 index 0000000..4ec36c9 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/55.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/56.wav b/tutti-ui-swing/src/main/resources/sounds/56.wav new file mode 100755 index 0000000..ee196aa Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/56.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/57.wav b/tutti-ui-swing/src/main/resources/sounds/57.wav new file mode 100755 index 0000000..730f210 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/57.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/58.wav b/tutti-ui-swing/src/main/resources/sounds/58.wav new file mode 100755 index 0000000..66f1c65 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/58.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/59.wav b/tutti-ui-swing/src/main/resources/sounds/59.wav new file mode 100755 index 0000000..6cbd44d Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/59.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/6.wav b/tutti-ui-swing/src/main/resources/sounds/6.wav new file mode 100755 index 0000000..fb48bda Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/6.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/60.wav b/tutti-ui-swing/src/main/resources/sounds/60.wav new file mode 100755 index 0000000..afc0202 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/60.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/61.wav b/tutti-ui-swing/src/main/resources/sounds/61.wav new file mode 100755 index 0000000..6c194ef Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/61.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/62.wav b/tutti-ui-swing/src/main/resources/sounds/62.wav new file mode 100755 index 0000000..4d0f43c Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/62.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/63.wav b/tutti-ui-swing/src/main/resources/sounds/63.wav new file mode 100755 index 0000000..76fcc19 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/63.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/64.wav b/tutti-ui-swing/src/main/resources/sounds/64.wav new file mode 100755 index 0000000..fd3d869 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/64.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/65.wav b/tutti-ui-swing/src/main/resources/sounds/65.wav new file mode 100755 index 0000000..96d4e4d Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/65.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/66.wav b/tutti-ui-swing/src/main/resources/sounds/66.wav new file mode 100755 index 0000000..f9c1a4f Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/66.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/67.wav b/tutti-ui-swing/src/main/resources/sounds/67.wav new file mode 100755 index 0000000..2252446 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/67.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/68.wav b/tutti-ui-swing/src/main/resources/sounds/68.wav new file mode 100755 index 0000000..9abf613 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/68.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/69.wav b/tutti-ui-swing/src/main/resources/sounds/69.wav new file mode 100755 index 0000000..cec146a Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/69.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/7.wav b/tutti-ui-swing/src/main/resources/sounds/7.wav new file mode 100755 index 0000000..c7552ee Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/7.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/70.wav b/tutti-ui-swing/src/main/resources/sounds/70.wav new file mode 100755 index 0000000..bd6ae0b Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/70.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/71.wav b/tutti-ui-swing/src/main/resources/sounds/71.wav new file mode 100755 index 0000000..65add52 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/71.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/72.wav b/tutti-ui-swing/src/main/resources/sounds/72.wav new file mode 100755 index 0000000..41afbfb Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/72.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/73.wav b/tutti-ui-swing/src/main/resources/sounds/73.wav new file mode 100755 index 0000000..07ccca1 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/73.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/74.wav b/tutti-ui-swing/src/main/resources/sounds/74.wav new file mode 100755 index 0000000..f8c7bf3 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/74.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/75.wav b/tutti-ui-swing/src/main/resources/sounds/75.wav new file mode 100755 index 0000000..ffea393 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/75.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/76.wav b/tutti-ui-swing/src/main/resources/sounds/76.wav new file mode 100755 index 0000000..6df85a3 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/76.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/77.wav b/tutti-ui-swing/src/main/resources/sounds/77.wav new file mode 100755 index 0000000..5791596 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/77.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/78.wav b/tutti-ui-swing/src/main/resources/sounds/78.wav new file mode 100755 index 0000000..1ca349b Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/78.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/79.wav b/tutti-ui-swing/src/main/resources/sounds/79.wav new file mode 100755 index 0000000..1f292be Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/79.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/8.wav b/tutti-ui-swing/src/main/resources/sounds/8.wav new file mode 100755 index 0000000..5aece0c Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/8.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/80.wav b/tutti-ui-swing/src/main/resources/sounds/80.wav new file mode 100755 index 0000000..794318f Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/80.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/81.wav b/tutti-ui-swing/src/main/resources/sounds/81.wav new file mode 100755 index 0000000..00b3582 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/81.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/82.wav b/tutti-ui-swing/src/main/resources/sounds/82.wav new file mode 100755 index 0000000..1b69690 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/82.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/83.wav b/tutti-ui-swing/src/main/resources/sounds/83.wav new file mode 100755 index 0000000..955e335 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/83.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/84.wav b/tutti-ui-swing/src/main/resources/sounds/84.wav new file mode 100755 index 0000000..2efb67b Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/84.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/85.wav b/tutti-ui-swing/src/main/resources/sounds/85.wav new file mode 100755 index 0000000..e1d2f7a Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/85.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/86.wav b/tutti-ui-swing/src/main/resources/sounds/86.wav new file mode 100755 index 0000000..95019cf Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/86.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/87.wav b/tutti-ui-swing/src/main/resources/sounds/87.wav new file mode 100755 index 0000000..7bb8c59 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/87.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/88.wav b/tutti-ui-swing/src/main/resources/sounds/88.wav new file mode 100755 index 0000000..3ce4d16 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/88.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/89.wav b/tutti-ui-swing/src/main/resources/sounds/89.wav new file mode 100755 index 0000000..d091f45 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/89.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/9.wav b/tutti-ui-swing/src/main/resources/sounds/9.wav new file mode 100755 index 0000000..7b667c5 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/9.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/90.wav b/tutti-ui-swing/src/main/resources/sounds/90.wav new file mode 100755 index 0000000..c74319b Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/90.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/91.wav b/tutti-ui-swing/src/main/resources/sounds/91.wav new file mode 100755 index 0000000..945e94c Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/91.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/92.wav b/tutti-ui-swing/src/main/resources/sounds/92.wav new file mode 100755 index 0000000..ef0fbd7 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/92.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/93.wav b/tutti-ui-swing/src/main/resources/sounds/93.wav new file mode 100755 index 0000000..9763364 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/93.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/94.wav b/tutti-ui-swing/src/main/resources/sounds/94.wav new file mode 100755 index 0000000..ba38c0f Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/94.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/95.wav b/tutti-ui-swing/src/main/resources/sounds/95.wav new file mode 100755 index 0000000..1f70e5b Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/95.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/96.wav b/tutti-ui-swing/src/main/resources/sounds/96.wav new file mode 100755 index 0000000..60135fd Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/96.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/97.wav b/tutti-ui-swing/src/main/resources/sounds/97.wav new file mode 100755 index 0000000..b77029a Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/97.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/98.wav b/tutti-ui-swing/src/main/resources/sounds/98.wav new file mode 100755 index 0000000..ca997e3 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/98.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/99.wav b/tutti-ui-swing/src/main/resources/sounds/99.wav new file mode 100755 index 0000000..d2eda5d Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/99.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/cm.wav b/tutti-ui-swing/src/main/resources/sounds/cm.wav new file mode 100755 index 0000000..a8e0378 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/cm.wav differ diff --git a/tutti-ui-swing/src/main/resources/sounds/mm.wav b/tutti-ui-swing/src/main/resources/sounds/mm.wav new file mode 100755 index 0000000..72748ba Binary files /dev/null and b/tutti-ui-swing/src/main/resources/sounds/mm.wav differ diff --git a/tutti-ui-swing/src/test/java/fr/ifremer/tutti/ui/swing/SoundUtilTest.java b/tutti-ui-swing/src/test/java/fr/ifremer/tutti/ui/swing/SoundUtilTest.java new file mode 100644 index 0000000..c299fca --- /dev/null +++ b/tutti-ui-swing/src/test/java/fr/ifremer/tutti/ui/swing/SoundUtilTest.java @@ -0,0 +1,29 @@ +package fr.ifremer.tutti.ui.swing; + +import fr.ifremer.tutti.ui.swing.util.SoundUtil; +import org.junit.Test; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class SoundUtilTest { + + @Test + public void testSound() throws InterruptedException { + SoundUtil.readNumber(1, "cm"); + Thread.sleep(3000); + SoundUtil.readNumber(2001, "cm"); + Thread.sleep(3000); + SoundUtil.readNumber(2300, "cm"); + Thread.sleep(3000); + SoundUtil.readNumber(2000.5, "cm"); + Thread.sleep(3000); + SoundUtil.readNumber(2000, "cm"); + Thread.sleep(3000); + SoundUtil.readNumber(200, "cm"); + Thread.sleep(3000); + SoundUtil.readNumber(201, "cm"); + Thread.sleep(3000); + } +} diff --git a/tutti-ui-swing/src/test/resources/log4j.properties b/tutti-ui-swing/src/test/resources/log4j.properties index 9cb12ce..8818d0d 100644 --- a/tutti-ui-swing/src/test/resources/log4j.properties +++ b/tutti-ui-swing/src/test/resources/log4j.properties @@ -31,3 +31,5 @@ log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n # tutti levels log4j.logger.fr.ifremer=INFO + +log4j.logger.fr.ifremer.tutti.ui.swing.util.SoundUtil=DEBUG \ No newline at end of file -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 906fd368e4b628ff8a0ca2c1aa0a75b8096fa6e7 Author: Kevin Morin <morin@codelutin.com> Date: Fri Jan 15 12:26:27 2016 +0100 correction de la lecture des voix (fixes #7063) --- .../java/fr/ifremer/tutti/ui/swing/RunTutti.java | 12 +-- .../actions/ApplySpeciesFrequencyRafaleAction.java | 4 +- .../fr/ifremer/tutti/ui/swing/util/SoundUtil.java | 93 ++++++++++++---------- .../fr/ifremer/tutti/ui/swing/SoundUtilTest.java | 2 + 4 files changed, 56 insertions(+), 55 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java index 724a90e..47a231c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java @@ -23,12 +23,11 @@ package fr.ifremer.tutti.ui.swing; */ import fr.ifremer.tutti.TuttiConfiguration; +import fr.ifremer.tutti.ui.swing.content.MainUI; +import fr.ifremer.tutti.ui.swing.content.MainUIHandler; import fr.ifremer.tutti.ui.swing.content.actions.StartAction; import fr.ifremer.tutti.ui.swing.update.actions.UpdateApplicationAction; import fr.ifremer.tutti.ui.swing.update.actions.UpdateReportAction; -import fr.ifremer.tutti.ui.swing.content.MainUI; -import fr.ifremer.tutti.ui.swing.content.MainUIHandler; -import fr.ifremer.tutti.ui.swing.util.SoundUtil; import fr.ifremer.tutti.ui.swing.util.TuttiExceptionHandler; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; @@ -61,13 +60,6 @@ public class RunTutti { log.info("Starting Tutti with arguments: " + Arrays.toString(args)); } - SoundUtil.readNumber(2001, "cm"); - SoundUtil.readNumber(2001.2, "mm"); - SoundUtil.readNumber(2000.5, "cm"); - SoundUtil.readNumber(2000, "cm"); - SoundUtil.readNumber(200, "cm"); - SoundUtil.readNumber(201, "cm"); - // Create configuration TuttiConfiguration config = new TuttiConfiguration("tutti.config", args); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java index 71d4d12..4bf7da3 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java @@ -111,13 +111,13 @@ public class ApplySpeciesFrequencyRafaleAction { ui.getTable().scrollRowToVisible(rowIndex); -// if (fromIchtyometer) { + if (fromIchtyometer) { String unit = model.getLengthStepCaracteristicUnit(); handler.showInformationMessage(t("tutti.editSpeciesFrequencies.addMeasure", step, aroundLengthStep, unit)); SoundUtil.beep(handler.getConfig().getIchtyometerDataReceptionBeepFrequency()); SoundUtil.readNumber(aroundLengthStep, unit); -// } + } JXTable logsTable = ui.getLogsTable(); SpeciesFrequencyLogsTableModel logsTableModel = (SpeciesFrequencyLogsTableModel) logsTable.getModel(); 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 fd920d7..dc5a3f8 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 @@ -7,15 +7,12 @@ import org.apache.commons.logging.LogFactory; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; -import javax.sound.sampled.Clip; +import javax.sound.sampled.DataLine; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.SourceDataLine; import javax.sound.sampled.UnsupportedAudioFileException; import java.io.IOException; -import java.io.InputStream; -import java.io.SequenceInputStream; import java.util.ArrayList; -import java.util.Collections; import java.util.List; /** @@ -72,45 +69,64 @@ public class SoundUtil { sdl.close(); } - public static void readNumber(double number, String unit) { + public static synchronized void readNumber(final double number, final String unit) { - try { + new Thread(new Runnable() { - int thousands = (int) (number / 1000); - int hundreds = (int) (number % 1000) / 100; - int tensAndUnits = (int) number % 100; - int decimal = (int) (number * 10) % 10; + @Override + public void run() { - List<AudioInputStream> audioInputStreams = new ArrayList<>(); - long length = 0; - length += addSound(audioInputStreams, thousands, 1000); - length += addSound(audioInputStreams, hundreds, 100); - if (tensAndUnits != 0 || thousands == 0 && hundreds == 0) { - length += addSound(audioInputStreams, tensAndUnits); - } - if (decimal > 0) { - length += addSound(audioInputStreams, ","); - length += addSound(audioInputStreams, decimal); - } - length += addSound(audioInputStreams, unit); + try { - if (!audioInputStreams.isEmpty()) { + int thousands = (int) (number / 1000); + int hundreds = (int) (number % 1000) / 100; + int tensAndUnits = (int) number % 100; + int decimal = (int) (number * 10) % 10; - AudioFormat audioFormat = audioInputStreams.get(0).getFormat(); + List<AudioInputStream> audioInputStreams = new ArrayList<>(); - InputStream inputStream = new SequenceInputStream(Collections.enumeration(audioInputStreams)); + addSound(audioInputStreams, thousands, 1000); + addSound(audioInputStreams, hundreds, 100); + if (tensAndUnits != 0 || thousands == 0 && hundreds == 0) { + addSound(audioInputStreams, tensAndUnits); + } + if (decimal > 0) { + addSound(audioInputStreams, ","); + addSound(audioInputStreams, decimal); + } + addSound(audioInputStreams, unit); - Clip clip = AudioSystem.getClip(); - AudioInputStream appendedFiles = new AudioInputStream(inputStream, audioFormat, length); - clip.open(appendedFiles); - clip.start(); - } + if (!audioInputStreams.isEmpty()) { + + AudioFormat format = audioInputStreams.get(0).getFormat(); + DataLine.Info info = new DataLine.Info(SourceDataLine.class, format); + SourceDataLine audioLine = (SourceDataLine) AudioSystem.getLine(info); + audioLine.open(format); + audioLine.start(); - } catch (Exception e) { - if (log.isErrorEnabled()) { - log.error("Error while reading " + number + " " + unit, e); + byte[] bytesBuffer = new byte[4096]; + int bytesRead; + + while (!audioInputStreams.isEmpty()) { + AudioInputStream audioInputStream = audioInputStreams.remove(0); + while ((bytesRead = audioInputStream.read(bytesBuffer)) != -1) { + audioLine.write(bytesBuffer, 0, bytesRead); + } + audioInputStream.close(); + } + + audioLine.drain(); + audioLine.close(); + } + + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("Error while reading " + number + " " + unit, e); + } + } } - } + + }).start(); } protected static long addSound(List<AudioInputStream> inputStreams, int number) throws IOException, UnsupportedAudioFileException { @@ -126,9 +142,6 @@ public class SoundUtil { } AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(SoundUtil.class.getResource(SOUNDS_DIRECTORY + "/" + number + ".wav")); inputStreams.add(audioInputStream); - if (log.isDebugEnabled()) { - log.debug("--> " + audioInputStream.getFrameLength()); - } length += audioInputStream.getFrameLength(); } @@ -138,9 +151,6 @@ public class SoundUtil { } AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(SoundUtil.class.getResource(SOUNDS_DIRECTORY + "/" + suffix + ".wav")); inputStreams.add(audioInputStream); - if (log.isDebugEnabled()) { - log.debug("--> " + audioInputStream.getFrameLength()); - } length += audioInputStream.getFrameLength(); } @@ -153,9 +163,6 @@ public class SoundUtil { } AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(SoundUtil.class.getResource(SOUNDS_DIRECTORY + "/" + name + ".wav")); inputStreams.add(audioInputStream); - if (log.isDebugEnabled()) { - log.debug("--> " + audioInputStream.getFrameLength()); - } return audioInputStream.getFrameLength(); } diff --git a/tutti-ui-swing/src/test/java/fr/ifremer/tutti/ui/swing/SoundUtilTest.java b/tutti-ui-swing/src/test/java/fr/ifremer/tutti/ui/swing/SoundUtilTest.java index c299fca..f8da83a 100644 --- a/tutti-ui-swing/src/test/java/fr/ifremer/tutti/ui/swing/SoundUtilTest.java +++ b/tutti-ui-swing/src/test/java/fr/ifremer/tutti/ui/swing/SoundUtilTest.java @@ -13,6 +13,8 @@ public class SoundUtilTest { public void testSound() throws InterruptedException { SoundUtil.readNumber(1, "cm"); Thread.sleep(3000); + SoundUtil.readNumber(35, "mm"); + Thread.sleep(3000); SoundUtil.readNumber(2001, "cm"); Thread.sleep(3000); SoundUtil.readNumber(2300, "cm"); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm