View Javadoc
1   package fr.ifremer.quadrige3.core.config;
2   
3   /*-
4    * #%L
5    * Quadrige3 Core :: Quadrige3 Client Core
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2017 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU Affero General Public License as published by
13   * the Free Software Foundation, either version 3 of the License, or
14   * (at your option) any later version.
15   *
16   * This program is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU General Public License for more details.
20   *
21   * You should have received a copy of the GNU Affero General Public License
22   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23   * #L%
24   */
25  
26  import org.nuiton.config.ConfigOptionDef;
27  
28  import java.io.File;
29  import java.util.Locale;
30  
31  import static org.nuiton.i18n.I18n.n;
32  
33  /**
34   * All application configuration options.
35   *
36   * @author Ludovic Pecquot <ludovic.pecquot@e-is.pro>
37   * @since 3.0.0
38   */
39  public enum QuadrigeCoreConfigurationOption implements ConfigOptionDef {
40  
41      /*
42       * Additional options for Quadrige3 Client Application
43       */
44  //    PLUGINS_DIRECTORY(
45  //            "quadrige3.plugins.directory",
46  //            n("quadrige3.config.option.plugins.directory.description"),
47  //            "${quadrige3.basedir}/plugins",
48  //            File.class),
49  
50      CONFIG_DIRECTORY(
51          "quadrige3.config.directory",
52          n("quadrige3.config.option.config.directory.description"),
53          "${quadrige3.basedir}/config",
54          File.class),
55  
56      MEASUREMENT_GRID_PRESETS_DIRECTORY(
57          "quadrige3.measurementGridPresets.directory",
58          n("quadrige3.config.option.measurementGridPresets.directory.description"),
59          "${quadrige3.data.directory}/measurementGridPresets",
60          File.class),
61  
62      EXTRACTION_DIRECTORY(
63          "quadrige3.extraction.directory",
64          n("quadrige3.config.option.extraction.directory.description"),
65          "${quadrige3.data.directory}/extraction",
66          File.class),
67  
68      EXTRACTION_CONFIG_DIRECTORY(
69          "quadrige3.extractionConfig.directory",
70          n("quadrige3.config.option.extractionConfig.directory.description"),
71          "${quadrige3.data.directory}/extractionConfig",
72          File.class),
73  
74      CONTEXT_DIRECTORY(
75          "quadrige3.context.directory",
76          n("quadrige3.config.option.context.directory.description"),
77          "${quadrige3.data.directory}/context",
78          File.class),
79  
80      DB_OTHER_DIRECTORIES(
81          "quadrige3.persistence.db.other.directories",
82          n("quadrige3.config.option.persistence.db.other.directories.description"),
83          "${quadrige3.measurementGridPresets.directory};${quadrige3.extraction.directory};${quadrige3.extractionConfig.directory};${quadrige3.context.directory}",
84          String.class),
85  
86      /*
87       * Update Url options
88       */
89      UPDATE_APPLICATION_URL(
90          "quadrige3.update.application.url",
91          n("quadrige3.config.option.update.application.url.description"),
92          "${quadrige3.site.url}/quadrige3-application.properties",
93          String.class,
94          false),
95      UPDATE_DATA_URL(
96          "quadrige3.update.data.url",
97          n("quadrige3.config.option.update.data.url.description"),
98          "${quadrige3.site.url}/quadrige3-data.properties",
99          String.class,
100         false),
101     INSTALL_DB_URL(
102         "quadrige3.install.db.url",
103         n("quadrige3.config.option.install.db.url.description"),
104         "${quadrige3.update.data.url}",
105         String.class,
106         false),
107 
108     /*
109      * Authentication options
110      */
111     AUTHENTICATION_DISABLED(
112         "quadrige3.authentication.disabled",
113         n("quadrige3.config.option.authentication.disabled.description"),
114         String.valueOf(false),
115         Boolean.class,
116         false),
117     AUTHENTICATION_FORCED(
118         "quadrige3.authentication.forced",
119         n("quadrige3.config.option.authentication.forced.description"),
120         String.valueOf(true),
121         Boolean.class,
122         false),
123     AUTHENTICATION_MOCK_USERNAME(
124         "quadrige3.authentication.mock.username",
125         n("quadrige3.config.option.authentication.mock.username.description"),
126         "demo",
127         String.class,
128         false),
129     AUTHENTICATION_MOCK_PASSWORD(
130         "quadrige3.authentication.mock.password",
131         n("quadrige3.config.option.authentication.mock.password.description"),
132         "demo",
133         String.class,
134         false),
135     AUTHENTICATION_MOCK_USER_ID(
136         "quadrige3.authentication.mock.userId",
137         n("quadrige3.config.option.authentication.mock.userId.description"),
138         "0",
139         Integer.class,
140         false),
141     AUTHENTICATION_INTRANET_SITE_URL(
142         "quadrige3.authentication.intranet.site.url",
143         n("quadrige3.config.option.authentication.intranet.site.url.description"),
144         "${quadrige3.site.url}/auth",
145         String.class,
146         false),
147     AUTHENTICATION_INTRANET_SITE_TIMEOUT(
148         "quadrige3.authentication.intranet.site.timeout",
149         n("quadrige3.config.option.authentication.intranet.site.timeout.description"),
150         "5000",
151         Integer.class,
152         false),
153     AUTHENTICATION_EXTRANET_SITE_URL(
154         "quadrige3.authentication.extranet.site.url",
155         n("quadrige3.config.option.authentication.extranet.site.url.description"),
156         "${quadrige3.site.url}/auth",
157         String.class,
158         false),
159     AUTHENTICATION_EXTRANET_SITE_TIMEOUT(
160         "quadrige3.authentication.extranet.site.timeout",
161         n("quadrige3.config.option.authentication.extranet.site.timeout.description"),
162         "5000",
163         Integer.class,
164         false),
165     AUTHENTICATION_DEFAULT_USERNAME(
166         "quadrige3.authentication.username",
167         n("quadrige3.config.option.authentication.username.description"),
168         null,
169         String.class,
170         false),
171     AUTHENTICATION_DEFAULT_PASSWORD(
172         "quadrige3.authentication.password",
173         n("quadrige3.config.option.authentication.password.description"),
174         null,
175         String.class,
176         false),
177 
178     /*
179      * Synchronization options
180      */
181     SYNCHRONIZATION_PERIOD_SELECTION_ENABLE(
182         "quadrige3.synchronization.period.enable",
183         n("quadrige3.config.option.synchro.period.enable.description"),
184         String.valueOf(false),
185         Boolean.class,
186         false),
187     SYNCHRONIZATION_ZIP_FILE_PREFIX(
188         "quadrige3.synchro.zipFile.prefix",
189         n("quadrige3.config.option.synchro.zipFile.prefix.description"),
190         "quadrige3-db-",
191         String.class,
192         false),
193     SYNCHRO_PROGRAM_CODES_INCLUDES(
194         "quadrige3.synchro.program.codes",
195         n("quadrige3.config.option.synchro.program.codes.description"),
196         "",
197         String.class,
198         false),
199     SYNCHRO_PHOTO_ENABLE_DEFAULT(
200         "quadrige3.synchro.photo.enable.default",
201         n("quadrige3.config.option.synchro.photo.enable.default.description"),
202         String.valueOf(false),
203         Boolean.class,
204         false),
205     SYNCHRO_PHOTO_MAX_SIZE(
206         "quadrige3.synchro.photo.maxSize",
207         n("quadrige3.config.option.synchro.photo.maxSize.description"),
208         "10000000", // about 10Mb
209         Long.class,
210         false),
211     SYNCHRO_PHOTO_MAX_NUMBER_THRESHOLD(
212         "quadrige3.synchro.photo.maxNumber.threshold",
213         n("quadrige3.config.option.synchro.photo.maxNumber.threshold.description"),
214         "100",
215         Integer.class,
216         false),
217 
218     /*
219      * Application options
220      */
221     LAUNCH_MODE(
222         "quadrige3.launch.mode",
223         n("quadrige3.config.option.launch.mode.description"),
224         null,
225         String.class),
226     DEBUG_MODE(
227         "quadrige3.debug.mode",
228         n("quadrige3.config.option.debug.mode.description"),
229         Boolean.FALSE.toString(),
230         Boolean.class,
231         false),
232     I18N_LOCALE(
233         "quadrige3.i18n.locale",
234         n("quadrige3.config.option.i18n.locale.description"),
235         Locale.FRANCE.toString(),
236         Locale.class,
237         false),
238     UI_SPLASH_SCREEN_RIGHT_LOGOS(
239         "quadrige3.splashScreen.right.logos",
240         n("dali.config.option.ui.splashScreen.right.logos.description"),
241         "logo-Ifremer.png",
242         String.class,
243         false),
244     UI_SPLASH_SCREEN_LEFT_LOGOS(
245         "quadrige3.splashScreen.left.logos",
246         n("dali.config.option.ui.splashScreen.left.logos.description"),
247         "",
248         String.class,
249         false),
250 
251     ;
252 
253     /**
254      * Configuration key.
255      */
256     private final String key;
257 
258     /**
259      * I18n key of option description
260      */
261     private final String description;
262 
263     /**
264      * Type of option
265      */
266     private final Class<?> type;
267 
268     /**
269      * Default value of option.
270      */
271     private String defaultValue;
272 
273     /**
274      * Flag to not keep option value on disk
275      */
276     private boolean isTransient;
277 
278     /**
279      * Flag to not allow option value modification
280      */
281     private boolean isFinal;
282 
283     QuadrigeCoreConfigurationOption(String key,
284                                     String description,
285                                     String defaultValue,
286                                     Class<?> type,
287                                     boolean isTransient) {
288         this.key = key;
289         this.description = description;
290         this.defaultValue = defaultValue;
291         this.type = type;
292         this.isTransient = isTransient;
293         this.isFinal = isTransient;
294     }
295 
296     QuadrigeCoreConfigurationOption(String key,
297                                     String description,
298                                     String defaultValue,
299                                     Class<?> type) {
300         this(key, description, defaultValue, type, true);
301     }
302 
303     /**
304      * {@inheritDoc}
305      */
306     @Override
307     public String getKey() {
308         return key;
309     }
310 
311     /**
312      * {@inheritDoc}
313      */
314     @Override
315     public Class<?> getType() {
316         return type;
317     }
318 
319     /**
320      * {@inheritDoc}
321      */
322     @Override
323     public String getDescription() {
324         return description;
325     }
326 
327     /**
328      * {@inheritDoc}
329      */
330     @Override
331     public String getDefaultValue() {
332         return defaultValue;
333     }
334 
335     /**
336      * {@inheritDoc}
337      */
338     @Override
339     public boolean isTransient() {
340         return isTransient;
341     }
342 
343     /**
344      * {@inheritDoc}
345      */
346     @Override
347     public boolean isFinal() {
348         return isFinal;
349     }
350 
351     /**
352      * {@inheritDoc}
353      */
354     @Override
355     public void setDefaultValue(String defaultValue) {
356         this.defaultValue = defaultValue;
357     }
358 
359     /**
360      * {@inheritDoc}
361      */
362     @Override
363     public void setTransient(boolean newValue) {
364         // not used
365     }
366 
367     /**
368      * {@inheritDoc}
369      */
370     @Override
371     public void setFinal(boolean newValue) {
372         // not used
373     }
374 }