1 package net.sumaris.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 import net.sumaris.core.dao.technical.hibernate.spatial.HSQLSpatialDialect;
28 import org.nuiton.config.ConfigOptionDef;
29 import org.nuiton.version.Version;
30
31 import java.io.File;
32 import java.net.URL;
33 import java.util.Locale;
34
35 import static org.nuiton.i18n.I18n.n;
36
37
38
39
40
41
42
43 public enum SumarisConfigurationOption implements ConfigOptionDef {
44
45
46
47
48
49 APP_NAME(
50 "sumaris.name",
51 n("sumaris.config.option.app.name.description"),
52 "SUMARiS",
53 String.class),
54
55 VERSION(
56 "sumaris.version",
57 n("sumaris.config.option.persistence.version.description"),
58 "1.0.0",
59 Version.class),
60
61 BASEDIR(
62 "sumaris.basedir",
63 n("sumaris.config.option.basedir.description"),
64 "${user.home}/.${sumaris.name}",
65 File.class),
66
67 DATA_DIRECTORY(
68 "sumaris.data.directory",
69 n("sumaris.config.option.data.directory.description"),
70 "${sumaris.basedir}/data",
71 File.class),
72
73 I18N_DIRECTORY(
74 "sumaris.i18n.directory",
75 n("sumaris.config.option.i18n.directory.description"),
76 "${sumaris.basedir}/i18n",
77 File.class),
78
79 TMP_DIRECTORY(
80 "sumaris.tmp.directory",
81 n("sumaris.config.option.tmp.directory.description"),
82 "${sumaris.data.directory}/temp",
83 File.class),
84
85 DB_DIRECTORY(
86 "sumaris.persistence.db.directory",
87 n("sumaris.config.option.persistence.db.directory.description"),
88 "${sumaris.data.directory}/db",
89 File.class),
90
91 DB_ATTACHMENT_DIRECTORY(
92 "sumaris.persistence.db.attachment.directory",
93 n("sumaris.config.option.persistence.db.attachment.directory.description"),
94 "${sumaris.data.directory}/meas_files",
95 File.class),
96
97 DB_NAME(
98 "sumaris.persistence.db.name",
99 n("sumaris.config.option.persistence.db.name.description"),
100 "sumaris",
101 String.class),
102
103 DB_HOST(
104 "sumaris.persistence.db.host",
105 n("sumaris.config.option.persistence.db.host.description"),
106 "",
107 String.class),
108
109 DB_PORT(
110 "sumaris.persistence.db.port",
111 n("sumaris.config.option.persistence.db.port.description"),
112 "",
113 String.class),
114
115 DB_VALIDATION_QUERY(
116 "sumaris.persistence.db.validation-query",
117 n("sumaris.persistence.db.validation-query.description"),
118 "SELECT COUNT(*) FROM SYSTEM_VERSION",
119 String.class),
120
121 DB_CREATE_SCRIPT_PATH(
122 "sumaris.persistence.db.script",
123 n("sumaris.config.option.db.script.description"),
124 "classpath:net/sumaris/core/db/changelog/sumaris.script",
125 String.class,
126 false),
127
128 DB_TIMEZONE(
129 "sumaris.persistence.db.timezone",
130 n("sumaris.config.option.db.timezone.description"),
131 "${user.timezone}",
132 String.class,
133 false),
134
135 DATASOURCE_TYPE(
136 "sumaris.persistence.datasource.type",
137 n("sumaris.persistence.datasource.type.description"),
138 "local",
139 String.class),
140
141 DATASOURCE_JNDI_NAME(
142 "sumaris.persistence.jndi-name",
143 n("sumaris.config.option.persistence.jndi-name.description"),
144 "sumaris-ds",
145 String.class),
146
147 JDBC_USERNAME(
148 "spring.datasource.username",
149 n("sumaris.config.option.spring.datasource.username.description"),
150 "sa",
151 String.class),
152
153 JDBC_PASSWORD(
154 "spring.datasource.password",
155 n("sumaris.config.option.spring.datasource.password.description"),
156 "",
157 String.class),
158
159 JDBC_URL(
160 "spring.datasource.url",
161 n("sumaris.config.option.spring.datasource.url.description"),
162 "jdbc:hsqldb:file:${sumaris.persistence.db.directory}/${sumaris.persistence.db.name}",
163 String.class, false),
164
165 JDBC_CATALOG(
166 "spring.jpa.properties.hibernate.default_catalog",
167 n("sumaris.config.option.hibernate.default_catalog.description"),
168 "PUBLIC",
169 String.class),
170
171 JDBC_SCHEMA(
172 "spring.jpa.properties.hibernate.default_schema",
173 n("sumaris.config.option.hibernate.default_schema.description"),
174 "PUBLIC",
175 String.class),
176
177 JDBC_DRIVER(
178 "spring.datasource.driver-class-name",
179 n("sumaris.config.option.spring.datasource.driver-class-name.description"),
180 "org.hsqldb.jdbc.JDBCDriver",
181 Class.class),
182
183 JDBC_BATCH_SIZE(
184 "sumaris.persistence.jdbc.batch-size",
185 n("sumaris.config.option.persistence.jdbc.batch-size.description"),
186 "15",
187 Integer.class),
188
189 HIBERNATE_DIALECT(
190 "spring.jpa.database-platform",
191 n("sumaris.config.option.spring.jpa.database-platform.description"),
192 HSQLSpatialDialect.class.getName(),
193 Class.class),
194
195 HIBERNATE_ENTITIES_PACKAGE(
196 "sumaris.persistence.hibernate.entities.package",
197 n("sumaris.config.option.persistence.hibernate.entities.package.description"),
198 "net.sumaris.core.model",
199 Class.class),
200
201 DEBUG_ENTITY_LOAD(
202 "sumaris.persistence.hibernate.load.debug",
203 n("sumaris.config.option.persistence.hibernate.load.debug.description"),
204 Boolean.FALSE.toString(),
205 boolean.class),
206
207 SITE_URL(
208 "sumaris.site.url",
209 n("sumaris.config.option.site.url.description"),
210 "https://www.sumaris.net",
211 URL.class),
212
213 SITE_DOC_URL(
214 "sumaris.site.doc.url",
215 n("sumaris.config.option.site.doc.url.description"),
216 "http://doc.e-is.pro/sumaris",
217 URL.class),
218
219 ORGANIZATION_NAME(
220 "sumaris.organizationName",
221 n("sumaris.config.option.organizationName.description"),
222 "SUMARiS consortium, E-IS.pro",
223 String.class),
224
225 INCEPTION_YEAR(
226 "sumaris.inceptionYear",
227 n("sumaris.config.option.inceptionYear.description"),
228 "2011",
229 Integer.class),
230
231
232
233
234
235 STATUS_ID_TEMPORARY(
236 "sumaris.enumeration.StatusId.TEMPORARY",
237 n("sumaris.enumeration.StatusId.TEMPORARY.description"),
238 "2",
239 String.class,
240 false),
241
242 STATUS_ID_ENABLE(
243 "sumaris.enumeration.StatusId.ENABLE",
244 n("sumaris.enumeration.StatusId.ENABLE.description"),
245 "1",
246 String.class,
247 false),
248
249 UNIT_ID_NONE(
250 "sumaris.enumeration.UnitId.NONE",
251 n("sumaris.enumeration.UnitId.NONE.description"),
252 "0",
253 Integer.class,
254 false),
255
256 MATRIX_ID_INDIVIDUAL(
257 "sumaris.enumeration.MatrixId.INDIVIDUAL",
258 n("sumaris.enumeration.MatrixId.INDIVIDUAL.description"),
259 "2",
260 Integer.class,
261 false),
262
263 IMPORT_NB_YEARS_DATA_HISTORY (
264 "sumaris.synchro.import.nbYearDataHistory",
265 n("sumaris.config.option.synchro.import.nbYearDataHistory.description"),
266 "2",
267 Integer.class,
268 false),
269
270 IMPORT_DATA_MAX_ROOT_ROW_COUNT(
271 "sumaris.synchro.import.data.maxRootRowCount",
272 n("sumaris.config.option.synchro.import.data.maxRootRowCount.description"),
273 "-1",
274 Integer.class,
275 false),
276
277 EXPORT_DATA_UPDATE_DATE_DELAY(
278 "sumaris.synchro.export.updateDate.offset",
279 n("sumaris.config.option.synchro.export.data.updateDate.offset.description"),
280 String.valueOf(5 * 60),
281 Integer.class,
282 false),
283
284 EXPORT_DATA_UPDATE_DATE_SHORT_DELAY(
285 "sumaris.synchro.export.updateDate.offset.short",
286 n("sumaris.config.option.synchro.export.data.updateDate.offset.short.description"),
287 String.valueOf(30),
288 Integer.class,
289 false),
290
291 IMPORT_REFERENTIAL_UPDATE_DATE_OFFSET(
292 "sumaris.synchro.import.updateDate.offset",
293 n("sumaris.config.option.synchro.import.referential.updateDate.offset.description"),
294 String.valueOf(-60),
295 Integer.class,
296 false),
297
298 IMPORT_REFERENTIAL_STATUS_INCLUDES(
299 "sumaris.synchro.import.referential.status.includes",
300 n("sumaris.config.option.synchro.import.referential.status.includes.description"),
301 null,
302 String.class,
303 false),
304
305 SYNCHRO_PROGRAM_CODES_INCLUDES(
306 "sumaris.synchro.program.codes",
307 n("sumaris.config.option.synchro.program.codes.description"),
308 "",
309 String.class,
310 false),
311
312 TIMEZONE(
313 "sumaris.timezone",
314 n("sumaris.config.option.timezone.description"),
315 "",
316 String.class,
317 false),
318
319
320
321
322
323 DB_BACKUP_DIRECTORY(
324 "sumaris.persistence.db.backup.directory",
325 n("sumaris.config.option.persistence.db.backup.directory.description"),
326 "${sumaris.data.directory}/db-backup",
327 File.class,
328 false),
329 HIBERNATE_SHOW_SQL(
330 "spring.jpa.show-sql",
331 n("sumaris.config.option.spring.jpa.show-sql.description"),
332 Boolean.FALSE.toString(),
333 boolean.class,
334 false),
335
336 HIBERNATE_USE_SQL_COMMENT(
337 "sumaris.persistence.hibernate.useSqlComment",
338 n("sumaris.config.option.persistence.hibernate.useSqlComment.description"),
339 Boolean.FALSE.toString(),
340 boolean.class,
341 false),
342
343 HIBERNATE_FORMAT_SQL(
344 "sumaris.persistence.hibernate.formatSql",
345 n("sumaris.config.option.persistence.hibernate.formatSql.description"),
346 Boolean.FALSE.toString(),
347 boolean.class,
348 false),
349
350 HIBERNATE_SECOND_LEVEL_CACHE(
351 "sumaris.persistence.hibernate.useSecondLevelCache",
352 n("sumaris.config.option.persistence.hibernate.useSecondLevelCache.description"),
353 Boolean.FALSE.toString(),
354 boolean.class,
355 false),
356
357 HIBERNATE_CLIENT_QUERIES_FILE(
358 "sumaris.persistence.hibernate.queriesFile",
359 n("sumaris.config.option.persistence.hibernate.queriesFile.description"),
360 "queries-failsafe.hbm.xml",
361 String.class,
362 false),
363
364 LIQUIBASE_RUN_AUTO(
365 "spring.liquibase.enabled",
366 n("sumaris.config.option.liquibase.should.run.description"),
367 Boolean.TRUE.toString(),
368 boolean.class,
369 false),
370
371 LIQUIBASE_RUN_COMPACT(
372 "spring.liquibase.compact.enabled",
373 n("sumaris.config.option.liquibase.should.compact.description"),
374 Boolean.FALSE.toString(),
375 boolean.class,
376 false),
377
378 LIQUIBASE_CHANGE_LOG_PATH(
379 "spring.liquibase.change-log",
380 n("sumaris.config.option.liquibase.changelog.path.description"),
381 "classpath:net/sumaris/core/db/changelog/db-changelog-master.xml",
382 String.class,
383 false),
384
385 LIQUIBASE_DIFF_TYPES(
386 "sumaris.persistence.liquibase.diff.types",
387 n("sumaris.config.option.liquibase.diff.types.description"),
388 null,
389 String.class,
390 false),
391
392 LIQUIBASE_OUTPUT_FILE(
393 "sumaris.persistence.liquibase.output.file",
394 n("sumaris.config.option.liquibase.output.file.description"),
395 null,
396 File.class,
397 false),
398
399 LIQUIBASE_FORCE_OUTPUT_FILE(
400 "sumaris.persistence.liquibase.output.force",
401 n("sumaris.config.option.liquibase.output.force.description"),
402 Boolean.FALSE.toString(),
403 Boolean.class,
404 false),
405
406 CSV_SEPARATOR(
407 "sumaris.csv.separator",
408 n("sumaris.config.option.csv.separator.description"),
409 ";",
410 String.class,
411 false),
412 VALUE_SEPARATOR(
413 "sumaris.value.separator",
414 n("sumaris.config.option.value.separator.description"),
415 ",",
416 String.class,
417 false),
418 ATTRIBUTE_SEPARATOR(
419 "sumaris.attribute.separator",
420 n("sumaris.config.option.attribute.separator.description"),
421 ".",
422 String.class,
423 false),
424
425
426
427
428
429 I18N_LOCALE(
430 "sumaris.i18n.locale",
431 n("sumaris.config.option.i18n.locale.description"),
432 Locale.FRANCE.getCountry(),
433 Locale.class,
434 false),
435
436 LAUNCH_MODE(
437 "sumaris.launch.mode",
438 n("sumaris.config.option.launch.mode.description"),
439 LaunchModeEnum.development.name(),
440 String.class),
441
442 DEFAULT_QUALITY_FLAG(
443 "sumaris.persistence.qualityFlagId.default",
444 n("sumaris.config.option.persistence.qualityFlagId.default.description"),
445 String.valueOf(0),
446 Integer.class),
447
448 SEQUENCE_START_WITH(
449 "sumaris.persistence.sequence.startWith",
450 n("sumaris.config.option.persistence.sequence.startWith.description"),
451 String.valueOf(1),
452 Integer.class),
453
454 SEQUENCE_INCREMENT(
455 "sumaris.persistence.sequence.increment",
456 n("sumaris.config.option.persistence.sequence.increment.description"),
457 null,
458 Integer.class),
459
460 SEQUENCE_SUFFIX(
461 "sumaris.persistence.sequence.suffix",
462 n("sumaris.config.option.persistence.sequence.suffix.description"),
463 "_SEQ",
464 String.class),
465
466 INIT_STATISTICAL_RECTANGLES(
467 "sumaris.persistence.init.statisticalRectangles",
468 n("sumaris.config.option.persistence.init.statisticalRectangles.description"),
469 Boolean.TRUE.toString(),
470 Boolean.class),
471
472 PRESERVE_HISTORICAL_MEASUREMENTS(
473 "sumaris.persistence.preserve.historicalMeasurements",
474 n("sumaris.config.option.persistence.preserve.historicalMeasurements.description"),
475 Boolean.FALSE.toString(),
476 Boolean.class)
477
478 ;
479
480
481 private final String key;
482
483
484 private final String description;
485
486
487 private final Class<?> type;
488
489
490 private String defaultValue;
491
492
493 private boolean isTransient;
494
495
496 private boolean isFinal;
497
498 SumarisConfigurationOption(String key,
499 String description,
500 String defaultValue,
501 Class<?> type,
502 boolean isTransient) {
503 this.key = key;
504 this.description = description;
505 this.defaultValue = defaultValue;
506 this.type = type;
507 this.isTransient = isTransient;
508 this.isFinal = isTransient;
509 }
510
511 SumarisConfigurationOption(String key,
512 String description,
513 String defaultValue,
514 Class<?> type) {
515 this(key, description, defaultValue, type, true);
516 }
517
518
519 @Override
520 public String getKey() {
521 return key;
522 }
523
524
525 @Override
526 public Class<?> getType() {
527 return type;
528 }
529
530
531 @Override
532 public String getDescription() {
533 return description;
534 }
535
536
537 @Override
538 public String getDefaultValue() {
539 return defaultValue;
540 }
541
542
543 @Override
544 public boolean isTransient() {
545 return isTransient;
546 }
547
548
549 @Override
550 public boolean isFinal() {
551 return isFinal;
552 }
553
554
555 @Override
556 public void setDefaultValue(String defaultValue) {
557 this.defaultValue = defaultValue;
558 }
559
560
561 @Override
562 public void setTransient(boolean newValue) {
563
564 }
565
566
567 @Override
568 public void setFinal(boolean newValue) {
569
570 }
571 }