001package fr.ifremer.adagio.synchro.config; 002 003/* 004 * #%L 005 * Tutti :: Persistence 006 * $Id: TuttiConfigurationOption.java 1441 2013-12-09 20:13:47Z tchemit $ 007 * $HeadURL: http://svn.forge.codelutin.com/svn/tutti/trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfigurationOption.java $ 008 * %% 009 * Copyright (C) 2012 - 2013 Ifremer 010 * %% 011 * This program is free software: you can redistribute it and/or modify 012 * it under the terms of the GNU Affero General Public License as published by 013 * the Free Software Foundation, either version 3 of the License, or 014 * (at your option) any later version. 015 * 016 * This program is distributed in the hope that it will be useful, 017 * but WITHOUT ANY WARRANTY; without even the implied warranty of 018 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 019 * GNU General Public License for more details. 020 * 021 * You should have received a copy of the GNU Affero General Public License 022 * along with this program. If not, see <http://www.gnu.org/licenses/>. 023 * #L% 024 */ 025 026import static org.nuiton.i18n.I18n.n; 027 028import java.io.File; 029import java.net.URL; 030import java.util.Locale; 031 032import org.hibernate.dialect.HSQLDialect; 033import org.nuiton.config.ConfigOptionDef; 034import org.nuiton.util.Version; 035 036/** 037 * All application configuration options. 038 * 039 * @author Benoit Lavenier <benoit.lavenier@e-is.pro> 040 * @since 3.5.3 041 */ 042public enum SynchroConfigurationOption implements ConfigOptionDef { 043 044 // ------------------------------------------------------------------------// 045 // -- READ-ONLY OPTIONS ---------------------------------------------------// 046 // ------------------------------------------------------------------------// 047 048 BASEDIR( 049 "adagio.basedir", 050 n("adagio.config.option.basedir.description"), 051 "${user.home}/.adagio", 052 File.class), 053 054 DATA_DIRECTORY( 055 "adagio.data.directory", 056 n("adagio.config.option.data.directory.description"), 057 "${adagio.basedir}/data", 058 File.class), 059 060 I18N_DIRECTORY( 061 "adagio.i18n.directory", 062 n("adagio.config.option.i18n.directory.description"), 063 "${adagio.basedir}/i18n", 064 File.class), 065 066 TMP_DIRECTORY( 067 "adagio.tmp.directory", 068 n("adagio.config.option.tmp.directory.description"), 069 "${adagio.data.directory}/temp", 070 File.class), 071 072 DB_DIRECTORY( 073 "adagio.persistence.db.directory", 074 n("adagio.config.option.persistence.db.directory.description"), 075 "${adagio.data.directory}/db", 076 File.class), 077 078 DB_ATTACHMENT_DIRECTORY( 079 "adagio.persistence.db.attachment.directory", 080 n("adagio.config.option.persistence.db.attachment.directory.description"), 081 "${adagio.data.directory}/meas_files", 082 File.class), 083 084 DB_CACHE_DIRECTORY( 085 "adagio.persistence.db.cache.directory", 086 n("adagio.config.option.persistence.db.cache.directory.description"), 087 "${adagio.data.directory}/dbcache", 088 File.class), 089 090 DB_NAME( 091 "adagio.persistence.db.name", 092 n("adagio.config.option.persistence.db.name.description"), 093 "allegro", 094 String.class), 095 096 DB_HOST( 097 "adagio.persistence.db.host", 098 n("adagio.config.option.persistence.db.host.description"), 099 "", 100 String.class), 101 102 DB_PORT( 103 "adagio.persistence.db.port", 104 n("adagio.config.option.persistence.db.port.description"), 105 "", 106 String.class), 107 108 DB_VALIDATION_QUERY( 109 "adagio.persistence.db.validation-query", 110 n("adagio.persistence.db.validation-query.description"), 111 "SELECT COUNT(*) FROM STATUS", 112 String.class), 113 114 JDBC_USERNAME( 115 "adagio.persistence.jdbc.username", 116 n("adagio.config.option.persistence.jdbc.username.description"), 117 "sa", 118 String.class), 119 120 JDBC_PASSWORD( 121 "adagio.persistence.jdbc.password", 122 n("adagio.config.option.persistence.jdbc.password.description"), 123 "", 124 String.class), 125 126 JDBC_URL( 127 "adagio.persistence.jdbc.url", 128 n("adagio.config.option.persistence.jdbc.url.description"), 129 "jdbc:hsqldb:file:${adagio.persistence.db.directory}/${adagio.persistence.db.name}", 130 String.class), 131 132 JDBC_DRIVER( 133 "adagio.persistence.jdbc.driver", 134 n("adagio.config.option.persistence.jdbc.driver.description"), 135 "org.hsqldb.jdbcDriver", 136 Class.class), 137 138 HIBERNATE_DIALECT( 139 "adagio.persistence.hibernate.dialect", 140 n("adagio.config.option.persistence.hibernate.dialect.description"), 141 HSQLDialect.class.getName(), 142 Class.class), 143 144 VERSION( 145 "adagio.persistence.version", 146 n("adagio.config.option.persistence.version.description"), 147 "3.4.2", 148 Version.class), 149 150 SITE_URL( 151 "adagio.site.url", 152 n("adagio.config.option.site.url.description"), 153 "http://www.ifremer.fr/sih-adagio", 154 URL.class), 155 156 ORGANIZATION_NAME( 157 "adagio.organizationName", 158 n("adagio.config.option.organizationName.description"), 159 "Ifremer", 160 String.class), 161 162 INCEPTION_YEAR( 163 "adagio.inceptionYear", 164 n("adagio.config.option.inceptionYear.description"), 165 "2011", 166 Integer.class), 167 168 SYNCHRONIZATION_STATUS_SYNCHRONIZED( 169 "adagio.synchro.enumeration.SynchronizationStatus.SYNCHRONIZED", 170 n("adagio.synchro.enumeration.SynchronizationStatus.SYNCHRONIZED.description"), 171 "SYNC", 172 String.class), 173 174 SYNCHRONIZATION_STATUS_READY_TO_SYNCHRONIZE( 175 "adagio.synchro.enumeration.SynchronizationStatus.READY_TO_SYNCHRONIZE", 176 n("adagio.synchro.enumeration.SynchronizationStatus.READY_TO_SYNCHRONIZE.description"), 177 "READY_TO_SYNC", 178 String.class), 179 180 SYNCHRONIZATION_STATUS_DELETED( 181 "adagio.synchro.enumeration.SynchronizationStatus.DELETED", 182 n("adagio.synchro.enumeration.SynchronizationStatus.DELETED.description"), 183 "DELETED", 184 String.class), 185 186 SYNCHRONIZATION_STATUS_DIRTY( 187 "adagio.synchro.enumeration.SynchronizationStatus.DIRTY", 188 n("adagio.synchro.enumeration.SynchronizationStatus.DIRTY.description"), 189 "DIRTY", 190 String.class), 191 192 // ------------------------------------------------------------------------// 193 // -- DB use for IMPORT (READ-ONLY) OPTIONS ----------------------------------// 194 // ------------------------------------------------------------------------// 195 196 IMPORT_DB_DIRECTORY( 197 "adagio.synchro.import.db.directory", 198 n("adagio.config.option.synchro.import.db.directory.description"), 199 "${adagio.data.directory}/dbimport", 200 File.class), 201 202 IMPORT_DB_ATTACHMENT_DIRECTORY( 203 "adagio.synchro.import.db.attachment.directory", 204 n("adagio.config.option.synchro.import.db.attachment.directory.description"), 205 "${adagio.synchro.import.db.directory}/meas_files", 206 File.class), 207 208 IMPORT_DB_NAME( 209 "adagio.synchro.import.db.name", 210 n("adagio.config.option.synchro.import.db.name.description"), 211 "allegro", 212 String.class), 213 214 IMPORT_DB_HOST( 215 "adagio.synchro.import.db.host", 216 n("adagio.config.option.synchro.import.db.host.description"), 217 "", 218 String.class), 219 220 IMPORT_DB_PORT( 221 "adagio.synchro.import.db.port", 222 n("adagio.config.option.synchro.import.db.port.description"), 223 "", 224 String.class), 225 226 IMPORT_JDBC_USERNAME( 227 "adagio.synchro.import.jdbc.username", 228 n("adagio.config.option.synchro.import.jdbc.username.description"), 229 "sa", 230 String.class), 231 232 IMPORT_JDBC_PASSWORD( 233 "adagio.synchro.import.jdbc.password", 234 n("adagio.config.option.synchro.import.jdbc.password.description"), 235 "", 236 String.class), 237 238 IMPORT_JDBC_SCHEMA( 239 "adagio.synchro.import.jdbc.schema", 240 n("adagio.config.option.synchro.import.jdbc.schema.description"), 241 null, 242 String.class), 243 244 IMPORT_JDBC_CATALOG( 245 "adagio.synchro.import.jdbc.catalog", 246 n("adagio.config.option.synchro.import.jdbc.catalog.description"), 247 null, 248 String.class), 249 250 IMPORT_JDBC_URL( 251 "adagio.synchro.import.jdbc.url", 252 n("adagio.config.option.synchro.import.jdbc.url.description"), 253 "jdbc:hsqldb:file:${adagio.synchro.import.db.directory}/${adagio.synchro.import.db.name}", 254 String.class), 255 256 IMPORT_JDBC_DRIVER( 257 "adagio.synchro.import.jdbc.driver", 258 n("adagio.config.option.synchro.import.jdbc.driver.description"), 259 "org.hsqldb.jdbcDriver", 260 Class.class), 261 262 IMPORT_HIBERNATE_DIALECT( 263 "adagio.synchro.import.hibernate.dialect", 264 n("adagio.config.option.synchro.import.hibernate.dialect.description"), 265 HSQLDialect.class.getName(), 266 Class.class), 267 268 IMPORT_TABLES_DATA_INCLUDES( 269 "adagio.synchro.import.tables.data.includes", 270 n("adagio.config.option.synchro.import.tables.data.includes.description"), 271 "", 272 String.class), 273 274 IMPORT_TABLES_REFERENTIAL_INCLUDES( 275 "adagio.synchro.import.tables.referential.includes", 276 n("adagio.config.option.synchro.import.tables.referential.includes.description"), 277 "", 278 String.class), 279 280 IMPORT_JDBC_BATCH_SIZE( 281 "adagio.synchro.import.jdbc.batch-size", 282 n("adagio.config.option.synchro.import.jdbc.batch-size.description"), 283 "1000", 284 Integer.class), 285 286 IMPORT_TRANSCRIBING_ITEM_TYPE_IDS( 287 "adagio.synchro.import.transcribingTypeIds", 288 n("adagio.config.option.synchro.import.transcribingTypeIds.description"), 289 "", 290 String.class), 291 292 DEFAULT_VESSEL_PROGRAM_CODE( 293 "adagio.synchro.import.vessel.programCode", 294 n("adagio.config.option.synchro.import.vessel.programCode.description"), 295 "SIH", 296 String.class), 297 298 // ------------------------------------------------------------------------// 299 // -- Client/Server (READ-ONLY) OPTIONS ----------------------------------// 300 // ------------------------------------------------------------------------// 301 302 SERVER_PORT( 303 "adagio.server.port", 304 n("adagio.config.option.server.port.description"), 305 "8080", 306 Integer.class, 307 false), 308 309 SERVER_SSL_KEYSTORE( 310 "adagio.server.ssl.keystore.file", 311 n("adagio.config.option.server.ssl.keystore.file.description"), 312 "my.keystore", 313 File.class, 314 false), 315 316 // ------------------------------------------------------------------------// 317 // -- READ-WRITE OPTIONS --------------------------------------------------// 318 // ------------------------------------------------------------------------// 319 320 DB_BACKUP_DIRECTORY( 321 "adagio.persistence.db.backup.directory", 322 n("adagio.config.option.persistence.db.backup.directory.description"), 323 "${adagio.data.directory}/dbbackup", 324 File.class, 325 false), 326 327 I18N_LOCALE( 328 "adagio.i18n.locale", 329 n("adagio.config.option.i18n.locale.description"), 330 Locale.FRANCE.getCountry(), 331 Locale.class, 332 false 333 ); 334 335 /** Configuration key. */ 336 private final String key; 337 338 /** I18n key of option description */ 339 private final String description; 340 341 /** Type of option */ 342 private final Class<?> type; 343 344 /** Default value of option. */ 345 private String defaultValue; 346 347 /** Flag to not keep option value on disk */ 348 private boolean isTransient; 349 350 /** Flag to not allow option value modification */ 351 private boolean isFinal; 352 353 SynchroConfigurationOption(String key, 354 String description, 355 String defaultValue, 356 Class<?> type, 357 boolean isTransient) { 358 this.key = key; 359 this.description = description; 360 this.defaultValue = defaultValue; 361 this.type = type; 362 this.isTransient = isTransient; 363 this.isFinal = isTransient; 364 } 365 366 SynchroConfigurationOption(String key, 367 String description, 368 String defaultValue, 369 Class<?> type) { 370 this(key, description, defaultValue, type, true); 371 } 372 373 @Override 374 public String getKey() { 375 return key; 376 } 377 378 @Override 379 public Class<?> getType() { 380 return type; 381 } 382 383 @Override 384 public String getDescription() { 385 return description; 386 } 387 388 @Override 389 public String getDefaultValue() { 390 return defaultValue; 391 } 392 393 @Override 394 public boolean isTransient() { 395 return isTransient; 396 } 397 398 @Override 399 public boolean isFinal() { 400 return isFinal; 401 } 402 403 @Override 404 public void setDefaultValue(String defaultValue) { 405 this.defaultValue = defaultValue; 406 } 407 408 @Override 409 public void setTransient(boolean newValue) { 410 // not used 411 } 412 413 @Override 414 public void setFinal(boolean newValue) { 415 // not used 416 } 417}