package com.hwlcn.ldap.ldap.sdk; import java.io.Serializable; import java.util.HashMap; import com.hwlcn.core.annotation.NotMutable; import com.hwlcn.core.annotation.ThreadSafety; import com.hwlcn.ldap.util.ThreadSafetyLevel; @NotMutable() @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE) public final class SearchScope implements Serializable { public static final int BASE_INT_VALUE = 0; public static final SearchScope BASE = new SearchScope("BASE", BASE_INT_VALUE); public static final int ONE_INT_VALUE = 1; public static final SearchScope ONE = new SearchScope("ONE", ONE_INT_VALUE); public static final int SUB_INT_VALUE = 2; public static final SearchScope SUB = new SearchScope("SUB", SUB_INT_VALUE); public static final int SUBORDINATE_SUBTREE_INT_VALUE = 3; public static final SearchScope SUBORDINATE_SUBTREE = new SearchScope("SUBORDINATE_SUBTREE", SUBORDINATE_SUBTREE_INT_VALUE); private static final HashMap<Integer,SearchScope> UNDEFINED_SCOPES = new HashMap<Integer,SearchScope>(); private static final long serialVersionUID = 5381929718445793181L; private final int intValue; private final String name; private SearchScope(final int intValue) { this.intValue = intValue; name = String.valueOf(intValue); } private SearchScope(final String name, final int intValue) { this.name = name; this.intValue = intValue; } public String getName() { return name; } public int intValue() { return intValue; } public static SearchScope valueOf(final int intValue) { switch (intValue) { case 0: return BASE; case 1: return ONE; case 2: return SUB; case 3: return SUBORDINATE_SUBTREE; default: synchronized (UNDEFINED_SCOPES) { SearchScope s = UNDEFINED_SCOPES.get(intValue); if (s == null) { s = new SearchScope(intValue); UNDEFINED_SCOPES.put(intValue, s); } return s; } } } public static SearchScope definedValueOf(final int intValue) { switch (intValue) { case 0: return BASE; case 1: return ONE; case 2: return SUB; case 3: return SUBORDINATE_SUBTREE; default: return null; } } public static SearchScope[] values() { return new SearchScope[] { BASE, ONE, SUB, SUBORDINATE_SUBTREE }; } @Override() public int hashCode() { return intValue; } @Override() public boolean equals(final Object o) { if (o == null) { return false; } else if (o == this) { return true; } else if (o instanceof SearchScope) { return (intValue == ((SearchScope) o).intValue); } else { return false; } } @Override() public String toString() { return name; } }