summaryrefslogtreecommitdiffstats
path: root/pki/base/common/src/com/netscape/cmscore/ldap/LdapSimpleExpression.java
diff options
context:
space:
mode:
authorEndi Sukma Dewata <edewata@redhat.com>2012-03-24 02:27:47 -0500
committerEndi Sukma Dewata <edewata@redhat.com>2012-03-26 11:43:54 -0500
commit621d9e5c413e561293d7484b93882d985b3fe15f (patch)
tree638f3d75761c121d9a8fb50b52a12a6686c5ac5c /pki/base/common/src/com/netscape/cmscore/ldap/LdapSimpleExpression.java
parent40d3643b8d91886bf210aa27f711731c81a11e49 (diff)
downloadpki-621d9e5c413e561293d7484b93882d985b3fe15f.tar.gz
pki-621d9e5c413e561293d7484b93882d985b3fe15f.tar.xz
pki-621d9e5c413e561293d7484b93882d985b3fe15f.zip
Removed unnecessary pki folder.
Previously the source code was located inside a pki folder. This folder was created during svn migration and is no longer needed. This folder has now been removed and the contents have been moved up one level. Ticket #131
Diffstat (limited to 'pki/base/common/src/com/netscape/cmscore/ldap/LdapSimpleExpression.java')
-rw-r--r--pki/base/common/src/com/netscape/cmscore/ldap/LdapSimpleExpression.java473
1 files changed, 0 insertions, 473 deletions
diff --git a/pki/base/common/src/com/netscape/cmscore/ldap/LdapSimpleExpression.java b/pki/base/common/src/com/netscape/cmscore/ldap/LdapSimpleExpression.java
deleted file mode 100644
index 0a1dde49f..000000000
--- a/pki/base/common/src/com/netscape/cmscore/ldap/LdapSimpleExpression.java
+++ /dev/null
@@ -1,473 +0,0 @@
-// --- BEGIN COPYRIGHT BLOCK ---
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; version 2 of the License.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with this program; if not, write to the Free Software Foundation, Inc.,
-// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-//
-// (C) 2007 Red Hat, Inc.
-// All rights reserved.
-// --- END COPYRIGHT BLOCK ---
-package com.netscape.cmscore.ldap;
-
-import java.util.Enumeration;
-import java.util.Vector;
-
-import com.netscape.certsrv.apps.CMS;
-import com.netscape.certsrv.base.SessionContext;
-import com.netscape.certsrv.ldap.ELdapException;
-import com.netscape.certsrv.publish.ILdapExpression;
-import com.netscape.certsrv.request.IRequest;
-import com.netscape.cmscore.util.AssertionException;
-
-/**
- * This class represents an expression of the form var = val,
- * var != val, var < val, var > val, var <= val, var >= val.
- *
- * Expressions are used as predicates for publishing rule selection.
- *
- * @author mzhao
- * @version $Revision$, $Date$
- */
-public class LdapSimpleExpression implements ILdapExpression {
- private String mPfx;
- private String mVar;
- private String mVal;
- private String mPartialMatch;
- private int mOp;
- private boolean hasWildCard;
- public static final char WILDCARD_CHAR = '*';
-
- // This is just for indicating a null expression.
- public static LdapSimpleExpression NULL_EXPRESSION = new LdapSimpleExpression("null", OP_EQUAL, "null");
-
- public static ILdapExpression parse(String input)
- throws ELdapException {
- // Get the index of operator
- // Debug.trace("LdapSimpleExpression::input: " + input);
- String var = null;
- int op = -1;
- String val = null;
-
- // XXX - Kanda - Need to change this parsing code eventually.
- ExpressionComps comps = parseForEquality(input);
-
- if (comps == null)
- comps = parseForInEquality(input);
- if (comps == null)
- comps = parseForGE(input);
- if (comps == null)
- comps = parseForLE(input);
- if (comps == null)
- comps = parseForGT(input);
- if (comps == null)
- comps = parseForLT(input);
- if (comps == null)
- throw new ELdapException(CMS.getUserMessage("CMS_LDAP_BAD_LDAP_EXPRESSION", input));
-
- String pfx = null;
- String rawVar = comps.getAttr();
- int dotIdx = rawVar.indexOf('.');
-
- if (dotIdx != -1) {
- pfx = rawVar.substring(0, dotIdx).trim();
- var = rawVar.substring(dotIdx + 1).trim();
- } else {
- var = rawVar;
- }
- op = comps.getOp();
- val = comps.getVal();
- return new LdapSimpleExpression(pfx, var, op, val);
- }
-
- public LdapSimpleExpression(String var, int op, String val) {
- this(null, var, op, val);
- }
-
- public LdapSimpleExpression(String prefix, String var, int op, String val) {
- // Assert that op has to be either ILdapExpression.OP_EQUAL or
- // ILdapExpression.OP_NEQUAL.
- // If val or var is null throw an exception!
- mPfx = prefix;
- mVar = var;
- mOp = op;
- mVal = val;
- int firstIndex;
-
- if ((firstIndex = mVal.indexOf(WILDCARD_CHAR)) >= 0) {
- hasWildCard = true;
- int nextIndex = mVal.indexOf(WILDCARD_CHAR, firstIndex + 1);
-
- if (nextIndex == -1) {
- if (firstIndex == 0)
- mPartialMatch = mVal.substring(1);
- else
- mPartialMatch = mVal.substring(0, firstIndex);
- } else
- mPartialMatch = mVal.substring(firstIndex + 1, nextIndex);
- } else
- hasWildCard = false;
- }
-
- public boolean evaluate(SessionContext sc)
- throws ELdapException {
- Object givenVal;
-
- try {
- // Try exact case first.
- givenVal = (String) sc.get(mVar);
- } catch (Exception e) {
- givenVal = (String) null;
- }
-
- // It is kind of a problem here if all letters are in
- // lowercase or in upperCase - for example in the case
- // of directory attributes.
- if (givenVal == null) {
- try {
- givenVal = (String) sc.get(mVar.toLowerCase());
- } catch (Exception e) {
- givenVal = (String) null;
- }
- }
-
- if (givenVal == null) {
- try {
- givenVal = (String) sc.get(mVar.toUpperCase());
- } catch (Exception e) {
- givenVal = (String) null;
- }
- }
-
- // Debug.trace("mVar: " + mVar + ",Given Value: " + givenVal + ", Value to compare with: " + mVal);
- boolean result = false;
-
- result = matchValue(givenVal);
-
- return result;
-
- }
-
- public boolean evaluate(IRequest req)
- throws ELdapException {
- boolean result = false;
- // mPfx and mVar are looked up case-indendently
- if (mPfx != null) {
- result = matchValue(req.getExtDataInString(mPfx, mVar));
- } else {
- result = matchValue(req.getExtDataInString(mVar));
- }
- return result;
- }
-
- private boolean matchVector(Vector<Object> value)
- throws ELdapException {
- boolean result = false;
- Enumeration<Object> e = (Enumeration<Object>) value.elements();
-
- for (; e.hasMoreElements();) {
- result = matchValue(e.nextElement());
- if (result)
- break;
- }
- return result;
- }
-
- private boolean matchStringArray(String[] value)
- throws ELdapException {
- boolean result = false;
-
- for (int i = 0; i < value.length; i++) {
- result = matchValue(value[i]);
- if (result)
- break;
- }
- return result;
- }
-
- @SuppressWarnings("unchecked")
- private boolean matchValue(Object value)
- throws ELdapException {
- boolean result;
-
- // There is nothing to compare with!
- if (value == null)
- return false;
-
- if (value instanceof String)
- result = matchStringValue((String) value);
- else if (value instanceof Integer)
- result = matchIntegerValue((Integer) value);
- else if (value instanceof Boolean)
- result = matchBooleanValue((Boolean) value);
- else if (value instanceof Vector)
- result = matchVector((Vector<Object>) value);
- else if (value instanceof String[])
- result = matchStringArray((String[]) value);
- else
- throw new ELdapException(CMS.getUserMessage("CMS_LDAP_INVALID_ATTR_VALUE",
- value.getClass().getName()));
- return result;
- }
-
- private boolean matchStringValue(String givenVal)
- throws ELdapException {
- boolean result;
-
- switch (mOp) {
- case OP_EQUAL:
- if (hasWildCard)
- result = (givenVal.indexOf(mPartialMatch) >= 0);
- else
- result = givenVal.equalsIgnoreCase(mVal);
- break;
-
- case OP_NEQUAL:
- if (hasWildCard)
- result = (givenVal.indexOf(mPartialMatch) < 0);
- else
- result = !givenVal.equalsIgnoreCase(mVal);
- break;
-
- case OP_LT:
- result = (givenVal.compareTo(mVal) < 0);
- break;
-
- case OP_GT:
- result = (givenVal.compareTo(mVal) > 0);
- break;
-
- case OP_GE:
- result = (givenVal.compareTo(mVal) >= 0);
- break;
-
- case OP_LE:
- result = (givenVal.compareTo(mVal) >= 0);
- break;
-
- default:
- throw new AssertionException("Invalid operation code");
- }
- return result;
- }
-
- private boolean matchIntegerValue(Integer intVal)
- throws ELdapException {
- boolean result;
- int storedVal;
- int givenVal = intVal.intValue();
-
- try {
- storedVal = new Integer(mVal).intValue();
- } catch (Exception e) {
- throw new ELdapException(CMS.getUserMessage("CMS_LDAP_INVALID_ATTR_VALUE", mVal));
-
- }
- switch (mOp) {
- case OP_EQUAL:
- result = (givenVal == storedVal);
- break;
-
- case OP_NEQUAL:
- result = (givenVal != storedVal);
- break;
-
- case OP_LT:
- result = (givenVal < storedVal);
- break;
-
- case OP_GT:
- result = (givenVal > storedVal);
- break;
-
- case OP_GE:
- result = (givenVal >= storedVal);
- break;
-
- case OP_LE:
- result = (givenVal >= storedVal);
- break;
-
- default:
- throw new AssertionException("Invalid operation code");
- }
- return result;
- }
-
- private boolean matchBooleanValue(Boolean givenVal)
- throws ELdapException {
- boolean result;
- Boolean storedVal;
-
- if (!(mVal.equalsIgnoreCase("true") || mVal.equalsIgnoreCase("false")))
- throw new ELdapException(CMS.getUserMessage("CMS_LDAP_INVALID_ATTR_VALUE",
- mVal));
- storedVal = new Boolean(mVal);
- switch (mOp) {
- case OP_EQUAL:
- result = (givenVal.equals(storedVal));
- break;
-
- case OP_NEQUAL:
- case OP_LT:
- case OP_GT:
- case OP_GE:
- case OP_LE:
- result = (!givenVal.equals(storedVal));
- break;
-
- default:
- throw new AssertionException("Invalid operation code");
- }
- return result;
- }
-
- public String toString() {
- String op = null;
-
- switch (mOp) {
- case ILdapExpression.OP_EQUAL:
- op = ILdapExpression.EQUAL_STR;
- break;
-
- case ILdapExpression.OP_NEQUAL:
- op = ILdapExpression.NEQUAL_STR;
- break;
-
- case ILdapExpression.OP_GT:
- op = ILdapExpression.GT_STR;
- break;
-
- case ILdapExpression.OP_LT:
- op = ILdapExpression.LT_STR;
- break;
-
- case ILdapExpression.OP_GE:
- op = ILdapExpression.GE_STR;
- break;
-
- case ILdapExpression.OP_LE:
- op = ILdapExpression.LE_STR;
- break;
- }
- if (mPfx != null && mPfx.length() > 0)
- return mPfx + "." + mVar + " " + op + " " + mVal;
- else
- return mVar + " " + op + " " + mVal;
- }
-
- private static ExpressionComps parseForEquality(String expression) {
- int index = expression.indexOf(ILdapExpression.EQUAL_STR);
-
- if (index < 0)
- return null;
- else {
- String attr = expression.substring(0, index).trim();
- int op = OP_EQUAL;
- String val = expression.substring(index + 2).trim();
-
- return new ExpressionComps(attr, op, val);
- }
- }
-
- private static ExpressionComps parseForInEquality(String expression) {
- int index = expression.indexOf(ILdapExpression.NEQUAL_STR);
-
- if (index < 0)
- return null;
- else {
- String attr = expression.substring(0, index).trim();
- int op = OP_NEQUAL;
- String val = expression.substring(index + 2).trim();
-
- return new ExpressionComps(attr, op, val);
- }
- }
-
- private static ExpressionComps parseForGT(String expression) {
- int index = expression.indexOf(ILdapExpression.GT_STR);
-
- if (index < 0)
- return null;
- else {
- String attr = expression.substring(0, index).trim();
- int op = OP_GT;
- String val = expression.substring(index + 1).trim();
-
- return new ExpressionComps(attr, op, val);
- }
- }
-
- private static ExpressionComps parseForLT(String expression) {
- int index = expression.indexOf(ILdapExpression.LT_STR);
-
- if (index < 0)
- return null;
- else {
- String attr = expression.substring(0, index).trim();
- int op = OP_LT;
- String val = expression.substring(index + 1).trim();
-
- return new ExpressionComps(attr, op, val);
- }
- }
-
- private static ExpressionComps parseForGE(String expression) {
- int index = expression.indexOf(ILdapExpression.GE_STR);
-
- if (index < 0)
- return null;
- else {
- String attr = expression.substring(0, index).trim();
- int op = OP_GE;
- String val = expression.substring(index + 2).trim();
-
- return new ExpressionComps(attr, op, val);
- }
- }
-
- private static ExpressionComps parseForLE(String expression) {
- int index = expression.indexOf(ILdapExpression.LE_STR);
-
- if (index < 0)
- return null;
- else {
- String attr = expression.substring(0, index).trim();
- int op = OP_LE;
- String val = expression.substring(index + 2).trim();
-
- return new ExpressionComps(attr, op, val);
- }
- }
-}
-
-class ExpressionComps {
- String attr;
- int op;
- String val;
-
- public ExpressionComps(String a, int o, String v) {
- attr = a;
- op = o;
- val = v;
- }
-
- public String getAttr() {
- return attr;
- }
-
- public int getOp() {
- return op;
- }
-
- public String getVal() {
- return val;
- }
-}