Package com.firefly.template.exception

Examples of com.firefly.template.exception.ExpressionError


          if (left.type == STRING || right.type == STRING) {
            ret.type = STRING;
            if (f.value.equals("+")) {
              ret.value = getStringArithmeticResult(left, right);
            } else {
              throw new ExpressionError("The operation is not supported: " + left.type + " " + f.value + " " + right.type);
            }
          } else if (left.type == DOUBLE || right.type == DOUBLE) {
            ret.type = DOUBLE;
            ret.value = getFloatArithmeticResult(left, right, f.value, false);
          } else if (left.type == FLOAT || right.type == FLOAT) {
            ret.type = FLOAT;
            ret.value = getFloatArithmeticResult(left, right, f.value, true);
          } else if (left.type == LONG || right.type == LONG) {
            ret.type = LONG;
            ret.value = getIntegerArithmeticResult(left, right, f.value, false);
          } else if (left.type == INTEGER || right.type == INTEGER) {
            ret.type = INTEGER;
            ret.value = getIntegerArithmeticResult(left, right, f.value, true);
          } else {
            if (f.value.equals("+")) {
              ret.type = STRING;
              ret.value = getStringArithmeticResult(left, right);
            } else if (f.value.equals("/")) {
              ret.type = DOUBLE;
              ret.value = getFloatArithmeticResult(left, right, f.value, false);
            } else {
              ret.type = LONG;
              ret.value = getIntegerArithmeticResult(left, right, f.value, false);
            }
          }
          break;
        case LOGICAL_OPERATOR:
          ret.type = BOOLEAN;
          ret.value = getLogicalResult(left, right, f.value);
          if (ret.value == null)
            throw new ExpressionError("The operation is not supported: " + left.type + " " + f.value + " " + right.type);
          break;
        case ARITHMETIC_OR_LOGICAL_OPERATOR:
          if (left.type == LONG || right.type == LONG) {
            ret.type = LONG;
            ret.value = getIntegerArithmeticResult(left, right, f.value, false);
          } else if (left.type == INTEGER || right.type == INTEGER) {
            ret.type = INTEGER;
            ret.value = getIntegerArithmeticResult(left, right, f.value, true);
          } else {
            ret.type = BOOLEAN;
            ret.value = getLogicalResult(left, right, f.value);
          }
          if (ret.value == null)
            throw new ExpressionError("The operation is not supported: " + left.type + " " + f.value + " " + right.type);
          break;
        case CONDITIONAL_OPERATOR:
          ret.type = BOOLEAN;
          if (f.value.equals("==") || f.value.equals("!=")) {
            ret.value = getEqResult(left, right, f.value);
          } else {
            if (left.type == DOUBLE || right.type == DOUBLE) {
              ret.value = getFloatArithmeticResult(left, right, f.value, false);
            } else if (left.type == FLOAT || right.type == FLOAT) {
              ret.value = getFloatArithmeticResult(left, right, f.value, true);
            } else if (left.type == LONG || right.type == LONG) {
              ret.value = getIntegerArithmeticResult(left, right, f.value, false);
            } else if (left.type == INTEGER || right.type == INTEGER) {
              ret.value = getIntegerArithmeticResult(left, right, f.value, true);
            } else if (left.type == VARIABLE && right.type == VARIABLE) {
              left.value = getVariable(left.value, "Comparable");
              right.value = right.type == VARIABLE ? getVariable(right.value, "Comparable") : right.value;
              ret.value = left.value + ".compareTo(" + right.value + ") " + f.value + " 0";
            } else {
              throw new ExpressionError(left.type + " and " + right.type + " ​​can not do arithmetic.");
            }
          }
          break;
        default:
          throw new ExpressionError("The operation is not supported: " + left.value + " " + f.value + " " + right.value);
        }
        d.push(ret);
      } else {
        d.push(f);
      }
    }
    if (d.size() != 1)
      throw new ExpressionError("RPN error: " + content);
    return d.pop().value;
  }
View Full Code Here


    StringBuilder ret = new StringBuilder();
    int start = var.indexOf("${") + 2;
    int end = var.indexOf('}');
    ret.append(var.substring(0, start - 2)).append("objNav.get" + t + "(model ,\"" + var.substring(start, end) + "\")");
    if (end < var.length() - 1)
      throw new ExpressionError("Variable format error: " + var);
    return ret.toString();
  }
View Full Code Here

    StringBuilder ret = new StringBuilder();
    int start = var.indexOf("${") + 2;
    int end = var.indexOf('}');
    ret.append(var.substring(0, start - 2)).append("objNav.find(model ,\"" + var.substring(start, end) + "\")");
    if (end < var.length() - 1)
      throw new ExpressionError("Variable format error: " + var);
    return ret.toString();
  }
View Full Code Here

      if (s.length() == 2 && s.charAt(1) == '=')
        ret = String.valueOf(isFloat ? l <= r : l0 <= r0);
      else if (s.length() == 1)
        ret = String.valueOf(isFloat ? l < r : l0 < r0);
      else
        throw new ExpressionError("The operation is not supported: " + lf.type + " " + s + " " + rf.type);
      break;
    case '>':
      if (s.length() == 2 && s.charAt(1) == '=')
        ret = String.valueOf(isFloat ? l >= r : l0 >= r0);
      else if (s.length() == 1)
        ret = String.valueOf(isFloat ? l > r : l0 > r0);
      else
        throw new ExpressionError("The operation is not supported: " + lf.type + " " + s + " " + rf.type);
      break;
    default:
      throw new ExpressionError("The operation is not supported: " + lf.type + " " + s + " " + rf.type);
    }
    return ret;
  }
View Full Code Here

      else if (s.length() == 2 && s.charAt(1) == '<')
        ret = String.valueOf(isInteger ? l << r : l0 << r0);
      else if (s.length() == 1)
        ret = String.valueOf(isInteger ? l < r : l0 < r0);
      else
        throw new ExpressionError("The operation is not supported: "
            + lf.type + " " + s + " " + rf.type);
      break;
    case '>':
      if (s.length() == 3 && s.charAt(1) == '>' && s.charAt(2) == '>')
        ret = String.valueOf(isInteger ? l >>> r : l0 >>> r0);
      else if (s.length() == 2 && s.charAt(1) == '>')
        ret = String.valueOf(isInteger ? l >> r : l0 >> r0);
      else if (s.length() == 2 && s.charAt(1) == '=')
        ret = String.valueOf(isInteger ? l >= r : l0 >= r0);
      else if (s.length() == 1)
        ret = String.valueOf(isInteger ? l > r : l0 > r0);
      else
        throw new ExpressionError("The operation is not supported: "
            + lf.type + " " + s + " " + rf.type);
      break;
    case '&':
      ret = String.valueOf(isInteger ? l & r : l0 & r0);
      break;
    case '|':
      ret = String.valueOf(isInteger ? l | r : l0 | r0);
      break;
    case '^':
      ret = String.valueOf(isInteger ? l ^ r : l0 ^ r0);
      break;
    default:
      throw new ExpressionError("The operation is not supported: "
          + lf.type + " " + s + " " + rf.type);
    }
    return ret;
  }
View Full Code Here

TOP

Related Classes of com.firefly.template.exception.ExpressionError

Copyright © 2018 www.massapicom. 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.