summaryrefslogtreecommitdiff
path: root/src/com/memberwebs/ldapxml/LXSpecs.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/memberwebs/ldapxml/LXSpecs.java')
-rw-r--r--src/com/memberwebs/ldapxml/LXSpecs.java78
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;