diff options
Diffstat (limited to 'src/com/memberwebs/ldapxml/LXSpecs.java')
-rw-r--r-- | src/com/memberwebs/ldapxml/LXSpecs.java | 78 |
1 files changed, 71 insertions, 7 deletions
diff --git a/src/com/memberwebs/ldapxml/LXSpecs.java b/src/com/memberwebs/ldapxml/LXSpecs.java index ed342ea..95768a4 100644 --- a/src/com/memberwebs/ldapxml/LXSpecs.java +++ b/src/com/memberwebs/ldapxml/LXSpecs.java @@ -2,8 +2,6 @@ package com.memberwebs.ldapxml; import java.util.Map; -import com.familymembers.util.ldap.LDAPUtil; - /** * Additional specifications for retrieving data from an * LDAP directory. @@ -30,13 +28,14 @@ public class LXSpecs private static final String LANG = "lang-"; + private static final String FILTER_ALL = "(objectClass=*)"; /** * Construct a new LXSpecs object. */ public LXSpecs() { - m_filter = LDAPUtil.FILTER_ALL; + m_filter = FILTER_ALL; m_depth = DEPTH_BASE; m_sort = null; m_data = null; @@ -117,7 +116,7 @@ public class LXSpecs */ public final String getFilter() { - return m_filter == null ? LDAPUtil.FILTER_ALL : m_filter; + return m_filter == null ? FILTER_ALL : m_filter; } /** @@ -129,8 +128,8 @@ public class LXSpecs */ public final String getFilter(String prevFilter) { - String filter = LDAPUtil.combineFilters(m_filter, prevFilter); - return filter == null ? LDAPUtil.FILTER_ALL : filter; + String filter = combineFilters(m_filter, prevFilter); + return filter == null ? FILTER_ALL : filter; } /** @@ -140,7 +139,7 @@ public class LXSpecs */ public final void setFilter(String filter) { - m_filter = LDAPUtil.combineFilters(filter, null); + m_filter = combineFilters(filter, null); } /** @@ -231,6 +230,71 @@ public class LXSpecs return m_mappedSort; } + /** + * Combine two LDAP filters in an AND operation. + * + * @param filter1 The first filter to combine. + * @param filter2 The second filter. + * @return The combined filter. + */ + protected static String combineFilters(String filter1, String filter2) + { + return combineFilters(filter1, filter2, '&'); + } + + /** + * Combine two LDAP filters in a boolean operation. + * + * @param filter1 The first filter to combine. + * @param filter2 The second filter. + * @param op The boolean operation (ie: '&' or '|' etc...) + * @return The combined filter. + */ + protected static String combineFilters(String filter1, String filter2, char op) + { + String filter = null; + + filter1 = cleanFilter(filter1); + filter2 = cleanFilter(filter2); + + if(filter1 != null) + filter = filter1; + + if(filter2 != null) + { + if(filter == null) + filter = filter2; + else + filter = "(" + op + filter + filter2 + ")"; + } + + return filter; + } + + /** + * Clean up an LDAP filter, substituting null for an empty, + * or all encompasing filter. Also wraps filters in parens + * as need. + * + * @param filter The filter to check. + * @return The new filter or null. + */ + protected static String cleanFilter(String filter) + { + if(filter != null) + { + if(!filter.startsWith("(")) + filter = "(" + filter + ")"; + + if(filter.equals("")) + filter = null; + else if(filter.equals(FILTER_ALL)) + filter = null; + } + + return filter; + } + // The additional filter private String m_filter; |