/** * Licensed to JumpMind Inc under one or more contributor * license agreements. See the NOTICE file distributed * with this work for additional information regarding * copyright ownership. JumpMind Inc licenses this file * to you under the GNU General Public License, version 3.0 (GPLv3) * (the "License"); you may not use this file except in compliance * with the License. * * You should have received a copy of the GNU General Public License, * version 3.0 (GPLv3) along with this library; if not, see * <http://www.gnu.org/licenses/>. * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.jumpmind.symmetric.common; import java.util.Collection; import java.util.Map; import java.util.Set; import java.util.TreeSet; import org.jumpmind.properties.DefaultParameterParser; import org.jumpmind.properties.DefaultParameterParser.ParameterMetaData; import org.jumpmind.symmetric.service.IParameterService; /** * Constants that represent parameters that can be retrieved or saved via the * {@link IParameterService} */ final public class ParameterConstants { public static final String ALL = "ALL"; private static Map<String, ParameterMetaData> parameterMetaData = new DefaultParameterParser("/symmetric-default.properties").parse(); private ParameterConstants() { } public final static String AUTO_START_ENGINE = "auto.start.engine"; public final static String JDBC_EXECUTE_BATCH_SIZE = "db.jdbc.execute.batch.size"; public final static String JDBC_READ_STRINGS_AS_BYTES = "db.read.strings.as.bytes"; public final static String START_PULL_JOB = "start.pull.job"; public final static String START_PUSH_JOB = "start.push.job"; public final static String START_PURGE_JOB = "start.purge.job"; public final static String START_ROUTE_JOB = "start.route.job"; public final static String START_HEARTBEAT_JOB = "start.heartbeat.job"; public final static String START_SYNCTRIGGERS_JOB = "start.synctriggers.job"; public final static String START_STATISTIC_FLUSH_JOB = "start.stat.flush.job"; public final static String START_STAGE_MGMT_JOB = "start.stage.management.job"; public final static String START_WATCHDOG_JOB = "start.watchdog.job"; public final static String PULL_THREAD_COUNT_PER_SERVER = "pull.thread.per.server.count"; public final static String PULL_MINIMUM_PERIOD_MS = "pull.period.minimum.ms"; public final static String PULL_LOCK_TIMEOUT_MS = "pull.lock.timeout.ms"; public final static String PUSH_THREAD_COUNT_PER_SERVER = "push.thread.per.server.count"; public final static String PUSH_MINIMUM_PERIOD_MS = "push.period.minimum.ms"; public final static String PUSH_LOCK_TIMEOUT_MS = "push.lock.timeout.ms"; public final static String FILE_PULL_THREAD_COUNT_PER_SERVER = "file.pull.thread.per.server.count"; public final static String FILE_PULL_MINIMUM_PERIOD_MS = "file.pull.period.minimum.ms"; public final static String FILE_PULL_LOCK_TIMEOUT_MS = "file.pull.lock.timeout.ms"; public final static String FILE_PUSH_THREAD_COUNT_PER_SERVER = "file.push.thread.per.server.count"; public final static String FILE_PUSH_MINIMUM_PERIOD_MS = "file.push.period.minimum.ms"; public final static String FILE_PUSH_LOCK_TIMEOUT_MS = "file.push.lock.timeout.ms"; public final static String JOB_RANDOM_MAX_START_TIME_MS = "job.random.max.start.time.ms"; public final static String REGISTRATION_NUMBER_OF_ATTEMPTS = "registration.number.of.attempts"; public final static String REGISTRATION_REOPEN_USE_SAME_PASSWORD = "registration.reopen.use.same.password"; public final static String REGISTRATION_REQUIRE_NODE_GROUP_LINK = "registration.require.node.group.link"; public final static String REGISTRATION_REINITIALIZE_ENABLED = "registration.reinitialize.enable"; public final static String REGISTRATION_URL = "registration.url"; public final static String SYNC_URL = "sync.url"; public final static String ENGINE_NAME = "engine.name"; public final static String NODE_GROUP_ID = "group.id"; public final static String EXTERNAL_ID = "external.id"; public final static String SCHEMA_VERSION = "schema.version"; public final static String AUTO_REGISTER_ENABLED = "auto.registration"; public final static String AUTO_RELOAD_ENABLED = "auto.reload"; public final static String AUTO_RELOAD_REVERSE_ENABLED = "auto.reload.reverse"; public final static String AUTO_INSERT_REG_SVR_IF_NOT_FOUND = "auto.insert.registration.svr.if.not.found"; public final static String AUTO_SYNC_CONFIGURATION = "auto.sync.configuration"; public final static String AUTO_SYNC_CONFIGURATION_ON_INCOMING = "auto.sync.configuration.on.incoming"; public final static String AUTO_CONFIGURE_DATABASE = "auto.config.database"; public final static String AUTO_SYNC_TRIGGERS = "auto.sync.triggers"; public final static String AUTO_SYNC_TRIGGERS_AT_STARTUP = "auto.sync.triggers.at.startup"; public final static String AUTO_SYNC_TRIGGERS_AFTER_CONFIG_CHANGED = "auto.sync.triggers.after.config.change"; public final static String AUTO_SYNC_TRIGGERS_AFTER_CONFIG_LOADED = "auto.sync.triggers.after.config.loaded"; public final static String AUTO_REFRESH_AFTER_CONFIG_CHANGED = "auto.refresh.after.config.changes.detected"; public final static String AUTO_CONFIGURE_REG_SVR_SQL_SCRIPT = "auto.config.registration.svr.sql.script"; public final static String AUTO_CONFIGURE_REG_SVR_DDLUTIL_XML = "auto.config.registration.svr.ddlutil.xml"; public final static String AUTO_CONFIGURE_EXTRA_TABLES = "auto.config.extra.tables.ddlutil.xml"; public final static String AUTO_UPDATE_NODE_VALUES = "auto.update.node.values.from.properties"; public final static String INITIAL_LOAD_BEFORE_SQL = "initial.load.before.sql"; public final static String INITIAL_LOAD_AFTER_SQL = "initial.load.after.sql"; public final static String INITIAL_LOAD_REVERSE_BEFORE_SQL = "initial.load.reverse.before.sql"; public final static String INITIAL_LOAD_REVERSE_AFTER_SQL = "initial.load.reverse.after.sql"; public final static String INITIAL_LOAD_DELETE_BEFORE_RELOAD = "initial.load.delete.first"; public final static String INITIAL_LOAD_DELETE_FIRST_SQL = "initial.load.delete.first.sql"; public final static String INITIAL_LOAD_CREATE_SCHEMA_BEFORE_RELOAD = "initial.load.create.first"; public final static String INITIAL_LOAD_USE_RELOAD_CHANNEL = "initial.load.use.reload.channel"; public final static String INITIAL_LOAD_REVERSE_FIRST = "initial.load.reverse.first"; public final static String INITIAL_LOAD_USE_EXTRACT_JOB = "initial.load.use.extract.job.enabled"; public final static String INITIAL_LOAD_CONCAT_CSV_IN_SQL_ENABLED = "initial.load.concat.csv.in.sql.enabled"; public final static String INITIAL_LOAD_EXTRACT_THREAD_COUNT_PER_SERVER = "initial.load.extract.thread.per.server.count"; public final static String INITIAL_LOAD_EXTRACT_TIMEOUT_MS = "initial.load.extract.timeout.ms"; public final static String INITIAL_LOAD_EXTRACT_JOB_START = "start.initial.load.extract.job"; public final static String INITIAL_LOAD_SCHEMA_DUMP_COMMAND = "initial.load.schema.dump.command"; public final static String INITIAL_LOAD_SCHEMA_LOAD_COMMAND = "initial.load.schema.load.command"; public final static String CREATE_TABLE_WITHOUT_DEFAULTS = "create.table.without.defaults"; public final static String CREATE_TABLE_WITHOUT_FOREIGN_KEYS = "create.table.without.foreign.keys"; public final static String STREAM_TO_FILE_ENABLED = "stream.to.file.enabled"; public final static String STREAM_TO_FILE_THRESHOLD = "stream.to.file.threshold.bytes"; public final static String STREAM_TO_FILE_TIME_TO_LIVE_MS = "stream.to.file.ttl.ms"; public final static String PARAMETER_REFRESH_PERIOD_IN_MS = "parameter.reload.timeout.ms"; public final static String CONCURRENT_WORKERS = "http.concurrent.workers.max"; public final static String CONCURRENT_RESERVATION_TIMEOUT = "http.concurrent.reservation.timeout.ms"; public final static String OUTGOING_BATCH_PEEK_AHEAD_BATCH_COMMIT_SIZE = "outgoing.batches.peek.ahead.batch.commit.size"; public final static String ROUTING_FLUSH_JDBC_BATCH_SIZE = "routing.flush.jdbc.batch.size"; public final static String ROUTING_WAIT_FOR_DATA_TIMEOUT_SECONDS = "routing.wait.for.data.timeout.seconds"; public final static String ROUTING_MAX_GAPS_TO_QUALIFY_IN_SQL = "routing.max.gaps.to.qualify.in.sql"; public final static String ROUTING_PEEK_AHEAD_MEMORY_THRESHOLD = "routing.peek.ahead.memory.threshold.percent"; public final static String ROUTING_PEEK_AHEAD_WINDOW = "routing.peek.ahead.window.after.max.size"; public final static String ROUTING_STALE_DATA_ID_GAP_TIME = "routing.stale.dataid.gap.time.ms"; public final static String ROUTING_LARGEST_GAP_SIZE = "routing.largest.gap.size"; // public final static String ROUTING_DATA_READER_TYPE_GAP_RETENTION_MINUTES = "routing.data.reader.type.gap.retention.period.minutes"; public final static String ROUTING_DATA_READER_ORDER_BY_DATA_ID_ENABLED = "routing.data.reader.order.by.gap.id.enabled"; public final static String ROUTING_DATA_READER_THRESHOLD_GAPS_TO_USE_GREATER_QUERY = "routing.data.reader.threshold.gaps.to.use.greater.than.query"; public final static String ROUTING_LOG_STATS_ON_BATCH_ERROR = "routing.log.stats.on.batch.error"; public final static String INCOMING_BATCH_SKIP_DUPLICATE_BATCHES_ENABLED = "incoming.batches.skip.duplicates"; @Deprecated public final static String INCOMING_BATCH_DELETE_ON_LOAD = "incoming.batch.delete.on.load"; public final static String INCOMING_BATCH_RECORD_OK_ENABLED = "incoming.batches.record.ok.enabled"; public final static String DATA_LOADER_ENABLED = "dataloader.enable"; public final static String DATA_LOADER_APPLY_CHANGES_ONLY = "dataloader.apply.changes.only"; public final static String DATA_LOADER_IGNORE_MISSING_TABLES = "dataloader.ignore.missing.tables"; public final static String DATA_LOADER_FIT_TO_COLUMN = "dataloader.fit.to.column"; public final static String DATA_LOADER_ERROR_RECORD_CUR_VAL = "dataloader.error.save.curval"; public final static String DATA_LOADER_NUM_OF_ACK_RETRIES = "num.of.ack.retries"; public final static String DATA_LOADER_TIME_BETWEEN_ACK_RETRIES = "time.between.ack.retries.ms"; public final static String DATA_LOADER_MAX_ROWS_BEFORE_COMMIT = "dataloader.max.rows.before.commit"; public final static String DATA_LOADER_CREATE_TABLE_ALTER_TO_MATCH_DB_CASE = "dataloader.create.table.alter.to.match.db.case"; public final static String DATA_LOADER_TEXT_COLUMN_EXPRESSION = "dataloader.text.column.expression"; public final static String DATA_LOADER_SLEEP_TIME_AFTER_EARLY_COMMIT = "dataloader.sleep.time.after.early.commit"; public final static String DATA_LOADER_TREAT_DATETIME_AS_VARCHAR = "db.treat.date.time.as.varchar.enabled"; public final static String DATA_LOADER_USE_PRIMARY_KEYS_FROM_SOURCE = "dataloader.use.primary.keys.from.source"; public final static String DATA_RELOAD_IS_BATCH_INSERT_TRANSACTIONAL = "datareload.batch.insert.transactional"; public final static String DATA_EXTRACTOR_ENABLED = "dataextractor.enable"; public final static String DATA_EXTRACTOR_TEXT_COLUMN_EXPRESSION = "dataextractor.text.column.expression"; @Deprecated public final static String OUTGOING_BATCH_MAX_BATCHES_TO_SELECT = "outgoing.batches.max.to.select"; public final static String DBDIALECT_ORACLE_USE_TRANSACTION_VIEW = "oracle.use.transaction.view"; public final static String DBDIALECT_ORACLE_TEMPLATE_NUMBER_SPEC = "oracle.template.precision"; public final static String DBDIALECT_ORACLE_USE_HINTS = "oracle.use.hints"; public final static String DBDIALECT_ORACLE_TRANSACTION_VIEW_CLOCK_SYNC_THRESHOLD_MS = "oracle.transaction.view.clock.sync.threshold.ms"; public final static String DATA_ID_INCREMENT_BY = "data.id.increment.by"; public final static String TRANSPORT_HTTP_MANUAL_REDIRECTS_ENABLED = "http.manual.redirects.enabled"; public final static String TRANSPORT_HTTP_TIMEOUT = "http.timeout.ms"; public final static String TRANSPORT_HTTP_PUSH_STREAM_ENABLED = "http.push.stream.output.enabled"; public final static String TRANSPORT_HTTP_PUSH_STREAM_SIZE = "http.push.stream.output.size"; public final static String TRANSPORT_HTTP_USE_COMPRESSION_CLIENT = "http.compression"; public final static String TRANSPORT_HTTP_COMPRESSION_DISABLED_SERVLET = "web.compression.disabled"; public final static String TRANSPORT_HTTP_COMPRESSION_LEVEL = "compression.level"; public final static String TRANSPORT_HTTP_COMPRESSION_STRATEGY = "compression.strategy"; public final static String TRANSPORT_HTTP_BASIC_AUTH_USERNAME = "http.basic.auth.username"; public final static String TRANSPORT_HTTP_BASIC_AUTH_PASSWORD = "http.basic.auth.password"; public final static String TRANSPORT_TYPE = "transport.type"; public final static String TRANSPORT_MAX_BYTES_TO_SYNC = "transport.max.bytes.to.sync"; public final static String CACHE_TIMEOUT_GROUPLETS_IN_MS = "cache.grouplets.time.ms"; public final static String CACHE_TIMEOUT_NODE_SECURITY_IN_MS = "cache.node.security.time.ms"; public final static String CACHE_TIMEOUT_TRIGGER_ROUTER_IN_MS = "cache.trigger.router.time.ms"; public final static String CACHE_TIMEOUT_CHANNEL_IN_MS = "cache.channel.time.ms"; public final static String CACHE_TIMEOUT_NODE_GROUP_LINK_IN_MS = "cache.node.group.link.time.ms"; public final static String CACHE_TIMEOUT_TRANSFORM_IN_MS = "cache.transform.time.ms"; public final static String CACHE_TIMEOUT_LOAD_FILTER_IN_MS = "cache.load.filter.time.ms"; public final static String CACHE_TIMEOUT_CONFLICT_IN_MS = "cache.conflict.time.ms"; public final static String CACHE_TIMEOUT_TABLES_IN_MS = "cache.table.time.ms"; public final static String TRIGGER_UPDATE_CAPTURE_CHANGED_DATA_ONLY = "trigger.update.capture.changed.data.only.enabled"; public final static String TRIGGER_CREATE_BEFORE_INITIAL_LOAD = "trigger.create.before.initial.load.enabled"; public final static String DB_METADATA_IGNORE_CASE = "db.metadata.ignore.case"; public final static String DB_NATIVE_EXTRACTOR = "db.native.extractor"; public final static String DB_QUERY_TIMEOUT_SECS = "db.sql.query.timeout.seconds"; public final static String DB_FETCH_SIZE = "db.jdbc.streaming.results.fetch.size"; public final static String DB_DELIMITED_IDENTIFIER_MODE = "db.delimited.identifier.mode"; public final static String DB_JNDI_NAME = "db.jndi.name"; public final static String DB_SPRING_BEAN_NAME = "db.spring.bean.name"; public final static String RUNTIME_CONFIG_TABLE_PREFIX = "sync.table.prefix"; public final static String NODE_ID_CREATOR_SCRIPT = "node.id.creator.script"; public final static String NODE_ID_CREATOR_MAX_NODES = "node.id.creator.max.nodes"; public final static String EXTERNAL_ID_IS_UNIQUE = "external.id.is.unique.enabled"; public final static String CLUSTER_SERVER_ID = "cluster.server.id"; public final static String CLUSTER_LOCK_TIMEOUT_MS = "cluster.lock.timeout.ms"; public final static String LOCK_TIMEOUT_MS = "lock.timeout.ms"; public final static String LOCK_WAIT_RETRY_MILLIS = "lock.wait.retry.ms"; public final static String PURGE_LOG_SUMMARY_MINUTES = "purge.log.summary.retention.minutes"; public final static String PURGE_RETENTION_MINUTES = "purge.retention.minutes"; public final static String PURGE_EXTRACT_REQUESTS_RETENTION_MINUTES = "purge.extract.request.retention.minutes"; public final static String PURGE_REGISTRATION_REQUEST_RETENTION_MINUTES = "purge.registration.request.retention.minutes"; public final static String PURGE_STATS_RETENTION_MINUTES = "purge.stats.retention.minutes"; public final static String PURGE_MAX_NUMBER_OF_DATA_IDS = "job.purge.max.num.data.to.delete.in.tx"; public final static String PURGE_MAX_NUMBER_OF_BATCH_IDS = "job.purge.max.num.batches.to.delete.in.tx"; public final static String PURGE_MAX_NUMBER_OF_EVENT_BATCH_IDS = "job.purge.max.num.data.event.batches.to.delete.in.tx"; public final static String JMX_LINE_FEED = "jmx.line.feed"; public final static String IP_FILTERS = "ip.filters"; public final static String WEB_BATCH_URI_HANDLER_ENABLE = "web.batch.servlet.enable"; public final static String NODE_COPY_MODE_ENABLED = "node.copy.mode.enabled"; public final static String OFFLINE_NODE_DETECTION_PERIOD_MINUTES = "offline.node.detection.period.minutes"; public final static String HEARTBEAT_SYNC_ON_PUSH_PERIOD_SEC = "heartbeat.sync.on.push.period.sec"; public final static String HEARTBEAT_JOB_PERIOD_MS = "job.heartbeat.period.time.ms"; public final static String HEARTBEAT_SYNC_ON_STARTUP = "heartbeat.sync.on.startup"; public final static String HEARTBEAT_UPDATE_NODE_WITH_BATCH_STATUS = "heartbeat.update.node.with.batch.status"; public final static String HEARTBEAT_ENABLED = "heartbeat.sync.on.push.enabled"; public final static String STATISTIC_RECORD_ENABLE = "statistic.record.enable"; public final static String CURRENT_ACTIVITY_HISTORY_KEEP_COUNT = "statistic.activity.history.keep.count"; public final static String STORES_UPPERCASE_NAMES_IN_CATALOG = "stores.uppercase.names.in.catalog"; public final static String DB_MASTER_COLLATION = "db.master.collation"; public final static String SEQUENCE_TIMEOUT_MS = "sequence.timeout.ms"; public final static String REST_API_ENABLED = "rest.api.enable"; public final static String REST_HEARTBEAT_ON_PULL = "rest.api.heartbeat.on.pull"; public final static String SYNCHRONIZE_ALL_JOBS = "jobs.synchronized.enable"; public final static String FILE_SYNC_ENABLE = "file.sync.enable"; public final static String FILE_SYNC_LOCK_WAIT_MS = "file.sync.lock.wait.ms"; public final static String BSH_LOAD_FILTER_HANDLES_MISSING_TABLES = "bsh.load.filter.handles.missing.tables"; public final static String BSH_TRANSFORM_GLOBAL_SCRIPT = "bsh.transform.global.script"; public final static String MSSQL_ROW_LEVEL_LOCKS_ONLY = "mssql.allow.only.row.level.locks.on.runtime.tables"; public final static String MSSQL_USE_NTYPES_FOR_SYNC = "mssql.use.ntypes.for.sync"; public final static String MSSQL_TRIGGER_EXECUTE_AS = "mssql.trigger.execute.as"; public final static String EXTENSIONS_XML = "extensions.xml"; public static Map<String, ParameterMetaData> getParameterMetaData() { return parameterMetaData; } public static Set<String> getAllParameterTags() { TreeSet<String> tags = new TreeSet<String>(); Collection<ParameterMetaData> meta = parameterMetaData.values(); for (ParameterMetaData parameterMetaData : meta) { tags.addAll(parameterMetaData.getTags()); } return tags; } }