From 5203374a1e5dc294088749071cf5350d2f82787d Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Thu, 20 Mar 2014 10:06:11 +0000
Subject: [PATCH] Checkpoint commit for OPENDJ-1308 Migrate schema support Code Review : CR-3230

---
 opendj3-server-dev/src/server/org/opends/server/api/VirtualAttributeProvider.java |   97 ++++++++++++++++++++++--------------------------
 1 files changed, 45 insertions(+), 52 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/api/VirtualAttributeProvider.java b/opendj3-server-dev/src/server/org/opends/server/api/VirtualAttributeProvider.java
index b5135c4..8a33e70 100644
--- a/opendj3-server-dev/src/server/org/opends/server/api/VirtualAttributeProvider.java
+++ b/opendj3-server-dev/src/server/org/opends/server/api/VirtualAttributeProvider.java
@@ -349,45 +349,41 @@
   }
 
 
-
   /**
-   * Indicates whether this virtual attribute provider will generate
-   * any value for the provided entry that is greater than or equal to
-   * the given value.
+   * Indicates whether this virtual attribute provider will generate any value
+   * for the provided entry that is greater than or equal to the given value.
    *
-   * @param  entry  The entry for which to make the determination.
-   * @param  rule   The virtual attribute rule which defines the
-   *                constraints for the virtual attribute.
-   * @param  value  The value for which to make the determination.
-   *
-   * @return  {@code UNDEFINED} if the associated attribute type does
-   *          not have an ordering matching rule, {@code TRUE} if at
-   *          least one of the generated values will be greater than
-   *          or equal to the specified value, or {@code FALSE} if
-   *          none of the generated values will be greater than or
-   *          equal to the specified value.
+   * @param entry
+   *          The entry for which to make the determination.
+   * @param rule
+   *          The virtual attribute rule which defines the constraints for the
+   *          virtual attribute.
+   * @param assertionValue
+   *          The value for which to make the determination.
+   * @return {@code UNDEFINED} if the associated attribute type does not have an
+   *         ordering matching rule, {@code TRUE} if at least one of the
+   *         generated values will be greater than or equal to the specified
+   *         value, or {@code FALSE} if none of the generated values will be
+   *         greater than or equal to the specified value.
    */
   public ConditionResult greaterThanOrEqualTo(Entry entry,
                               VirtualAttributeRule rule,
-                              ByteString value)
+                              ByteString assertionValue)
   {
-    OrderingMatchingRule matchingRule =
-         rule.getAttributeType().getOrderingMatchingRule();
+    MatchingRule matchingRule = rule.getAttributeType().getOrderingMatchingRule();
     if (matchingRule == null)
     {
       return ConditionResult.UNDEFINED;
     }
 
-    ByteString normalizedValue;
+    Assertion assertion = null;
     try
     {
-      normalizedValue = matchingRule.normalizeAttributeValue(value);
+      assertion = matchingRule.getGreaterOrEqualAssertion(assertionValue);
     }
     catch (Exception e)
     {
       logger.traceException(e);
-
-      // We couldn't normalize the provided value => return "undefined".
       return ConditionResult.UNDEFINED;
     }
 
@@ -396,8 +392,7 @@
     {
       try
       {
-        ByteString nv = matchingRule.normalizeAttributeValue(v);
-        if (matchingRule.compareValues(nv, normalizedValue) >= 0)
+        if (assertion.matches(matchingRule.normalizeAttributeValue(v)).toBoolean())
         {
           return ConditionResult.TRUE;
         }
@@ -405,7 +400,6 @@
       catch (Exception e)
       {
         logger.traceException(e);
-
         // We couldn't normalize one of the attribute values.
         // We will return "undefined" if we can't find a definite match
         result = ConditionResult.UNDEFINED;
@@ -418,43 +412,40 @@
 
 
   /**
-   * Indicates whether this virtual attribute provider will generate
-   * any value for the provided entry that is less than or equal to
-   * the given value.
+   * Indicates whether this virtual attribute provider will generate any value
+   * for the provided entry that is less than or equal to the given value.
    *
-   * @param  entry  The entry for which to make the determination.
-   * @param  rule   The virtual attribute rule which defines the
-   *                constraints for the virtual attribute.
-   * @param  value  The value for which to make the determination.
-   *
-   * @return  {@code UNDEFINED} if the associated attribute type does
-   *          not have an ordering matching rule, {@code TRUE} if at
-   *          least one of the generated values will be less than or
-   *          equal to the specified value, or {@code FALSE} if none
-   *          of the generated values will be greater than or equal to
-   *          the specified value.
+   * @param entry
+   *          The entry for which to make the determination.
+   * @param rule
+   *          The virtual attribute rule which defines the constraints for the
+   *          virtual attribute.
+   * @param assertionValue
+   *          The value for which to make the determination.
+   * @return {@code UNDEFINED} if the associated attribute type does not have an
+   *         ordering matching rule, {@code TRUE} if at least one of the
+   *         generated values will be less than or equal to the specified value,
+   *         or {@code FALSE} if none of the generated values will be greater
+   *         than or equal to the specified value.
    */
   public ConditionResult lessThanOrEqualTo(Entry entry,
                               VirtualAttributeRule rule,
-                              ByteString value)
+                              ByteString assertionValue)
   {
-    OrderingMatchingRule matchingRule =
-         rule.getAttributeType().getOrderingMatchingRule();
+    MatchingRule matchingRule = rule.getAttributeType().getOrderingMatchingRule();
     if (matchingRule == null)
     {
       return ConditionResult.UNDEFINED;
     }
 
-    ByteString normalizedValue;
+    Assertion assertion = null;
     try
     {
-      normalizedValue = matchingRule.normalizeAttributeValue(value);
+      assertion = matchingRule.getLessOrEqualAssertion(assertionValue);
     }
     catch (Exception e)
     {
       logger.traceException(e);
-
-      // We couldn't normalize the provided value => return "undefined".
       return ConditionResult.UNDEFINED;
     }
 
@@ -463,8 +454,7 @@
     {
       try
       {
-        ByteString nv = matchingRule.normalizeAttributeValue(v);
-        if (matchingRule.compareValues(nv, normalizedValue) <= 0)
+        if (assertion.matches(matchingRule.normalizeAttributeValue(v)).toBoolean())
         {
           return ConditionResult.TRUE;
         }
@@ -492,7 +482,7 @@
    * @param  entry  The entry for which to make the determination.
    * @param  rule   The virtual attribute rule which defines the
    *                constraints for the virtual attribute.
-   * @param  value  The value for which to make the determination.
+   * @param  assertionValue  The value for which to make the determination.
    *
    * @return  {@code UNDEFINED} if the associated attribute type does
    *          not have an approximate matching rule, {@code TRUE} if at
@@ -503,7 +493,7 @@
    */
   public ConditionResult approximatelyEqualTo(Entry entry,
                               VirtualAttributeRule rule,
-                              ByteString value)
+                              ByteString assertionValue)
   {
     MatchingRule matchingRule = rule.getAttributeType().getApproximateMatchingRule();
     if (matchingRule == null)
@@ -514,7 +504,7 @@
     Assertion assertion = null;
     try
     {
-      assertion = matchingRule.getAssertion(value);
+      assertion = matchingRule.getAssertion(assertionValue);
     }
     catch (Exception e)
     {
@@ -527,7 +517,10 @@
     {
       try
       {
-        result = assertion.matches(matchingRule.normalizeAttributeValue(v));
+        if  (assertion.matches(matchingRule.normalizeAttributeValue(v)).toBoolean())
+        {
+          return ConditionResult.TRUE;
+        }
       }
       catch (Exception e)
       {

--
Gitblit v1.10.0