Пример #1
0
 private void fillValueWithMetadata(
     final TemplateTree tree,
     final ValueNode root,
     final Object metadata,
     final Map<String, Set<Object>> excluded,
     final boolean prune,
     final boolean overwrite)
     throws ParseException {
   final List<ValueNode> children = new ArrayList<>(root.children);
   for (ValueNode node : children) {
     final ValueNode origNode = new ValueNode(node);
     final Object obj = getValue(node, metadata, excluded, overwrite);
     if (obj instanceof Collection && !((Collection) obj).isEmpty()) {
       final Iterator it = ((Collection) obj).iterator();
       int i = node.ordinal;
       while (it.hasNext()) {
         Object child = it.next();
         node = tree.duplicateNode(origNode, i);
         if (node.isField()) {
           node.value = valueToString(node, child, !prune, overwrite);
         } else {
           fillValueWithMetadata(tree, node, child, excluded, prune, overwrite);
         }
         i++;
       }
     } else {
       if (node.isField()) {
         node.value = valueToString(node, obj, !prune, overwrite);
       } else {
         fillValueWithMetadata(tree, node, obj, excluded, prune, overwrite);
       }
     }
   }
 }
Пример #2
0
  public boolean isTrue(Env env) throws EvaluationError {
    int leftVal = left.value(env);
    int rightVal = right.value(env);

    switch (op) {
      case '<':
        return leftVal < rightVal;

      case '>':
        return leftVal > rightVal;

      case '=':
        return leftVal == rightVal;
      default:
        throw new EvaluationError(String.format("Invalid operator %c", op));
    }
  }
Пример #3
0
 private ValueNode extractSubTreeFromMetadata(
     final ValueNode root, final Object metadata, final Map<String, Set<Object>> excluded)
     throws ParseException {
   if (root.isField()) {
     root.value = valueToString(root, metadata, false, false);
     return root;
   }
   final List<ValueNode> children = new ArrayList<>(root.children);
   for (ValueNode node : children) {
     final ValueNode origNode = new ValueNode(node);
     final Object obj = getValue(node, metadata, excluded, false);
     if (obj instanceof Collection && !((Collection) obj).isEmpty()) {
       final Iterator it = ((Collection) obj).iterator();
       int i = node.ordinal;
       boolean first = true;
       while (it.hasNext()) {
         Object child = it.next();
         if (!first) {
           node = new ValueNode(origNode, root, i);
         }
         if (node.isField()) {
           node.value = valueToString(node, child, false, false);
         } else {
           extractSubTreeFromMetadata(node, child, excluded);
         }
         first = false;
         i++;
       }
     } else {
       if (node.isField()) {
         node.value = valueToString(node, obj, false, false);
       } else {
         extractSubTreeFromMetadata(node, obj, excluded);
       }
     }
   }
   return root;
 }