View Javadoc
1   package fr.ifremer.quadrige2.core.config;
2   
3   /*-
4    * #%L
5    * Quadrige2 Core :: Quadrige2 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  import org.nuiton.config.ConfigOptionDef;
26  
27  import java.io.File;
28  import java.util.Locale;
29  
30  import static org.nuiton.i18n.I18n.n;
31  
32  /**
33   * All application configuration options.
34   *
35   * @author Ludovic Pecquot <ludovic.pecquot@e-is.pro>
36   * @since 3.0.0
37   */
38  public enum Quadrige2CoreConfigurationOption implements ConfigOptionDef {
39  
40      /*
41       * Additional options for Quadrige2 Client Application
42       */
43      PLUGINS_DIRECTORY(
44              "quadrige2.plugins.directory",
45              n("quadrige2.config.option.plugins.directory.description"),
46              "${quadrige2.basedir}/plugins",
47              File.class),
48  
49      CONFIG_DIRECTORY(
50              "quadrige2.config.directory",
51              n("quadrige2.config.option.config.directory.description"),
52              "${quadrige2.basedir}/config",
53              File.class),
54  
55      /*
56       * Update Url options
57       */
58      UPDATE_APPLICATION_URL(
59              "quadrige2.update.application.url",
60              n("quadrige2.config.option.update.application.url.description"),
61              "${quadrige2.site.url}/quadrige2-application.properties",
62              String.class,
63              false),
64      UPDATE_DATA_URL(
65              "quadrige2.update.data.url",
66              n("quadrige2.config.option.update.data.url.description"),
67              "${quadrige2.site.url}/quadrige2-data.properties",
68              String.class,
69              false),
70      INSTALL_DB_URL(
71              "quadrige2.install.db.url",
72              n("quadrige2.config.option.install.db.url.description"),
73              "${quadrige2.update.data.url}",
74              String.class,
75              false),
76      UPDATE_PLUGINS_URL(
77              "quadrige2.update.plugins.url",
78              n("quadrige2.config.option.update.plugins.url.description"),
79              "${quadrige2.update.data.url}", // same as data url
80              String.class,
81              false),
82  
83      /*
84       * Authentication options
85       */
86      AUTHENTICATION_DISABLED(
87              "quadrige2.authentication.disabled",
88              n("quadrige2.config.option.authentication.disabled.description"),
89              String.valueOf(false),
90              Boolean.class,
91              false),
92      AUTHENTICATION_FORCED(
93              "quadrige2.authentication.forced",
94              n("quadrige2.config.option.authentication.forced.description"),
95              String.valueOf(true),
96              Boolean.class,
97              false),
98      AUTHENTICATION_MOCK_USERNAME(
99              "quadrige2.authentication.mock.username",
100             n("quadrige2.config.option.authentication.mock.username.description"),
101             "demo",
102             String.class,
103             false),
104     AUTHENTICATION_MOCK_PASSWORD(
105             "quadrige2.authentication.mock.password",
106             n("quadrige2.config.option.authentication.mock.password.description"),
107             "demo",
108             String.class,
109             false),
110     AUTHENTICATION_MOCK_USER_ID(
111             "quadrige2.authentication.mock.userId",
112             n("quadrige2.config.option.authentication.mock.userId.description"),
113             "0",
114             Integer.class,
115             false),
116     AUTHENTICATION_INTRANET_SITE_URL(
117             "quadrige2.authentication.intranet.site.url",
118             n("quadrige2.config.option.authentication.intranet.site.url.description"),
119             "${quadrige2.site.url}/auth",
120             String.class,
121             false),
122     AUTHENTICATION_INTRANET_SITE_TIMEOUT(
123             "quadrige2.authentication.intranet.site.timeout",
124             n("quadrige2.config.option.authentication.intranet.site.timeout.description"),
125             "5000",
126             Integer.class,
127             false),
128     AUTHENTICATION_EXTRANET_SITE_URL(
129             "quadrige2.authentication.extranet.site.url",
130             n("quadrige2.config.option.authentication.extranet.site.url.description"),
131             "${quadrige2.site.url}/auth",
132             String.class,
133             false),
134     AUTHENTICATION_EXTRANET_SITE_TIMEOUT(
135             "quadrige2.authentication.extranet.site.timeout",
136             n("quadrige2.config.option.authentication.extranet.site.timeout.description"),
137             "5000",
138             Integer.class,
139             false),
140     AUTHENTICATION_DEFAULT_USERNAME(
141             "quadrige2.authentication.username",
142             n("quadrige2.config.option.authentication.username.description"),
143             null,
144             String.class,
145             false),
146     AUTHENTICATION_DEFAULT_PASSWORD(
147             "quadrige2.authentication.password",
148             n("quadrige2.config.option.authentication.password.description"),
149             null,
150             String.class,
151             false),
152 
153     /*
154      * Synchronization options
155      */
156     SYNCHRONIZATION_PERIOD_SELECTION_ENABLE(
157             "quadrige2.synchronization.period.enable",
158             n("quadrige2.config.option.synchro.period.enable.description"),
159             String.valueOf(false),
160             Boolean.class,
161             false),
162     SYNCHRONIZATION_ZIP_FILE_PREFIX(
163             "quadrige2.synchro.zipFile.prefix",
164             n("quadrige2.config.option.synchro.zipFile.prefix.description"),
165             "quadrige2-db-",
166             String.class,
167             false),
168 
169     /*
170      * Application options
171      */
172     LAUNCH_MODE(
173             "quadrige2.launch.mode",
174             n("quadrige2.config.option.launch.mode.description"),
175             null,
176             String.class),
177     I18N_LOCALE(
178             "quadrige2.i18n.locale",
179             n("quadrige2.config.option.i18n.locale.description"),
180             Locale.FRANCE.getCountry(),
181             Locale.class,
182             false)
183 
184     ;
185 
186     /**
187      * Configuration key.
188      */
189     private final String key;
190 
191     /**
192      * I18n key of option description
193      */
194     private final String description;
195 
196     /**
197      * Type of option
198      */
199     private final Class<?> type;
200 
201     /**
202      * Default value of option.
203      */
204     private String defaultValue;
205 
206     /**
207      * Flag to not keep option value on disk
208      */
209     private boolean isTransient;
210 
211     /**
212      * Flag to not allow option value modification
213      */
214     private boolean isFinal;
215 
216     Quadrige2CoreConfigurationOption(String key,
217                                      String description,
218                                      String defaultValue,
219                                      Class<?> type,
220                                      boolean isTransient) {
221         this.key = key;
222         this.description = description;
223         this.defaultValue = defaultValue;
224         this.type = type;
225         this.isTransient = isTransient;
226         this.isFinal = isTransient;
227     }
228 
229     Quadrige2CoreConfigurationOption(String key,
230                                      String description,
231                                      String defaultValue,
232                                      Class<?> type) {
233         this(key, description, defaultValue, type, true);
234     }
235 
236     /**
237      * {@inheritDoc}
238      */
239     @Override
240     public String getKey() {
241         return key;
242     }
243 
244     /**
245      * {@inheritDoc}
246      */
247     @Override
248     public Class<?> getType() {
249         return type;
250     }
251 
252     /**
253      * {@inheritDoc}
254      */
255     @Override
256     public String getDescription() {
257         return description;
258     }
259 
260     /**
261      * {@inheritDoc}
262      */
263     @Override
264     public String getDefaultValue() {
265         return defaultValue;
266     }
267 
268     /**
269      * {@inheritDoc}
270      */
271     @Override
272     public boolean isTransient() {
273         return isTransient;
274     }
275 
276     /**
277      * {@inheritDoc}
278      */
279     @Override
280     public boolean isFinal() {
281         return isFinal;
282     }
283 
284     /**
285      * {@inheritDoc}
286      */
287     @Override
288     public void setDefaultValue(String defaultValue) {
289         this.defaultValue = defaultValue;
290     }
291 
292     /**
293      * {@inheritDoc}
294      */
295     @Override
296     public void setTransient(boolean newValue) {
297         // not used
298     }
299 
300     /**
301      * {@inheritDoc}
302      */
303     @Override
304     public void setFinal(boolean newValue) {
305         // not used
306     }
307 }