001/*
002 * CDDL HEADER START
003 *
004 * The contents of this file are subject to the terms of the
005 * Common Development and Distribution License, Version 1.0 only
006 * (the "License").  You may not use this file except in compliance
007 * with the License.
008 *
009 * You can obtain a copy of the license at
010 * docs/licenses/cddl.txt
011 * or http://www.opensource.org/licenses/cddl1.php.
012 * See the License for the specific language governing permissions
013 * and limitations under the License.
014 *
015 * When distributing Covered Code, include this CDDL HEADER in each
016 * file and include the License file at
017 * docs/licenses/cddl.txt.  If applicable,
018 * add the following below this CDDL HEADER, with the fields enclosed
019 * by brackets "[]" replaced with your own identifying information:
020 *      Portions Copyright [yyyy] [name of copyright owner]
021 *
022 * CDDL HEADER END
023 *
024 *
025 *      Portions Copyright 2010-2023 Ping Identity Corporation
026 */
027package com.unboundid.directory.sdk.sync.config;
028
029
030
031import java.util.Set;
032
033import com.unboundid.util.NotExtensible;
034import com.unboundid.util.ThreadSafety;
035import com.unboundid.util.ThreadSafetyLevel;
036
037
038
039/**
040 * This interface defines a set of methods that may be used to obtain
041 * information about the general configuration for a JDBC Sync Source.
042 */
043@NotExtensible()
044@ThreadSafety(level=ThreadSafetyLevel.INTERFACE_NOT_THREADSAFE)
045public interface JDBCSyncSourceConfig
046       extends GenericSyncConfig
047{
048  /**
049   * Gets the description for this Sync Source.
050   * @return the description, or null if there is none set.
051   */
052  String getDescription();
053
054  /**
055   * Gets the maximum number of connections that the Sync Source
056   * is allowed to have open to the database at a given time.
057   * @return an integer between 1 and 1000
058   */
059  int getMaxOpenConnections();
060
061  /**
062   * Gets the list of configured database entry types that are used
063   * to uniquely identify a set of data in the database that makes up
064   * an LDAP entry. Changes that do not match one of these entry types
065   * are dropped by the sync source.
066   * @return a set of database entry types
067   */
068  Set<String> getDatabaseEntryType();
069
070  /**
071   * Gets the configured users from which detected changes will be ignored.
072   * <p>
073   * This is particularly useful when using the Data Sync Server to sync
074   * changes back to this source (i.e. bi-directional sync).
075   * In this case, a unique user account would be used by the Sync Pipe that
076   * applies changes to this source, and that user would be in this list to
077   * prevent those changes from being synchronized back to their original
078   * source.
079   * @return the set of database login names from which changes will be ignored
080   */
081  Set<String> getIgnoreChangesByUser();
082
083  /**
084   * Gets the configured amount of time (in milliseconds) after which changelog
085   * entries should be deleted from the changelog or corresponding table in the
086   * database.
087   * @return a long value that is greater than or equal to 1
088   */
089  long getChangelogMaximumAge();
090}