Package com.firefly.template.exception

Examples of com.firefly.template.exception.ExpressionError


    int listOrMapPrefixIndex = element.indexOf('[');
    if (listOrMapPrefixIndex > 0) { // map or list or array
      int listOrMapSuffixIndex = element.indexOf(']',
          listOrMapPrefixIndex);
      if (listOrMapSuffixIndex != element.length() - 1)
        throw new ExpressionError("list or map expression error: "
            + element);

      String keyEl = element.substring(listOrMapPrefixIndex + 1,
          listOrMapSuffixIndex);
      String p = element.substring(0, listOrMapPrefixIndex);
      Object obj = root ? ((Model) current).get(p)
          : getObjectProperty(current, p);

      if (isMapKey(keyEl)) { // map
        if ((obj instanceof Map))
          return ((Map<?, ?>) obj).get(keyEl.substring(1,
              keyEl.length() - 1));
      } else { // list or array
        int index = Integer.parseInt(keyEl);
        if ((obj instanceof List))
          return ((List<?>) obj).get(index);
        if (obj.getClass().isArray())
          return Array.get(obj, index);
      }
    } else if (listOrMapPrefixIndex < 0) { // object
      return root ? ((Model) current).get(element)
          : getObjectProperty(current, element);
    } else {
      throw new ExpressionError("expression error: " + element);
    }
    return null;
  }
View Full Code Here


    int listOrMapPrefixIndex = element.indexOf('[');
    if (listOrMapPrefixIndex > 0) { // map or list or array
      int listOrMapSuffixIndex = element.indexOf(']',
          listOrMapPrefixIndex);
      if (listOrMapSuffixIndex != element.length() - 1)
        throw new ExpressionError("list or map expression error: "
            + element);

      String keyEl = element.substring(listOrMapPrefixIndex + 1,
          listOrMapSuffixIndex);
      String p = element.substring(0, listOrMapPrefixIndex);
      Object obj = root ? ((Model) current).get(p) : getObjectProperty(
          current, p);

      if (isMapKey(keyEl)) { // map
        if ((obj instanceof Map))
          return ((Map<?, ?>) obj).get(keyEl.substring(1,
              keyEl.length() - 1));
      } else { // list or array
        int index = Integer.parseInt(keyEl);
        if ((obj instanceof List))
          return ((List<?>) obj).get(index);
        else
          return getArrayObject(obj, index);
      }
    } else if (listOrMapPrefixIndex < 0) { // object
      return root ? ((Model) current).get(element) : getObjectProperty(
          current, element);
    } else {
      throw new ExpressionError("expression error: " + element);
    }
    return null;
  }
View Full Code Here

                        right.value.length() - 1)
                    + "\"";
              else
                ret.value = left.value + " + " + right.value;
            } 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 {
            throw new ExpressionError(left.type + " and "
                + right.type + " ​​can not do arithmetic.");
          }
          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 {
              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

    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

    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

        if(end == 'l' || end == 'L')
          f.value = f.value.substring(0, f.value.length() - 1);
      } else if(f.value.equals("null")) {
        f.type = Type.NULL;
      } else
        throw new ExpressionError("Can not determine the type: " + f.value);
     
      list.add(f);
    }
    pre.delete(0, pre.length());
  }
View Full Code Here

          ret = getArrayObject(obj, index);
      }
     
      if (listOrMapSuffixIndex != element.length() - 1) {
        if(element.charAt(listOrMapSuffixIndex + 1) != '[')
          throw new ExpressionError("list or map expression error: " + element);
       
        return getObject(ret, element.substring(listOrMapSuffixIndex + 1));
      }
      return ret;
    } else if (listOrMapPrefixIndex < 0) { // object
      return root ? ((Model) current).get(element) : getObjectProperty(current, element);
    } else if (listOrMapPrefixIndex == 0) { // map['foo']['bar']['hello']
      int listOrMapSuffixIndex = element.indexOf(']', listOrMapPrefixIndex);
      String keyEl = element.substring(listOrMapPrefixIndex + 1, listOrMapSuffixIndex);
     
      Object ret = null;
     
      if (isStringKey(keyEl)) {
        if (current instanceof Map)
          ret = ((Map<?, ?>) current).get(keyEl.substring(1, keyEl.length() - 1));
      } else { // list or array
        int index = Integer.parseInt(keyEl);
        if (current instanceof List)
          ret = ((List<?>) current).get(index);
        else if (current instanceof Map)
          ret = ((Map<?, ?>) current).get(index);
        else
          ret = getArrayObject(current, index);
      }
     
      if (listOrMapSuffixIndex != element.length() - 1) {
        if(element.charAt(listOrMapSuffixIndex + 1) != '[')
          throw new ExpressionError("list or map expression error: " + element);
       
        return getObject(ret, element.substring(listOrMapSuffixIndex + 1));
      }
      return ret;
    } else {
      throw new ExpressionError("expression error: " + element);
    }
  }
View Full Code Here

        if(end == 'l' || end == 'L')
          f.value = f.value.substring(0, f.value.length() - 1);
      } else if(f.value.equals("null")) {
        f.type = Type.NULL;
      } else
        throw new ExpressionError("Can not determine the type: " + f.value);
     
      list.add(f);
    }
    pre.delete(0, pre.length());
  }
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.