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     *      Copyright 2010-2012 UnboundID Corp.
026     */
027    package com.unboundid.directory.sdk.sync.config;
028    
029    
030    
031    import java.util.Set;
032    
033    import com.unboundid.util.NotExtensible;
034    import com.unboundid.util.ThreadSafety;
035    import 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)
045    public 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 Synchronization 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    }