/** * 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.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; /** * Constants that represent SymmetricDS tables */ public class TableConstants { public static final String SYM_PARAMETER = "parameter"; public static final String SYM_LOCK = "lock"; public static final String SYM_NODE_CHANNEL_LOCK = "node_channel_lock"; public static final String SYM_OUTGOING_BATCH = "outgoing_batch"; public static final String SYM_EXTRACT_REQUEST = "extract_request"; public static final String SYM_INCOMING_BATCH = "incoming_batch"; public static final String SYM_TRIGGER = "trigger"; public static final String SYM_ROUTER = "router"; public static final String SYM_TRIGGER_HIST = "trigger_hist"; public static final String SYM_NODE_GROUP = "node_group"; public static final String SYM_NODE = "node"; public static final String SYM_NODE_HOST = "node_host"; public static final String SYM_DATA = "data"; public static final String SYM_DATA_GAP = "data_gap"; public static final String SYM_DATA_EVENT = "data_event"; public static final String SYM_TRANSFORM_TABLE = "transform_table"; public static final String SYM_LOAD_FILTER = "load_filter"; public static final String SYM_TRANSFORM_COLUMN = "transform_column"; public static final String SYM_TRIGGER_ROUTER = "trigger_router"; public static final String SYM_CHANNEL = "channel"; public static final String SYM_NODE_SECURITY = "node_security"; public static final String SYM_NODE_IDENTITY = "node_identity"; public static final String SYM_NODE_COMMUNICATION = "node_communication"; public static final String SYM_NODE_GROUP_LINK = "node_group_link"; public static final String SYM_NODE_HOST_STATS = "node_host_stats"; public static final String SYM_NODE_HOST_JOB_STATS = "node_host_job_stats"; public static final String SYM_REGISTRATION_REQUEST = "registration_request"; public static final String SYM_REGISTRATION_REDIRECT = "registration_redirect"; public static final String SYM_NODE_CHANNEL_CTL = "node_channel_ctl"; public static final String SYM_CONFLICT = "conflict"; public static final String SYM_NODE_GROUP_CHANNEL_WND = "node_group_channel_wnd"; public static final String SYM_NODE_HOST_CHANNEL_STATS = "node_host_channel_stats"; public static final String SYM_INCOMING_ERROR = "incoming_error"; public static final String SYM_SEQUENCE = "sequence"; public static final String SYM_TABLE_RELOAD_REQUEST = "table_reload_request"; public static final String SYM_GROUPLET = "grouplet"; public static final String SYM_GROUPLET_LINK = "grouplet_link"; public static final String SYM_TRIGGER_ROUTER_GROUPLET = "trigger_router_grouplet"; public static final String SYM_FILE_TRIGGER = "file_trigger"; public static final String SYM_FILE_TRIGGER_ROUTER = "file_trigger_router"; public static final String SYM_FILE_SNAPSHOT = "file_snapshot"; public static final String SYM_FILE_INCOMING = "file_incoming"; public static final String SYM_CONSOLE_USER = "console_user"; public static final String SYM_EXTENSION = "extension"; private static List<String> tablesWithPrefix; private static List<String> configTablesWithPrefix; private static List<String> tablesWithoutPrefix; public static final List<String> getTables(String tablePrefix) { if (tablesWithPrefix == null) { tablesWithPrefix = populateAllTables(tablePrefix); } return tablesWithPrefix; } public static final List<String> getConfigTables(String tablePrefix) { if (configTablesWithPrefix == null) { configTablesWithPrefix = populateConfigTables(tablePrefix); } return configTablesWithPrefix; } public static final List<String> getTablesWithoutPrefix() { if (tablesWithoutPrefix == null) { tablesWithoutPrefix = populateAllTables(""); } return tablesWithoutPrefix; } protected static List<String> populateConfigTables(String tablePrefix) { List<String> configTables = new ArrayList<String>(); configTables.add(getTableName(tablePrefix, TableConstants.SYM_NODE_GROUP)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_NODE_GROUP_LINK)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_NODE)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_NODE_HOST)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_NODE_SECURITY)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_PARAMETER)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_CHANNEL)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_NODE_GROUP_CHANNEL_WND)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_TRIGGER)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_ROUTER)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_TRIGGER_ROUTER)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_TRANSFORM_TABLE)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_LOAD_FILTER)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_TRANSFORM_COLUMN)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_CONFLICT)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_TABLE_RELOAD_REQUEST)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_GROUPLET)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_GROUPLET_LINK)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_TRIGGER_ROUTER_GROUPLET)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_FILE_TRIGGER)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_FILE_TRIGGER_ROUTER)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_FILE_SNAPSHOT)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_NODE_IDENTITY)); configTables.add(getTableName(tablePrefix, TableConstants.SYM_EXTENSION)); return configTables; } protected static List<String> populateAllTables(String tablePrefix) { List<String> tables = new ArrayList<String>(); tables.add(getTableName(tablePrefix, SYM_TRIGGER)); tables.add(getTableName(tablePrefix, SYM_TRIGGER_ROUTER)); tables.add(getTableName(tablePrefix, SYM_ROUTER)); tables.add(getTableName(tablePrefix, SYM_TRANSFORM_TABLE)); tables.add(getTableName(tablePrefix, SYM_LOAD_FILTER)); tables.add(getTableName(tablePrefix, SYM_TRANSFORM_COLUMN)); tables.add(getTableName(tablePrefix, SYM_TRIGGER_HIST)); tables.add(getTableName(tablePrefix, SYM_CHANNEL)); tables.add(getTableName(tablePrefix, SYM_NODE_GROUP)); tables.add(getTableName(tablePrefix, SYM_NODE_GROUP_LINK)); tables.add(getTableName(tablePrefix, SYM_NODE)); tables.add(getTableName(tablePrefix, SYM_NODE_HOST)); tables.add(getTableName(tablePrefix, SYM_NODE_SECURITY)); tables.add(getTableName(tablePrefix, SYM_NODE_IDENTITY)); tables.add(getTableName(tablePrefix, SYM_NODE_SECURITY)); tables.add(getTableName(tablePrefix, SYM_NODE_CHANNEL_CTL)); tables.add(getTableName(tablePrefix, SYM_NODE_GROUP_CHANNEL_WND)); tables.add(getTableName(tablePrefix, SYM_PARAMETER)); tables.add(getTableName(tablePrefix, SYM_NODE_HOST_CHANNEL_STATS)); tables.add(getTableName(tablePrefix, SYM_NODE_HOST_STATS)); tables.add(getTableName(tablePrefix, SYM_NODE_HOST_JOB_STATS)); tables.add(getTableName(tablePrefix, SYM_REGISTRATION_REDIRECT)); tables.add(getTableName(tablePrefix, SYM_REGISTRATION_REQUEST)); tables.add(getTableName(tablePrefix, SYM_DATA)); tables.add(getTableName(tablePrefix, SYM_DATA_GAP)); tables.add(getTableName(tablePrefix, SYM_DATA_EVENT)); tables.add(getTableName(tablePrefix, SYM_OUTGOING_BATCH)); tables.add(getTableName(tablePrefix, SYM_INCOMING_BATCH)); tables.add(getTableName(tablePrefix, SYM_EXTRACT_REQUEST)); tables.add(getTableName(tablePrefix, SYM_LOCK)); tables.add(getTableName(tablePrefix, SYM_NODE_CHANNEL_LOCK)); tables.add(getTableName(tablePrefix, SYM_CONFLICT)); tables.add(getTableName(tablePrefix, SYM_INCOMING_ERROR)); tables.add(getTableName(tablePrefix, SYM_SEQUENCE)); tables.add(getTableName(tablePrefix, SYM_NODE_COMMUNICATION)); tables.add(getTableName(tablePrefix, SYM_TABLE_RELOAD_REQUEST)); tables.add(getTableName(tablePrefix, SYM_GROUPLET)); tables.add(getTableName(tablePrefix, SYM_GROUPLET_LINK)); tables.add(getTableName(tablePrefix, SYM_TRIGGER_ROUTER_GROUPLET)); tables.add(getTableName(tablePrefix, TableConstants.SYM_FILE_TRIGGER)); tables.add(getTableName(tablePrefix, TableConstants.SYM_FILE_TRIGGER_ROUTER)); tables.add(getTableName(tablePrefix, TableConstants.SYM_FILE_SNAPSHOT)); tables.add(getTableName(tablePrefix, TableConstants.SYM_FILE_INCOMING)); tables.add(getTableName(tablePrefix, SYM_EXTENSION)); return tables; } public static final List<String> getTablesThatSync(String tablePrefix) { List<String> tables = new ArrayList<String>(getConfigTables(tablePrefix)); tables.removeAll(getTablesThatDoNotSync(tablePrefix)); return tables; } public static final List<String> getTablesThatDoNotSync(String tablePrefix) { List<String> tables = new ArrayList<String>(2); tables.add(getTableName(tablePrefix, SYM_NODE_IDENTITY)); tables.add(getTableName(tablePrefix, SYM_NODE_CHANNEL_CTL)); return tables; } public static String getTableName(String tablePrefix, String tableSuffix) { return String.format("%s%s%s", tablePrefix, StringUtils.isNotBlank(tablePrefix) ? "_" : "", tableSuffix); } }