Beispiel #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;
  }
Beispiel #2
0
  @Override
  public Object setArgument(Object obj) throws PageException {
    if (obj == this) return obj;

    if (Decision.isStruct(obj)) {
      clear(); // TODO bessere impl. anstelle vererbung wrao auf struct
      Struct sct = Caster.toStruct(obj);
      Iterator<Key> it = sct.keyIterator();
      Key key;
      while (it.hasNext()) {
        key = it.next();
        setEL(key, sct.get(key, null));
      }
      return obj;
    }
    throw new ExpressionException("can not overwrite arguments scope");
  }