/* * 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.AttributeType; /** * The configuration of an attribute index including the kind of * indexing enabled and the index entry limit for each kind of indexing. */ public class IndexConfig { /** * The attribute type of the indexed attribute. */ private AttributeType attributeType; /** * Indicates whether this index is configured for attribute equality. */ private boolean isEquality = false; /** * Indicates whether this index is configured for attribute presence. */ private boolean isPresence = false; /** * Indicates whether this index is configured for attribute substrings. */ private boolean isSubstring = false; /** * Indicates whether this index is configured for attribute ordering. */ private boolean isOrdering = false; /** * Indicates whether this index is configured for attribute approximate. */ private boolean isApproximate = false; /** * The index entry limit for the attribute equality database. */ private int equalityEntryLimit = 4000; /** * The index entry limit for the attribute presence database. */ private int presenceEntryLimit = 4000; /** * The index entry limit for the attribute substring database. */ private int substringEntryLimit = 4000; /** * The configuration of substring length for the attribute substring database. */ private int substringLength = 6; /** * The limit on the number of entry IDs that may be retrieved by cursoring * through an index. */ private int cursorEntryLimit = 100000; /** * Constructs an index configuration for the given attribute type. * @param attributeType The attribute type of the index. */ public IndexConfig(AttributeType attributeType) { this.attributeType = attributeType; } /** * Get the attribute type of the indexed attribute. * @return The attribute type of the indexed attribute. */ public AttributeType getAttributeType() { return attributeType; } /** * Determine if this index is configured for attribute equality. * @return true if the index is configured for attribute equality. */ public boolean isEqualityIndex() { return isEquality; } /** * Configures this index for attribute equality. * @param isEquality Sets attribute equality indexing if true. */ public void setEqualityIndex(boolean isEquality) { this.isEquality = isEquality; } /** * Determine if this index is configured for attribute presence. * @return true if the index is configured for attribute presence. */ public boolean isPresenceIndex() { return isPresence; } /** * Configures this index for attribute presence. * @param isPresence Sets attribute presence indexing if true. */ public void setPresenceIndex(boolean isPresence) { this.isPresence = isPresence; } /** * Determine if this index is configured for attribute substrings. * @return true if the index is configured for attribute substrings. */ public boolean isSubstringIndex() { return isSubstring; } /** * Configures this index for attribute substrings. * @param isSubstring Sets attribute substring indexing if true. */ public void setSubstringIndex(boolean isSubstring) { this.isSubstring = isSubstring; } /** * Determine if this index is configured for attribute ordering. * @return true if the index is configured for attribute ordering. */ public boolean isOrderingIndex() { return isOrdering; } /** * Configures this index for attribute ordering. * @param isOrdering Sets attribute ordering indexing if true. */ public void setOrderingIndex(boolean isOrdering) { this.isOrdering = isOrdering; } /** * Determine if this index is configured for attribute approximating. * @return true if the index is configured for attribute approximating. */ public boolean isApproximateIndex() { return isApproximate; } /** * Configures this index for attribute approximating. * @param isApproximate Sets attribute approximate indexing if true. */ public void setApproximateIndex(boolean isApproximate) { this.isApproximate = isApproximate; } /** * Get the configured entry limit for attribute equality indexing. * @return The index entry limit, or 0 if there is no limit. */ public int getEqualityEntryLimit() { return equalityEntryLimit; } /** * Set the configured entry limit for attribute presence indexing. * @param indexEntryLimit The index entry limit, or 0 if there is no limit. */ public void setPresenceEntryLimit(int indexEntryLimit) { presenceEntryLimit = indexEntryLimit; } /** * Get the configured entry limit for attribute presence indexing. * @return The index entry limit, or 0 if there is no limit. */ public int getPresenceEntryLimit() { return presenceEntryLimit; } /** * Set the configured entry limit for attribute substring indexing. * @param indexEntryLimit The index entry limit, or 0 if there is no limit. */ public void setSubstringEntryLimit(int indexEntryLimit) { substringEntryLimit = indexEntryLimit; } /** * Get the configured entry limit for attribute substring indexing. * @return The index entry limit, or 0 if there is no limit. */ public int getSubstringEntryLimit() { return substringEntryLimit; } /** * Set the configured entry limit for attribute equality indexing. * @param indexEntryLimit The index entry limit, or 0 if there is no limit. */ public void setEqualityEntryLimit(int indexEntryLimit) { equalityEntryLimit = indexEntryLimit; } /** * Get the configured substring length for attribute substring indexing. * @return The configured attribute substring length. */ public int getSubstringLength() { return substringLength; } /** * Set the configured substring length for attribute substring indexing. * * @param substringLength The configured attribute substring length. */ public void setSubstringLength(int substringLength) { this.substringLength = substringLength; } /** * Get the configured limit on the number of entry IDs that may be retrieved * by cursoring through the index. * * @return The index cursor entry limit. */ public int getCursorEntryLimit() { return cursorEntryLimit; } }