1 /*
2 * Copyright (c) 2002-2021, City of Paris
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright notice
10 * and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright notice
13 * and the following disclaimer in the documentation and/or other materials
14 * provided with the distribution.
15 *
16 * 3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
17 * contributors may be used to endorse or promote products derived from
18 * this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 * POSSIBILITY OF SUCH DAMAGE.
31 *
32 * License 1.0
33 */
34 package fr.paris.lutece.plugins.captcha.modules.jcaptcha.service.sound;
35
36 import fr.paris.lutece.portal.service.util.AppPathService;
37
38 import java.io.File;
39
40 import java.util.ArrayList;
41 import java.util.List;
42
43 /**
44 *
45 * @author lutecer
46 *
47 */
48 public class LuteceBackgroundSoundMixerConfigurator
49 {
50 private static final String STRING_SLASH = "/";
51 private static final String WAV_EXTENSION = ".wav";
52 private static final String JCAPTCHA_SOUND_DIRECTORY = "jcaptcha.sound.directory";
53 private float _attenuationValue;
54 private File [ ] _backgroundSoundFiles = new File [ 0];
55
56 /**
57 *
58 * @param attenuationValue
59 * the attenuation value
60 * @param backGroundFileNames
61 * the backGround files Names
62 */
63 public LuteceBackgroundSoundMixerConfigurator( int attenuationValue, String... backGroundFileNames )
64 {
65 _attenuationValue = attenuationValue / 100f;
66
67 String soundFolder = AppPathService.getPath( JCAPTCHA_SOUND_DIRECTORY );
68 List<File> tempFileList = new ArrayList<File>( );
69 File soundFile;
70
71 for ( int i = 0; i < backGroundFileNames.length; i++ )
72 {
73 soundFile = new File( soundFolder + STRING_SLASH + backGroundFileNames [i] + WAV_EXTENSION );
74
75 if ( soundFile.exists( ) )
76 {
77 tempFileList.add( soundFile );
78 }
79 }
80
81 _backgroundSoundFiles = (File [ ]) tempFileList.toArray( _backgroundSoundFiles );
82 }
83
84 /**
85 *
86 * @return the attenuation value
87 */
88 public float getAttenuationValue( )
89 {
90 return _attenuationValue;
91 }
92
93 /**
94 *
95 * @return the random background file
96 */
97 public File getRandomBackgroundFile( )
98 {
99 int randomFileInt = (int) Math.rint( _backgroundSoundFiles.length * Math.random( ) );
100
101 if ( randomFileInt >= _backgroundSoundFiles.length )
102 {
103 randomFileInt = _backgroundSoundFiles.length - 1;
104 }
105
106 return _backgroundSoundFiles [randomFileInt];
107 }
108 }