All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.aliyun.odps.table.optimizer.predicate.BinaryPredicate Maven / Gradle / Ivy

The newest version!
package com.aliyun.odps.table.optimizer.predicate;

import java.io.Serializable;

/**
 * @author dingxin ([email protected])
 */
public class BinaryPredicate extends Predicate {

  public enum Operator {
    /**
     * 二元运算操作符
     */
    EQUALS("="),
    NOT_EQUALS("!="),
    GREATER_THAN(">"),
    LESS_THAN("<"),
    GREATER_THAN_OR_EQUAL(">="),
    LESS_THAN_OR_EQUAL("<=");

    private final String description;

    Operator(String description) {
      this.description = description;
    }

    public String getDescription() {
      return description;
    }
  }

  private final Operator operator;
  private final Serializable leftOperand;
  private final Serializable rightOperand;

  public BinaryPredicate(Operator operator, Serializable leftOperand, Serializable rightOperand) {
    super(PredicateType.BINARY);
    this.operator = operator;
    this.leftOperand = leftOperand;
    this.rightOperand = rightOperand;
  }

  public static BinaryPredicate equals(Serializable leftOperand, Serializable rightOperand) {
    return new BinaryPredicate(Operator.EQUALS, leftOperand, rightOperand);
  }

  public static BinaryPredicate notEquals(Serializable leftOperand, Serializable rightOperand) {
    return new BinaryPredicate(Operator.NOT_EQUALS, leftOperand, rightOperand);
  }

  public static BinaryPredicate greaterThan(Serializable leftOperand, Serializable rightOperand) {
    return new BinaryPredicate(Operator.GREATER_THAN, leftOperand, rightOperand);
  }

  public static BinaryPredicate lessThan(Serializable leftOperand, Serializable rightOperand) {
    return new BinaryPredicate(Operator.LESS_THAN, leftOperand, rightOperand);
  }

  public static BinaryPredicate greaterThanOrEqual(Serializable leftOperand,
                                                   Serializable rightOperand) {
    return new BinaryPredicate(Operator.GREATER_THAN_OR_EQUAL, leftOperand, rightOperand);
  }

  public static BinaryPredicate lessThanOrEqual(Serializable leftOperand,
                                                Serializable rightOperand) {
    return new BinaryPredicate(Operator.LESS_THAN_OR_EQUAL, leftOperand, rightOperand);
  }

  public Operator getOperator() {
    return operator;
  }

  public Object getLeftOperand() {
    return leftOperand;
  }

  public Object getRightOperand() {
    return rightOperand;
  }

  @Override
  public String toString() {
    return leftOperand.toString() + " " + operator.getDescription() + " " + rightOperand.toString();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy