/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Enum to define how ldap result, entries, and attribute data should be sorted. Default sort behavior can be controlled * with the org.ldaptive.sortBehavior system property. This property must be the fully qualified name of a sort * behavior. * * @author Middleware Services */ public enum SortBehavior { /** unordered results. */ UNORDERED, /** ordered results. */ ORDERED, /** sorted results. */ SORTED; /** Sort behavior name. */ public static final String SORT_BEHAVIOR = "org.ldaptive.sortBehavior"; /** Logger for this class. */ private static final Logger LOGGER = LoggerFactory.getLogger(SortBehavior.class); /** Default sort behavior. */ private static SortBehavior defaultSortBehavior; /** * statically initialize the default sort behavior. */ static { final String sb = System.getProperty(SORT_BEHAVIOR); if (sb != null) { try { final SortBehavior sortBehavior; if (sb.startsWith(SortBehavior.class.getName())) { sortBehavior = SortBehavior.valueOf(sb.substring(SortBehavior.class.getName().length() + 1, sb.length())); } else { sortBehavior = SortBehavior.valueOf(sb); } LOGGER.info("Setting default sort behavior to {}", sortBehavior); defaultSortBehavior = sortBehavior; } catch (IllegalArgumentException e) { LOGGER.error("Error instantiating {}", sb, e); } } if (defaultSortBehavior == null) { defaultSortBehavior = UNORDERED; } } /** * Returns the default sort behavior. * * @return default sort behavior */ public static SortBehavior getDefaultSortBehavior() { return defaultSortBehavior; } }