001    /*
002     *  Licensed to the Apache Software Foundation (ASF) under one
003     *  or more contributor license agreements.  See the NOTICE file
004     *  distributed with this work for additional information
005     *  regarding copyright ownership.  The ASF licenses this file
006     *  to you under the Apache License, Version 2.0 (the
007     *  "License"); you may not use this file except in compliance
008     *  with the License.  You may obtain a copy of the License at
009     *  
010     *    http://www.apache.org/licenses/LICENSE-2.0
011     *  
012     *  Unless required by applicable law or agreed to in writing,
013     *  software distributed under the License is distributed on an
014     *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015     *  KIND, either express or implied.  See the License for the
016     *  specific language governing permissions and limitations
017     *  under the License. 
018     *  
019     */
020    package org.apache.directory.server.core.replication;
021    
022    import org.apache.directory.shared.ldap.codec.util.LdapURLEncodingException;
023    import org.apache.directory.shared.ldap.util.LdapURL;
024    
025    /**
026     * The replication provider data structure.
027     * 
028     * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
029     * @version $Rev: $, $Date: $
030     */
031    public class ReplicationProvider
032    {
033        /** The provider unique identifier */
034        private int id;
035        
036        /** The type of replication (refreshOnly or refreshAndPersist */
037        private ReplicationType type = ReplicationType.REFRESH_AND_PERSIST;
038        
039        /** The sizeLimit for the searchRequest. Default to unlimited. */
040        private long sizeLimit = 0;
041        
042        /** The timeLimit for the search request. Default to unlimited. */
043        private int timeLimit = 0;
044        
045        /** The search operation to conduct */
046        private LdapURL url;
047        
048        /** The connection to the replica */
049        private ReplicaConnection connection;
050        
051        
052        /**
053         * @return the connection
054         */
055        public ReplicaConnection getConnection()
056        {
057            return connection;
058        }
059    
060    
061        /**
062         * @param connection the connection to set
063         */
064        public void setConnection( ReplicaConnection connection )
065        {
066            this.connection = connection;
067        }
068    
069    
070        public ReplicationProvider()
071        {
072            type = ReplicationType.REFRESH_AND_PERSIST;
073        }
074        
075        
076        /**
077         * @return the providerId
078         */
079        public int getId()
080        {
081            return id;
082        }
083    
084    
085        /**
086         * @param id the provider Id to set
087         */
088        public void setId( int id )
089        {
090            this.id = id;
091        }
092    
093        
094        /**
095         * @return the type
096         */
097        public ReplicationType getReplicationType()
098        {
099            return type;
100        }
101    
102    
103        /**
104         * @param type the replication type to set
105         */
106        public void setType( String type )
107        {
108            this.type = ReplicationType.getInstance( type );
109        }
110    
111    
112        /**
113         * @return the sizeLimit
114         */
115        public long getSizeLimit()
116        {
117            return sizeLimit;
118        }
119    
120    
121        /**
122         * @param sizeLimit the sizeLimit to set
123         */
124        public void setSizeLimit( long sizeLimit )
125        {
126            this.sizeLimit = sizeLimit;
127        }
128    
129    
130        /**
131         * @return the timeLimit
132         */
133        public int getTimeLimit()
134        {
135            return timeLimit;
136        }
137    
138    
139        /**
140         * @param timeLimit the timeLimit to set
141         */
142        public void setTimeLimit( int timeLimit )
143        {
144            this.timeLimit = timeLimit;
145        }
146        
147        
148        /**
149         * @return the url
150         */
151        public LdapURL getUrl()
152        {
153            return url;
154        }
155        
156        
157        /**
158         * 
159         * @param url The URL to use for the replication search request
160         */
161        public void setUrl( String url )
162        {
163            try
164            {
165                this.url = new LdapURL( url );
166            }
167            catch ( LdapURLEncodingException luee )
168            {
169                this.url = null;
170            }
171        }
172    }