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