Examples of OSQLFilterCondition


Examples of com.orientechnologies.orient.core.sql.filter.OSQLFilterCondition

  @Override
  @SuppressWarnings("unchecked")
  protected boolean evaluateExpression(final ORecordInternal<?> iRecord, OSQLFilterCondition iCondition, final Object iLeft,
      final Object iRight) {
    final OSQLFilterCondition condition;

    if (iCondition.getLeft() instanceof OSQLFilterCondition)
      condition = (OSQLFilterCondition) iCondition.getLeft();
    else if (iCondition.getRight() instanceof OSQLFilterCondition)
      condition = (OSQLFilterCondition) iCondition.getRight();
    else
      condition = null;

    if (iLeft instanceof Collection<?>) {

      final Collection<ORecordSchemaAware<?>> collection = (Collection<ORecordSchemaAware<?>>) iLeft;

      if (condition != null) {
        // CHECK AGAINST A CONDITION
        for (ORecordSchemaAware<?> o : collection) {
          if ((Boolean) condition.evaluate(o) == Boolean.FALSE)
            return false;
        }
      } else {
        // CHECK AGAINST A SINGLE VALUE
        for (Object o : collection) {
          if (!OQueryOperatorEquals.equals(iRight, o))
            return false;
        }
      }
    } else if (iRight instanceof Collection<?>) {

      // CHECK AGAINST A CONDITION
      final Collection<ORecordSchemaAware<?>> collection = (Collection<ORecordSchemaAware<?>>) iRight;

      if (condition != null) {
        for (ORecordSchemaAware<?> o : collection) {
          if ((Boolean) condition.evaluate(o) == Boolean.FALSE)
            return false;
        }
      } else {
        // CHECK AGAINST A SINGLE VALUE
        for (Object o : collection) {
View Full Code Here

Examples of com.orientechnologies.orient.core.sql.filter.OSQLFilterCondition

  @Override
  @SuppressWarnings("unchecked")
  protected boolean evaluateExpression(final OIdentifiable iRecord, final OSQLFilterCondition iCondition, final Object iLeft,
      final Object iRight, OCommandContext iContext) {
    final OSQLFilterCondition condition;

    if (iCondition.getLeft() instanceof OSQLFilterCondition)
      condition = (OSQLFilterCondition) iCondition.getLeft();
    else if (iCondition.getRight() instanceof OSQLFilterCondition)
      condition = (OSQLFilterCondition) iCondition.getRight();
    else
      condition = null;

    if (iLeft.getClass().isArray()) {
      if (iRight.getClass().isArray()) {
        // ARRAY VS ARRAY
        int matches = 0;
        for (final Object l : (Object[]) iLeft) {
          for (final Object r : (Object[]) iRight) {
            if (OQueryOperatorEquals.equals(l, r)) {
              ++matches;
              break;
            }
          }
        }
        return matches == ((Object[]) iRight).length;
      } else if (iRight instanceof Collection<?>) {
        // ARRAY VS ARRAY
        int matches = 0;
        for (final Object l : (Object[]) iLeft) {
          for (final Object r : (Collection<?>) iRight) {
            if (OQueryOperatorEquals.equals(l, r)) {
              ++matches;
              break;
            }
          }
        }
        return matches == ((Collection<?>) iRight).size();
      }

    } else if (iLeft instanceof Collection<?>) {

      final Collection<ODocument> collection = (Collection<ODocument>) iLeft;

      if (condition != null) {
        // CHECK AGAINST A CONDITION
        for (final ODocument o : collection) {
          if ((Boolean) condition.evaluate(o, null, iContext) == Boolean.FALSE)
            return false;
        }
      } else {
        // CHECK AGAINST A SINGLE VALUE
        for (final Object o : collection) {
          if (!OQueryOperatorEquals.equals(iRight, o))
            return false;
        }
      }
    } else if (iRight instanceof Collection<?>) {

      // CHECK AGAINST A CONDITION
      final Collection<ODocument> collection = (Collection<ODocument>) iRight;

      if (condition != null) {
        for (final ODocument o : collection) {
          if ((Boolean) condition.evaluate(o, null, iContext) == Boolean.FALSE)
            return false;
        }
      } else {
        // CHECK AGAINST A SINGLE VALUE
        for (final Object o : collection) {
View Full Code Here

Examples of com.orientechnologies.orient.core.sql.filter.OSQLFilterCondition

  }

  @Override
  protected boolean evaluateExpression(final OIdentifiable iRecord, final OSQLFilterCondition iCondition, final Object iLeft,
      final Object iRight, final OCommandContext iContext) {
    final OSQLFilterCondition condition;
    final Object target;

    if (iCondition.getLeft() instanceof OSQLFilterCondition) {
      condition = (OSQLFilterCondition) iCondition.getLeft();
      target = iRight;
View Full Code Here

Examples of com.orientechnologies.orient.core.sql.filter.OSQLFilterCondition

  @Override
  @SuppressWarnings("unchecked")
  protected boolean evaluateExpression(final OIdentifiable iRecord, final OSQLFilterCondition iCondition, final Object iLeft,
      final Object iRight, OCommandContext iContext) {
    final OSQLFilterCondition condition;
    if (iCondition.getLeft() instanceof OSQLFilterCondition)
      condition = (OSQLFilterCondition) iCondition.getLeft();
    else if (iCondition.getRight() instanceof OSQLFilterCondition)
      condition = (OSQLFilterCondition) iCondition.getRight();
    else
      condition = null;

    if (iLeft instanceof Iterable<?>) {

      final Iterable<Object> iterable = (Iterable<Object>) iLeft;

      if (condition != null) {
        // CHECK AGAINST A CONDITION
        for (final Object o : iterable) {
          final OIdentifiable id;
          if (o instanceof OIdentifiable)
            id = (OIdentifiable) o;
          else if (o instanceof Map<?, ?>) {
            final Iterator<Object> iter = ((Map<?, Object>) o).values().iterator();
            final Object v = iter.hasNext() ? iter.next() : null;
            if (v instanceof OIdentifiable)
              id = (OIdentifiable) v;
            else
              // TRANSFORM THE ENTIRE MAP IN A DOCUMENT. PROBABLY HAS BEEN IMPORTED FROM JSON
              id = new ODocument((Map) o);

          } else if (o instanceof Iterable<?>) {
            final Iterator<OIdentifiable> iter = ((Iterable<OIdentifiable>) o).iterator();
            id = iter.hasNext() ? iter.next() : null;
          } else
            continue;

          if ((Boolean) condition.evaluate(id, null, iContext) == Boolean.TRUE)
            return true;
        }
      } else {
        // CHECK AGAINST A SINGLE VALUE
        for (final Object o : iterable) {
          if (OQueryOperatorEquals.equals(iRight, o))
            return true;
        }
      }
    } else if (iRight instanceof Iterable<?>) {

      // CHECK AGAINST A CONDITION
      final Iterable<OIdentifiable> iterable = (Iterable<OIdentifiable>) iRight;

      if (condition != null) {
        for (final OIdentifiable o : iterable) {
          if ((Boolean) condition.evaluate(o, null, iContext) == Boolean.TRUE)
            return true;
        }
      } else {
        // CHECK AGAINST A SINGLE VALUE
        for (final Object o : iterable) {
View Full Code Here

Examples of com.orientechnologies.orient.core.sql.filter.OSQLFilterCondition

          // BY RID
          value = OSQLHelper.getValue(compiledFilter.getRootCondition().getRight());

        } else if (compiledFilter.getRootCondition().getLeft() instanceof OSQLFilterCondition) {
          // KEY AND VALUE
          final OSQLFilterCondition leftCondition = (OSQLFilterCondition) compiledFilter.getRootCondition().getLeft();
          if (KEYWORD_KEY.equalsIgnoreCase(leftCondition.getLeft().toString()))
            key = getIndexKey(index.getDefinition(), leftCondition.getRight());

          final OSQLFilterCondition rightCondition = (OSQLFilterCondition) compiledFilter.getRootCondition().getRight();
          if (KEYWORD_RID.equalsIgnoreCase(rightCondition.getLeft().toString()))
            value = OSQLHelper.getValue(rightCondition.getRight());

        }

        final boolean result;
        if (value != VALUE_NOT_FOUND) {
View Full Code Here

Examples of com.orientechnologies.orient.core.sql.filter.OSQLFilterCondition

  @Override
  @SuppressWarnings("unchecked")
  protected boolean evaluateExpression(final OIdentifiable iRecord, final OSQLFilterCondition iCondition, final Object iLeft,
      final Object iRight, OCommandContext iContext) {
    final OSQLFilterCondition condition;
    if (iCondition.getLeft() instanceof OSQLFilterCondition)
      condition = (OSQLFilterCondition) iCondition.getLeft();
    else if (iCondition.getRight() instanceof OSQLFilterCondition)
      condition = (OSQLFilterCondition) iCondition.getRight();
    else
      condition = null;

    if (iLeft instanceof Map<?, ?>) {
      final Map<String, ?> map = (Map<String, ?>) iLeft;

      if (condition != null) {
        // CHECK AGAINST A CONDITION
        for (Object o : map.values()) {
          o = loadIfNeed(o);
          if ((Boolean) condition.evaluate((ODocument) o, null, iContext))
            return true;
        }
      } else
        return map.containsValue(iRight);

    } else if (iRight instanceof Map<?, ?>) {
      final Map<String, ?> map = (Map<String, ?>) iRight;

      if (condition != null)
        // CHECK AGAINST A CONDITION
        for (Object o : map.values()) {
          o = loadIfNeed(o);
          if ((Boolean) condition.evaluate((ODocument) o, null, iContext))
            return true;
          else
            return map.containsValue(iLeft);
        }
    }
View Full Code Here

Examples of com.orientechnologies.orient.core.sql.filter.OSQLFilterCondition

  protected ORID[] getRange() {
    final ORID beginRange;
    final ORID endRange;

    final OSQLFilterCondition rootCondition = compiledFilter == null ? null : compiledFilter.getRootCondition();
    if (compiledFilter == null || rootCondition == null) {
      if (request instanceof OSQLSynchQuery)
        beginRange = ((OSQLSynchQuery<ODocument>) request).getNextPageRID();
      else
        beginRange = null;
      endRange = null;
    } else {
      final ORID conditionBeginRange = rootCondition.getBeginRidRange();
      final ORID conditionEndRange = rootCondition.getEndRidRange();
      final ORID nextPageRid;

      if (request instanceof OSQLSynchQuery)
        nextPageRid = ((OSQLSynchQuery<ODocument>) request).getNextPageRID();
      else
View Full Code Here

Examples of com.orientechnologies.orient.core.sql.filter.OSQLFilterCondition

    return false;
  }

  private void mergeRangeConditionsToBetweenOperators(OSQLFilter filter) {
    OSQLFilterCondition condition = filter.getRootCondition();

    OSQLFilterCondition newCondition = convertToBetweenClause(condition);
    if (newCondition != null) {
      filter.setRootCondition(newCondition);
      metricRecorder.recordRangeQueryConvertedInBetween();
      return;
    }
View Full Code Here

Examples of com.orientechnologies.orient.core.sql.filter.OSQLFilterCondition

  private void mergeRangeConditionsToBetweenOperators(OSQLFilterCondition condition) {
    if (condition == null)
      return;

    OSQLFilterCondition newCondition;

    if (condition.getLeft() instanceof OSQLFilterCondition) {
      OSQLFilterCondition leftCondition = (OSQLFilterCondition) condition.getLeft();
      newCondition = convertToBetweenClause(leftCondition);

      if (newCondition != null) {
        condition.setLeft(newCondition);
        metricRecorder.recordRangeQueryConvertedInBetween();
      } else
        mergeRangeConditionsToBetweenOperators(leftCondition);
    }

    if (condition.getRight() instanceof OSQLFilterCondition) {
      OSQLFilterCondition rightCondition = (OSQLFilterCondition) condition.getRight();

      newCondition = convertToBetweenClause(rightCondition);
      if (newCondition != null) {
        condition.setRight(newCondition);
        metricRecorder.recordRangeQueryConvertedInBetween();
View Full Code Here

Examples of com.orientechnologies.orient.core.sql.filter.OSQLFilterCondition

    if (!(left instanceof OSQLFilterCondition))
      return null;

    String rightField;

    final OSQLFilterCondition rightCondition = (OSQLFilterCondition) right;
    final OSQLFilterCondition leftCondition = (OSQLFilterCondition) left;

    if (rightCondition.getLeft() instanceof OSQLFilterItemField && rightCondition.getRight() instanceof OSQLFilterItemField)
      return null;

    if (!(rightCondition.getLeft() instanceof OSQLFilterItemField) && !(rightCondition.getRight() instanceof OSQLFilterItemField))
      return null;

    if (leftCondition.getLeft() instanceof OSQLFilterItemField && leftCondition.getRight() instanceof OSQLFilterItemField)
      return null;

    if (!(leftCondition.getLeft() instanceof OSQLFilterItemField) && !(leftCondition.getRight() instanceof OSQLFilterItemField))
      return null;

    final List<Object> betweenBoundaries = new ArrayList<Object>();

    if (rightCondition.getLeft() instanceof OSQLFilterItemField) {
      OSQLFilterItemField itemField = (OSQLFilterItemField) rightCondition.getLeft();
      if (!itemField.isFieldChain())
        return null;

      if (itemField.getFieldChain().getItemCount() > 1)
        return null;

      rightField = itemField.getRoot();
      betweenBoundaries.add(rightCondition.getRight());
    } else if (rightCondition.getRight() instanceof OSQLFilterItemField) {
      OSQLFilterItemField itemField = (OSQLFilterItemField) rightCondition.getRight();
      if (!itemField.isFieldChain())
        return null;

      if (itemField.getFieldChain().getItemCount() > 1)
        return null;

      rightField = itemField.getRoot();
      betweenBoundaries.add(rightCondition.getLeft());
    } else
      return null;

    betweenBoundaries.add("and");

    String leftField;
    if (leftCondition.getLeft() instanceof OSQLFilterItemField) {
      OSQLFilterItemField itemField = (OSQLFilterItemField) leftCondition.getLeft();
      if (!itemField.isFieldChain())
        return null;

      if (itemField.getFieldChain().getItemCount() > 1)
        return null;

      leftField = itemField.getRoot();
      betweenBoundaries.add(leftCondition.getRight());
    } else if (leftCondition.getRight() instanceof OSQLFilterItemField) {
      OSQLFilterItemField itemField = (OSQLFilterItemField) leftCondition.getRight();
      if (!itemField.isFieldChain())
        return null;

      if (itemField.getFieldChain().getItemCount() > 1)
        return null;

      leftField = itemField.getRoot();
      betweenBoundaries.add(leftCondition.getLeft());
    } else
      return null;

    if (!leftField.equalsIgnoreCase(rightField))
      return null;

    final OQueryOperator rightOperator = ((OSQLFilterCondition) right).getOperator();
    final OQueryOperator leftOperator = ((OSQLFilterCondition) left).getOperator();

    if ((rightOperator instanceof OQueryOperatorMajor || rightOperator instanceof OQueryOperatorMajorEquals)
        && (leftOperator instanceof OQueryOperatorMinor || leftOperator instanceof OQueryOperatorMinorEquals)) {

      final OQueryOperatorBetween between = new OQueryOperatorBetween();

      if (rightOperator instanceof OQueryOperatorMajor)
        between.setLeftInclusive(false);

      if (leftOperator instanceof OQueryOperatorMinor)
        between.setRightInclusive(false);

      return new OSQLFilterCondition(new OSQLFilterItemField(this, leftField), between, betweenBoundaries.toArray());
    }

    if ((leftOperator instanceof OQueryOperatorMajor || leftOperator instanceof OQueryOperatorMajorEquals)
        && (rightOperator instanceof OQueryOperatorMinor || rightOperator instanceof OQueryOperatorMinorEquals)) {
      final OQueryOperatorBetween between = new OQueryOperatorBetween();

      if (leftOperator instanceof OQueryOperatorMajor)
        between.setLeftInclusive(false);

      if (rightOperator instanceof OQueryOperatorMinor)
        between.setRightInclusive(false);

      Collections.reverse(betweenBoundaries);

      return new OSQLFilterCondition(new OSQLFilterItemField(this, leftField), between, betweenBoundaries.toArray());

    }

    return null;
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.