public long maskLong()

in java/core/src/java/org/apache/orc/impl/mask/RedactMaskFactory.java [468:547]


  public long maskLong(long value) {

    /* check whether unmasking range provided */
    if (!unmaskIndexRanges.isEmpty()) {
      return maskLongWithUnmasking(value);
    }

    long base;
    if (DIGIT_REPLACEMENT == 0) {
      return 0;
    } else if (value >= 0) {
      base = 1;
    } else {
      base = -1;
      // make sure Long.MIN_VALUE doesn't overflow
      if (value == Long.MIN_VALUE) {
        value = Long.MAX_VALUE;
      } else {
        value = -value;
      }
    }
    if (value < 100_000_000L) {
      if (value < 10_000L) {
        if (value < 100L) {
          if (value < 10L) {
            base *= 1;
          } else {
            base *= 11;
          }
        } else if (value < 1_000L) {
          base *= 111;
        } else {
          base *= 1_111;
        }
      } else if (value < 1_000_000L) {
        if (value < 100_000L) {
          base *= 11_111;
        } else {
          base *= 111_111;
        }
      } else if (value < 10_000_000L) {
        base *= 1_111_111;
      } else {
        base *= 11_111_111;
      }
    } else if (value < 10_000_000_000_000_000L) {
      if (value < 1_000_000_000_000L) {
        if (value < 10_000_000_000L) {
          if (value < 1_000_000_000L) {
            base *= 111_111_111;
          } else {
            base *= 1_111_111_111;
          }
        } else if (value < 100_000_000_000L) {
          base *= 11_111_111_111L;
        } else {
          base *= 111_111_111_111L;
        }
      } else if (value < 100_000_000_000_000L) {
        if (value < 10_000_000_000_000L) {
          base *= 1_111_111_111_111L;
        } else {
          base *= 11_111_111_111_111L;
        }
      } else if (value < 1_000_000_000_000_000L) {
        base *= 111_111_111_111_111L;
      } else {
        base *= 1_111_111_111_111_111L;
      }
    } else if (value < 100_000_000_000_000_000L) {
      base *= 11_111_111_111_111_111L;
    // If the digit is 9, it would overflow at 19 digits, so use 18.
    } else if (value < 1_000_000_000_000_000_000L || DIGIT_REPLACEMENT == 9) {
      base *= 111_111_111_111_111_111L;
    } else {
      base *= 1_111_111_111_111_111_111L;
    }

    return DIGIT_REPLACEMENT * base;
  }