/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Portions Copyright 2006-2007 Sun Microsystems, Inc. */ package org.opends.server.backends.jeb; import org.opends.server.types.DN; import org.opends.server.types.Entry; import org.opends.server.types.LDIFImportConfig; import org.opends.server.util.LDIFReader; import java.util.concurrent.BlockingQueue; import java.util.concurrent.atomic.AtomicLong; import java.util.ArrayList; /** * This class represents the import context for a destination base DN. */ public class ImportContext { /** * The name of the entryContainer for the destination base DN. */ private String containerName; /** * The destination base DN. */ private DN baseDN; /** * The configuration of the destination backend. */ private Config config; /** * The requested LDIF import configuration. */ private LDIFImportConfig ldifImportConfig; /** * A reader for the source LDIF file. */ private LDIFReader ldifReader; /** * The entry entryContainer for the destination base DN. */ private EntryContainer entryContainer; /** * The amount of buffer memory available in bytes. */ private long bufferSize; /** * A queue of entries that have been read from the LDIF and are ready * to be imported. */ private BlockingQueue queue; /** * The number of LDAP entries added to the database, used to update the * entry database record count after import. The value is not updated * for replaced entries. Multiple threads may be updating this value. */ private AtomicLong entryInsertCount = new AtomicLong(0); /** * The parent DN of the previous imported entry. */ private DN parentDN; /** * The superior IDs, in order from the parent up to the base DN, of the * previous imported entry. This is used together with the previous parent DN * to save time constructing the subtree index, in the typical case where many * contiguous entries from the LDIF file have the same parent. */ private ArrayList IDs; /** * Get the import entry queue. * @return The import entry queue. */ public BlockingQueue getQueue() { return queue; } /** * Set the import entry queue. * @param queue The import entry queue. */ public void setQueue(BlockingQueue queue) { this.queue = queue; } /** * Set the name of the entryContainer for the destination base DN. * @param containerName The entryContainer name. */ public void setContainerName(String containerName) { this.containerName = containerName; } /** * Get the name of the entryContainer for the destination base DN. * @return The entryContainer name. */ public String getContainerName() { return containerName; } /** * Set the destination base DN. * @param baseDN The destination base DN. */ public void setBaseDN(DN baseDN) { this.baseDN = baseDN; } /** * Get the destination base DN. * @return The destination base DN. */ public DN getBaseDN() { return baseDN; } /** * Set the configuration of the destination backend. * @param config The destination backend configuration. */ public void setConfig(Config config) { this.config = config; } /** * Get the configuration of the destination backend. * @return The destination backend configuration. */ public Config getConfig() { return config; } /** * Set the requested LDIF import configuration. * @param ldifImportConfig The LDIF import configuration. */ public void setLDIFImportConfig(LDIFImportConfig ldifImportConfig) { this.ldifImportConfig = ldifImportConfig; } /** * Get the requested LDIF import configuration. * @return The requested LDIF import configuration. */ public LDIFImportConfig getLDIFImportConfig() { return ldifImportConfig; } /** * Set the source LDIF reader. * @param ldifReader The source LDIF reader. */ public void setLDIFReader(LDIFReader ldifReader) { this.ldifReader = ldifReader; } /** * Get the source LDIF reader. * @return The source LDIF reader. */ public LDIFReader getLDIFReader() { return ldifReader; } /** * Set the entry entryContainer for the destination base DN. * @param entryContainer The entry entryContainer for the destination base DN. */ public void setEntryContainer(EntryContainer entryContainer) { this.entryContainer = entryContainer; } /** * Get the entry entryContainer for the destination base DN. * @return The entry entryContainer for the destination base DN. */ public EntryContainer getEntryContainer() { return entryContainer; } /** * Get the available buffer size in bytes. * @return The available buffer size. */ public long getBufferSize() { return bufferSize; } /** * Set the available buffer size in bytes. * @param bufferSize The available buffer size in bytes. */ public void setBufferSize(long bufferSize) { this.bufferSize = bufferSize; } /** * Get the number of new LDAP entries imported into the entry database. * @return The number of new LDAP entries imported into the entry database. */ public long getEntryInsertCount() { return entryInsertCount.get(); } /** * Increment the number of new LDAP entries imported into the entry database * by the given amount. * @param delta The amount to add. */ public void incrEntryInsertCount(long delta) { entryInsertCount.getAndAdd(delta); } /** * Get the parent DN of the previous imported entry. * @return The parent DN of the previous imported entry. */ public DN getParentDN() { return parentDN; } /** * Set the parent DN of the previous imported entry. * @param parentDN The parent DN of the previous imported entry. */ public void setParentDN(DN parentDN) { this.parentDN = parentDN; } /** * Get the superior IDs of the previous imported entry. * @return The superior IDs of the previous imported entry. */ public ArrayList getIDs() { return IDs; } /** * Set the superior IDs of the previous imported entry. * @param IDs The superior IDs of the previous imported entry. */ public void setIDs(ArrayList IDs) { this.IDs = IDs; } }