001package fr.ifremer.adagio.core.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 036import fr.ifremer.adagio.core.dao.technical.AdagioEnumerationDef; 037 038/** 039 * All application configuration options. 040 * 041 * @author Benoit Lavenier <benoit.lavenier@e-is.pro> 042 * @since 3.4.3 043 */ 044public enum AdagioConfigurationOption implements ConfigOptionDef { 045 046 // ------------------------------------------------------------------------// 047 // -- READ-ONLY OPTIONS ---------------------------------------------------// 048 // ------------------------------------------------------------------------// 049 050 BASEDIR( 051 "adagio.basedir", 052 n("adagio.config.option.basedir.description"), 053 "${user.home}/.adagio", 054 File.class), 055 056 DATA_DIRECTORY( 057 "adagio.data.directory", 058 n("adagio.config.option.data.directory.description"), 059 "${adagio.basedir}/data", 060 File.class), 061 062 I18N_DIRECTORY( 063 "adagio.i18n.directory", 064 n("adagio.config.option.i18n.directory.description"), 065 "${adagio.basedir}/i18n", 066 File.class), 067 068 TMP_DIRECTORY( 069 "adagio.tmp.directory", 070 n("adagio.config.option.tmp.directory.description"), 071 "${adagio.data.directory}/temp", 072 File.class), 073 074 DB_DIRECTORY( 075 "adagio.persistence.db.directory", 076 n("adagio.config.option.persistence.db.directory.description"), 077 "${adagio.data.directory}/db", 078 File.class), 079 080 DB_ATTACHMENT_DIRECTORY( 081 "adagio.persistence.db.attachment.directory", 082 n("adagio.config.option.persistence.db.attachment.directory.description"), 083 "${adagio.data.directory}/meas_files", 084 File.class), 085 086 DB_CACHE_DIRECTORY( 087 "adagio.persistence.db.cache.directory", 088 n("adagio.config.option.persistence.db.cache.directory.description"), 089 "${adagio.data.directory}/dbcache", 090 File.class), 091 092 DB_NAME( 093 "adagio.persistence.db.name", 094 n("adagio.config.option.persistence.db.name.description"), 095 "allegro", 096 String.class), 097 098 DB_HOST ( 099 "adagio.persistence.db.host", 100 n("adagio.config.option.persistence.db.host.description"), 101 "", 102 String.class), 103 104 DB_PORT ( 105 "adagio.persistence.db.port", 106 n("adagio.config.option.persistence.db.port.description"), 107 "", 108 String.class), 109 110 DB_VALIDATION_QUERY( 111 "adagio.persistence.db.validation-query", 112 n("adagio.persistence.db.validation-query.description"), 113 "SELECT COUNT(*) FROM STATUS", 114 String.class), 115 116 DATASOURCE_TYPE( 117 "adagio.persistence.datasource.type", 118 n("adagio.persistence.datasource.type.description"), 119 "local", 120 String.class), 121 122 DATASOURCE_JNDI_NAME( 123 "adagio.persistence.jndi-name", 124 n("adagio.config.option.persistence.jndi-name.description"), 125 "adagio-ds", 126 String.class), 127 128 JDBC_USERNAME( 129 "adagio.persistence.jdbc.username", 130 n("adagio.config.option.persistence.jdbc.username.description"), 131 "sa", 132 String.class), 133 134 JDBC_PASSWORD( 135 "adagio.persistence.jdbc.password", 136 n("adagio.config.option.persistence.jdbc.password.description"), 137 "", 138 String.class), 139 140 JDBC_URL( 141 "adagio.persistence.jdbc.url", 142 n("adagio.config.option.persistence.jdbc.url.description"), 143 "jdbc:hsqldb:file:${adagio.persistence.db.directory}/${adagio.persistence.db.name}", 144 String.class), 145 146 JDBC_CATALOG( 147 "adagio.persistence.jdbc.catalog", 148 n("adagio.config.option.persistence.jdbc.catalog.description"), 149 null, 150 String.class), 151 152 JDBC_SCHEMA( 153 "adagio.persistence.jdbc.schema", 154 n("adagio.config.option.persistence.jdbc.schema.description"), 155 "PUBLIC", 156 String.class), 157 158 JDBC_DRIVER( 159 "adagio.persistence.jdbc.driver", 160 n("adagio.config.option.persistence.jdbc.driver.description"), 161 "org.hsqldb.jdbcDriver", 162 Class.class), 163 164 JDBC_BATCH_SIZE( 165 "adagio.persistence.jdbc.batch-size", 166 n("adagio.config.option.persistence.jdbc.batch-size.description"), 167 "15", 168 Integer.class), 169 170 HIBERNATE_DIALECT( 171 "adagio.persistence.hibernate.dialect", 172 n("adagio.config.option.persistence.hibernate.dialect.description"), 173 HSQLDialect.class.getName(), 174 Class.class), 175 176 DEBUG_ENTITY_LOAD( 177 "adagio.persistence.hibernate.load.debug", 178 n("adagio.config.option.persistence.hibernate.load.debug.description"), 179 Boolean.FALSE.toString(), 180 boolean.class), 181 182 STATUS_CODE_TEMPORARY( 183 "adagio.enumeration.StatusCode.TEMPORARY", 184 n("adagio.enumeration.StatusCode.TEMPORARY.description"), 185 String.format("${%sStatusCode.TEMPORARY}", AdagioEnumerationDef.CONFIG_OPTION_PREFIX), 186 String.class), 187 188 STATUS_CODE_ENABLE( 189 "adagio.enumeration.StatusCode.ENABLE", 190 n("adagio.enumeration.StatusCode.ENABLE.description"), 191 String.format("${%sStatusCode.ENABLE}", AdagioEnumerationDef.CONFIG_OPTION_PREFIX), 192 String.class), 193 194 PROGRAM_CODE_VESSEL_REGISTRY( 195 "adagio.enumeration.ProgramCode.SIH", 196 n("adagio.enumeration.ProgramCode.SIH.description"), 197 String.format("${%sProgramCode.SIH}", AdagioEnumerationDef.CONFIG_OPTION_PREFIX), 198 String.class), 199 200 VERSION( 201 "adagio.version", 202 n("adagio.config.option.persistence.version.description"), 203 "3.5.4", 204 Version.class), 205 206 SITE_URL( 207 "adagio.site.url", 208 n("adagio.config.option.site.url.description"), 209 "http://www.ifremer.fr/sih-adagio", 210 URL.class), 211 212 ORGANIZATION_NAME( 213 "adagio.organizationName", 214 n("adagio.config.option.organizationName.description"), 215 "Ifremer", 216 String.class), 217 218 INCEPTION_YEAR( 219 "adagio.inceptionYear", 220 n("adagio.config.option.inceptionYear.description"), 221 "2011", 222 Integer.class), 223 224 // ------------------------------------------------------------------------// 225 // -- READ-WRITE OPTIONS --------------------------------------------------// 226 // ------------------------------------------------------------------------// 227 228 DB_BACKUP_DIRECTORY( 229 "adagio.persistence.db.backup.directory", 230 n("adagio.config.option.persistence.db.backup.directory.description"), 231 "${adagio.data.directory}/dbbackup", 232 File.class, 233 false), 234 235 DB_ENUMERATION_RESOURCE( 236 "adagio.persistence.db.enumeration.resource", 237 n("adagio.config.option.persistence.db.enumeration.resource"), 238 "classpath*:adagio-db-enumerations.properties", 239 String.class, 240 false), 241 242 HIBERNATE_SHOW_SQL( 243 "adagio.persistence.hibernate.showSql", 244 n("adagio.config.option.persistence.hibernate.showSql.description"), 245 Boolean.FALSE.toString(), 246 boolean.class, 247 false), 248 249 HIBERNATE_USE_SQL_COMMENT( 250 "adagio.persistence.hibernate.useSqlComment", 251 n("adagio.config.option.persistence.hibernate.useSqlComment.description"), 252 Boolean.FALSE.toString(), 253 boolean.class, 254 false), 255 256 HIBERNATE_FORMAT_SQL( 257 "adagio.persistence.hibernate.formatSql", 258 n("adagio.config.option.persistence.hibernate.formatSql.description"), 259 Boolean.FALSE.toString(), 260 boolean.class, 261 false), 262 263 HIBERNATE_SECOND_LEVEL_CACHE( 264 "adagio.persistence.hibernate.useSecondLevelCache", 265 n("adagio.config.option.persistence.hibernate.useSecondLevelCache.description"), 266 Boolean.FALSE.toString(), 267 boolean.class, 268 false), 269 270 HIBERNATE_CLIENT_QUERIES_FILE( 271 "adagio.persistence.hibernate.queriesFile", 272 n("adagio.config.option.persistence.hibernate.queriesFile.description"), 273 "queries-failsafe.hbm.xml", 274 String.class, 275 false), 276 277 LIQUIBASE_RUN_AUTO( 278 "adagio.persistence.liquibase.should.run", 279 n("adagio.config.option.liquibase.should.run.description"), 280 Boolean.FALSE.toString(), 281 boolean.class, 282 false), 283 284 LIQUIBASE_CHANGE_LOG_PATH( 285 "adagio.persistence.liquibase.changelog.path", 286 n("adagio.config.option.liquibase.changelog.path.description"), 287 "classpath:fr/ifremer/adagio/core/db/changelog/db-changelog-master.xml", 288 String.class, 289 false), 290 291 LIQUIBASE_DIFF_TYPES( 292 "adagio.persistence.liquibase.diff.types", 293 n("adagio.config.option.liquibase.diff.types.description"), 294 null, 295 String.class, 296 false), 297 298 LIQUIBASE_OUTPUT_FILE( 299 "adagio.persistence.liquibase.output.file", 300 n("adagio.config.option.liquibase.output.file.description"), 301 null, 302 File.class, 303 false), 304 305 CACHE_BACTH_TREE( 306 "adagio.persistence.batch.use_tree_cache", 307 n("adagio.config.option.batch.use_tree_cache.description"), 308 Boolean.TRUE.toString(), 309 boolean.class, 310 false), 311 312 CSV_SEPARATOR( 313 "adagio.csv.separator", 314 n("adagio.config.option.csv.separator.description"), 315 ";", 316 char.class, 317 false), 318 319 I18N_LOCALE( 320 "adagio.i18n.locale", 321 n("adagio.config.option.i18n.locale.description"), 322 Locale.FRANCE.getCountry(), 323 Locale.class, 324 false 325 ), 326 327 SERVER_PORT( 328 "adagio.server.port", 329 n("adagio.config.option.server.port.description"), 330 "8888", 331 Integer.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 AdagioConfigurationOption(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 AdagioConfigurationOption(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}