1 package fr.ifremer.quadrige2.core.config;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 import org.hibernate.dialect.HSQLDialect;
29 import org.nuiton.config.ConfigOptionDef;
30 import org.nuiton.version.Version;
31
32 import java.io.File;
33 import java.net.URL;
34 import java.util.Locale;
35
36 import static org.nuiton.i18n.I18n.n;
37
38
39
40
41
42
43
44 public enum Quadrige2ConfigurationOption implements ConfigOptionDef {
45
46
47
48
49
50 BASEDIR(
51 "quadrige2.basedir",
52 n("quadrige2.config.option.basedir.description"),
53 "${user.home}/.quadrige2",
54 File.class),
55
56 DATA_DIRECTORY(
57 "quadrige2.data.directory",
58 n("quadrige2.config.option.data.directory.description"),
59 "${quadrige2.basedir}/data",
60 File.class),
61
62 I18N_DIRECTORY(
63 "quadrige2.i18n.directory",
64 n("quadrige2.config.option.i18n.directory.description"),
65 "${quadrige2.basedir}/i18n",
66 File.class),
67
68 TMP_DIRECTORY(
69 "quadrige2.tmp.directory",
70 n("quadrige2.config.option.tmp.directory.description"),
71 "${quadrige2.data.directory}/temp",
72 File.class),
73
74 DB_DIRECTORY(
75 "quadrige2.persistence.db.directory",
76 n("quadrige2.config.option.persistence.db.directory.description"),
77 "${quadrige2.data.directory}/db",
78 File.class),
79
80 DB_ATTACHMENT_DIRECTORY(
81 "quadrige2.persistence.db.attachment.directory",
82 n("quadrige2.config.option.persistence.db.attachment.directory.description"),
83 "${quadrige2.data.directory}/meas_files",
84 File.class),
85
86 DB_CACHE_DIRECTORY(
87 "quadrige2.persistence.db.cache.directory",
88 n("quadrige2.config.option.persistence.db.cache.directory.description"),
89 "${quadrige2.data.directory}/dbcache",
90 File.class),
91
92 DB_NAME(
93 "quadrige2.persistence.db.name",
94 n("quadrige2.config.option.persistence.db.name.description"),
95 "quadrige2",
96 String.class),
97
98 DB_HOST(
99 "quadrige2.persistence.db.host",
100 n("quadrige2.config.option.persistence.db.host.description"),
101 "",
102 String.class),
103
104 DB_PORT(
105 "quadrige2.persistence.db.port",
106 n("quadrige2.config.option.persistence.db.port.description"),
107 "",
108 String.class),
109
110 DB_VALIDATION_QUERY(
111 "quadrige2.persistence.db.validation-query",
112 n("quadrige2.persistence.db.validation-query.description"),
113 "SELECT COUNT(*) FROM STATUS",
114 String.class),
115
116 DB_CREATE_SCRIPT_PATH(
117 "quadrige2.persistence.db.script",
118 n("quadrige2.config.option.db.script.description"),
119 "classpath:fr/ifremer/quadrige2/core/db/changelog/quadrige2.script",
120 String.class,
121 false),
122
123 DB_TIMEZONE(
124 "quadrige2.persistence.db.timezone",
125 n("quadrige2.config.option.db.timezone.description"),
126 "${user.timezone}",
127 String.class,
128 false),
129
130 DATASOURCE_TYPE(
131 "quadrige2.persistence.datasource.type",
132 n("quadrige2.persistence.datasource.type.description"),
133 "local",
134 String.class),
135
136 DATASOURCE_JNDI_NAME(
137 "quadrige2.persistence.jndi-name",
138 n("quadrige2.config.option.persistence.jndi-name.description"),
139 "quadrige2-ds",
140 String.class),
141
142 JDBC_USERNAME(
143 "quadrige2.persistence.jdbc.username",
144 n("quadrige2.config.option.persistence.jdbc.username.description"),
145 "sa",
146 String.class),
147
148 JDBC_PASSWORD(
149 "quadrige2.persistence.jdbc.password",
150 n("quadrige2.config.option.persistence.jdbc.password.description"),
151 "",
152 String.class),
153
154 JDBC_URL(
155 "quadrige2.persistence.jdbc.url",
156 n("quadrige2.config.option.persistence.jdbc.url.description"),
157 "jdbc:hsqldb:file:${quadrige2.persistence.db.directory}/${quadrige2.persistence.db.name}",
158 String.class, false),
159
160 JDBC_CATALOG(
161 "quadrige2.persistence.jdbc.catalog",
162 n("quadrige2.config.option.persistence.jdbc.catalog.description"),
163 "PUBLIC",
164 String.class),
165
166 JDBC_SCHEMA(
167 "quadrige2.persistence.jdbc.schema",
168 n("quadrige2.config.option.persistence.jdbc.schema.description"),
169 "PUBLIC",
170 String.class),
171
172 JDBC_DRIVER(
173 "quadrige2.persistence.jdbc.driver",
174 n("quadrige2.config.option.persistence.jdbc.driver.description"),
175 "org.hsqldb.jdbcDriver",
176 Class.class),
177
178 JDBC_BATCH_SIZE(
179 "quadrige2.persistence.jdbc.batch-size",
180 n("quadrige2.config.option.persistence.jdbc.batch-size.description"),
181 "15",
182 Integer.class),
183
184 HIBERNATE_DIALECT(
185 "quadrige2.persistence.hibernate.dialect",
186 n("quadrige2.config.option.persistence.hibernate.dialect.description"),
187 HSQLDialect.class.getName(),
188 Class.class),
189
190 DEBUG_ENTITY_LOAD(
191 "quadrige2.persistence.hibernate.load.debug",
192 n("quadrige2.config.option.persistence.hibernate.load.debug.description"),
193 Boolean.FALSE.toString(),
194 boolean.class),
195
196 VERSION(
197 "quadrige2.version",
198 n("quadrige2.config.option.persistence.version.description"),
199 "2.4.0",
200 Version.class),
201
202 SITE_URL(
203 "quadrige2.site.url",
204 n("quadrige2.config.option.site.url.description"),
205 "http://www.ifremer.fr/maven/reports/quadrige2",
206 URL.class),
207
208 ORGANIZATION_NAME(
209 "quadrige2.organizationName",
210 n("quadrige2.config.option.organizationName.description"),
211 "Ifremer",
212 String.class),
213
214 INCEPTION_YEAR(
215 "quadrige2.inceptionYear",
216 n("quadrige2.config.option.inceptionYear.description"),
217 "2011",
218 Integer.class),
219
220
221
222
223
224 STATUS_CODE_TEMPORARY(
225 "quadrige2.enumeration.StatusCode.TEMPORARY",
226 n("quadrige2.enumeration.StatusCode.TEMPORARY.description"),
227 "2",
228 String.class),
229
230 STATUS_CODE_ENABLE(
231 "quadrige2.enumeration.StatusCode.ENABLE",
232 n("quadrige2.enumeration.StatusCode.ENABLE.description"),
233 "1",
234 String.class),
235
236 IMPORT_TABLES_DATA_INCLUDES(
237 "quadrige2.synchro.import.tables.data.includes",
238 n("quadrige2.config.option.synchro.import.tables.data.includes.description"),
239 "",
240 String.class),
241
242 IMPORT_TABLES_REFERENTIAL_INCLUDES(
243 "quadrige2.synchro.import.tables.referential.includes",
244 n("quadrige2.config.option.synchro.import.tables.referential.includes.description"),
245 "",
246 String.class),
247
248 IMPORT_TABLES_RULES_ENABLE(
249 "quadrige2.synchro.import.tables.rules.enable",
250 n("quadrige2.config.option.synchro.import.tables.rules.enable.description"),
251 Boolean.TRUE.toString(),
252 boolean.class),
253
254 IMPORT_DATA_PK_INCLUDES(
255 "quadrige2.synchro.import.pk.includes",
256 n("quadrige2.config.option.synchro.import.pk.includes.description"),
257 "",
258 String.class),
259
260 IMPORT_NB_YEARS_DATA_HISTORY (
261 "quadrige2.synchro.import.nbYearDataHistory",
262 n("quadrige2.config.option.synchro.import.nbYearDataHistory.description"),
263 "2",
264 Integer.class,
265 false),
266
267 IMPORT_DATA_MAX_ROOT_ROW_COUNT(
268 "quadrige2.synchro.import.data.maxRootRowCount",
269 n("quadrige2.config.option.synchro.import.data.maxRootRowCount.description"),
270 "-1",
271 Integer.class,
272 false),
273
274 EXPORT_DATA_UPDATE_DATE_DELAY(
275 "quadrige2.synchro.export.updateDate.offset",
276 n("quadrige2.config.option.synchro.export.data.updateDate.offset.description"),
277 String.valueOf(5 * 60),
278 Integer.class),
279
280 EXPORT_DATA_UPDATE_DATE_SHORT_DELAY(
281 "quadrige2.synchro.export.updateDate.offset.short",
282 n("quadrige2.config.option.synchro.export.data.updateDate.offset.short.description"),
283 String.valueOf(30),
284 Integer.class),
285
286 IMPORT_REFERENTIAL_UPDATE_DATE_OFFSET(
287 "quadrige2.synchro.import.updateDate.offset",
288 n("quadrige2.config.option.synchro.import.referential.updateDate.offset.description"),
289 String.valueOf(-60),
290 Integer.class),
291
292 IMPORT_REFERENTIAL_STATUS_INCLUDES(
293 "quadrige2.synchro.import.referential.status.includes",
294 n("quadrige2.config.option.synchro.import.referential.status.includes.description"),
295 null,
296 String.class),
297
298 IMPORT_TRANSCRIBING_ITEM_TYPE_LB_INCLUDES(
299 "quadrige2.synchro.import.referential.transcribingItemType.label.includes",
300 n("quadrige2.config.option.synchro.import.referential.transcribingItemType.label.includes.description"),
301 null,
302 String.class),
303
304 SYNCHRO_PROGRAM_CODES_INCLUDES(
305 "quadrige2.synchro.program.codes",
306 n("quadrige2.config.option.synchro.program.codes.description"),
307 "",
308 String.class,
309 false),
310
311
312
313
314
315 DB_BACKUP_DIRECTORY(
316 "quadrige2.persistence.db.backup.directory",
317 n("quadrige2.config.option.persistence.db.backup.directory.description"),
318 "${quadrige2.data.directory}/dbbackup",
319 File.class,
320 false),
321 DB_ENUMERATION_RESOURCE(
322 "quadrige2.persistence.db.enumeration.resource",
323 n("quadrige2.config.option.persistence.db.enumeration.resource"),
324 "classpath*:quadrige2-db-enumerations.properties",
325 String.class,
326 false),
327 HIBERNATE_SHOW_SQL(
328 "quadrige2.persistence.hibernate.showSql",
329 n("quadrige2.config.option.persistence.hibernate.showSql.description"),
330 Boolean.FALSE.toString(),
331 boolean.class,
332 false),
333
334 HIBERNATE_USE_SQL_COMMENT(
335 "quadrige2.persistence.hibernate.useSqlComment",
336 n("quadrige2.config.option.persistence.hibernate.useSqlComment.description"),
337 Boolean.FALSE.toString(),
338 boolean.class,
339 false),
340
341 HIBERNATE_FORMAT_SQL(
342 "quadrige2.persistence.hibernate.formatSql",
343 n("quadrige2.config.option.persistence.hibernate.formatSql.description"),
344 Boolean.FALSE.toString(),
345 boolean.class,
346 false),
347
348 HIBERNATE_SECOND_LEVEL_CACHE(
349 "quadrige2.persistence.hibernate.useSecondLevelCache",
350 n("quadrige2.config.option.persistence.hibernate.useSecondLevelCache.description"),
351 Boolean.FALSE.toString(),
352 boolean.class,
353 false),
354
355 HIBERNATE_CLIENT_QUERIES_FILE(
356 "quadrige2.persistence.hibernate.queriesFile",
357 n("quadrige2.config.option.persistence.hibernate.queriesFile.description"),
358 "queries-failsafe.hbm.xml",
359 String.class,
360 false),
361
362 LIQUIBASE_RUN_AUTO(
363 "quadrige2.persistence.liquibase.should.run",
364 n("quadrige2.config.option.liquibase.should.run.description"),
365 Boolean.FALSE.toString(),
366 boolean.class,
367 false),
368
369 LIQUIBASE_CHANGE_LOG_PATH(
370 "quadrige2.persistence.liquibase.changelog.path",
371 n("quadrige2.config.option.liquibase.changelog.path.description"),
372 "classpath:fr/ifremer/quadrige2/core/db/changelog/db-changelog-master.xml",
373 String.class,
374 false),
375
376 LIQUIBASE_DIFF_TYPES(
377 "quadrige2.persistence.liquibase.diff.types",
378 n("quadrige2.config.option.liquibase.diff.types.description"),
379 null,
380 String.class,
381 false),
382
383 LIQUIBASE_OUTPUT_FILE(
384 "quadrige2.persistence.liquibase.output.file",
385 n("quadrige2.config.option.liquibase.output.file.description"),
386 null,
387 File.class,
388 false),
389
390 LIQUIBASE_FORCE_OUTPUT_FILE(
391 "quadrige2.persistence.liquibase.output.force",
392 n("quadrige2.config.option.liquibase.output.force.description"),
393 Boolean.FALSE.toString(),
394 Boolean.class,
395 false),
396
397 CSV_SEPARATOR(
398 "quadrige2.csv.separator",
399 n("quadrige2.config.option.csv.separator.description"),
400 ";",
401 String.class,
402 false),
403 VALUE_SEPARATOR(
404 "quadrige2.value.separator",
405 n("quadrige2.config.option.value.separator.description"),
406 ",",
407 String.class,
408 false),
409 ATTRIBUTE_SEPARATOR(
410 "quadrige2.attribute.separator",
411 n("quadrige2.config.option.attribute.separator.description"),
412 ".",
413 String.class,
414 false),
415
416 I18N_LOCALE(
417 "quadrige2.i18n.locale",
418 n("quadrige2.config.option.i18n.locale.description"),
419 Locale.FRANCE.getCountry(),
420 Locale.class,
421 false),
422
423 SERVER_PORT(
424 "quadrige2.server.port",
425 n("quadrige2.config.option.server.port.description"),
426 "8888",
427 Integer.class,
428 false),
429
430 ADMIN_EMAIL(
431 "quadrige2.admin.email",
432 n("quadrige2.config.option.admin.email.description"),
433 "q2support@ifremer.fr",
434 String.class,
435 false),
436
437
438
439
440
441 SYNCHRONIZATION_USE_SERVER(
442 "quadrige2.synchronization.useServer",
443 n("quadrige2.config.option.synchro.useServer.description"),
444 String.valueOf(true),
445 Boolean.class,
446 false),
447
448 SYNCHRONIZATION_SITE_URL(
449 "quadrige2.synchronization.site.url",
450 n("quadrige2.config.option.synchro.site.url.description"),
451 null,
452 String.class,
453 false),
454 SYNCHRONIZATION_SITE_TIMEOUT(
455 "quadrige2.synchronization.site.timeout",
456 n("quadrige2.config.option.synchro.site.timeout.description"),
457 "30000",
458 Integer.class,
459 false),
460 SYNCHRONIZATION_REFRESH_TIMEOUT(
461 "quadrige2.synchronization.refresh.timeout",
462 n("quadrige2.config.option.synchro.refresh.timeout.description"),
463 "500",
464 Integer.class,
465 false),
466 SYNCHRONIZATION_RETRY_COUNT(
467 "quadrige2.synchronization.retry.count",
468 n("quadrige2.config.option.synchro.retry.count.description"),
469 "10",
470 Integer.class,
471 false),
472 SYNCHRONIZATION_RETRY_TIMEOUT(
473 "quadrige2.synchronization.retry.timeout",
474 n("quadrige2.config.option.synchro.retry.timeout.description"),
475 "5000",
476 Integer.class,
477 false),
478 SYNCHRONIZATION_DIRECTORY(
479 "quadrige2.synchro.directory",
480 n("quadrige2.config.option.synchro.directory.description"),
481 "${quadrige2.data.directory}/synchro",
482 File.class),
483
484 SYNCHRONIZATION_ZIP_FILE_PREFIX(
485 "quadrige2.synchro.zipFile.prefix",
486 n("quadrige2.config.option.synchro.zipFile.prefix.description"),
487 "${quadrige2.persistence.db.name}-db-",
488 String.class,
489 false),
490
491 EXTRACTION_BASE_DIRECTORY(
492 "quadrige2.extraction.base.directory",
493 n("quadrige2.config.option.extraction.base.directory.description"),
494 "${quadrige2.data.directory}/extraction",
495 File.class),
496 EXTRACTION_SINP_DIRECTORY(
497 "quadrige2.extraction.sinp.directory",
498 n("quadrige2.config.option.extraction.sinp.directory.description"),
499 "${quadrige2.extraction.base.directory}/sinp",
500 File.class),
501 EXTRACTION_PAMPA_DIRECTORY(
502 "quadrige2.extraction.pampa.directory",
503 n("quadrige2.config.option.extraction.pampa.directory.description"),
504 "${quadrige2.extraction.base.directory}/pampa",
505 File.class),
506
507
508 MAIL_SMTP_HOST(
509 "quadrige2.smtp.host",
510 "quadrige2.config.option.smtp.host.description",
511 "",
512 String.class,
513 false),
514 MAIL_SMTP_PORT(
515 "quadrige2.smtp.port",
516 "quadrige2.config.option.smtp.port.description",
517 "25",
518 Integer.class,
519 false),
520 MAIL_SMTP_USERNAME(
521 "quadrige2.smtp.username",
522 "quadrige2.config.option.smtp.username.description",
523 "",
524 String.class,
525 false),
526 MAIL_SMTP_PASSWORD(
527 "quadrige2.smtp.password",
528 "quadrige2.config.option.smtp.password.description",
529 "",
530 String.class,
531 false),
532 MAIL_SMTP_SENDER(
533 "quadrige2.smtp.sender",
534 "quadrige2.config.option.smtp.sender.description",
535 "",
536 String.class,
537 false),
538 MAIL_SMTP_STARTTLS(
539 "quadrige2.smtp.starttls.enable",
540 "quadrige2.config.option.smtp.starttls.enable.description",
541 "false",
542 Boolean.class,
543 false),
544 MAIL_SMTP_SSL(
545 "quadrige2.smtp.ssl.enable",
546 "quadrige2.config.option.smtp.ssl.enable.description",
547 "false",
548 Boolean.class,
549 false)
550
551 ;
552
553
554 private final String key;
555
556
557 private final String description;
558
559
560 private final Class<?> type;
561
562
563 private String defaultValue;
564
565
566 private boolean isTransient;
567
568
569 private boolean isFinal;
570
571 Quadrige2ConfigurationOption(String key,
572 String description,
573 String defaultValue,
574 Class<?> type,
575 boolean isTransient) {
576 this.key = key;
577 this.description = description;
578 this.defaultValue = defaultValue;
579 this.type = type;
580 this.isTransient = isTransient;
581 this.isFinal = isTransient;
582 }
583
584 Quadrige2ConfigurationOption(String key,
585 String description,
586 String defaultValue,
587 Class<?> type) {
588 this(key, description, defaultValue, type, true);
589 }
590
591
592 @Override
593 public String getKey() {
594 return key;
595 }
596
597
598 @Override
599 public Class<?> getType() {
600 return type;
601 }
602
603
604 @Override
605 public String getDescription() {
606 return description;
607 }
608
609
610 @Override
611 public String getDefaultValue() {
612 return defaultValue;
613 }
614
615
616 @Override
617 public boolean isTransient() {
618 return isTransient;
619 }
620
621
622 @Override
623 public boolean isFinal() {
624 return isFinal;
625 }
626
627
628 @Override
629 public void setDefaultValue(String defaultValue) {
630 this.defaultValue = defaultValue;
631 }
632
633
634 @Override
635 public void setTransient(boolean newValue) {
636
637 }
638
639
640 @Override
641 public void setFinal(boolean newValue) {
642
643 }
644 }