Пример #1
0
  @Override
  public boolean insert(int index, String key, Object value) throws ExpressionException {
    int len = size();
    if (index < 1 || index > len)
      throw new ExpressionException(
          "invalid index to insert a value to argument scope",
          len == 0
              ? "can't insert in a empty argument scope"
              : "valid index goes from 1 to " + (len - 1));

    // remove all upper
    LinkedHashMap lhm = new LinkedHashMap();
    Collection.Key[] keys = keys();

    Collection.Key k;
    for (int i = 1; i <= keys.length; i++) {
      if (i < index) continue;
      k = keys[i - 1];
      lhm.put(k.getString(), get(k, null));
      removeEL(k);
    }

    // set new value
    setEL(key, value);

    // reset upper values
    Iterator it = lhm.entrySet().iterator();
    Map.Entry entry;
    while (it.hasNext()) {
      entry = (Entry) it.next();
      setEL(KeyImpl.toKey(entry.getKey()), entry.getValue());
    }
    return true;
  }