Class ChildExpressionBuilder<P extends Builder<?>>

  • Type Parameters:
    P - parent builder
    All Implemented Interfaces:
    Builder<Expression>
    Direct Known Subclasses:
    FunctionBuilder.ParamBuilder

    public class ChildExpressionBuilder<P extends Builder<?>>
    extends ExpressionBuilder
    Child expression builder; suitable for use collecting function parameters and binary expression arguments.

    This builder is designed to be "chained" from a parent builder; you may return to the parent builder at any time by calling end().

    • Field Detail

      • parent

        protected P extends Builder<?> parent
    • Constructor Detail

      • ChildExpressionBuilder

        public ChildExpressionBuilder​(P parent)
      • ChildExpressionBuilder

        public ChildExpressionBuilder​(P parent,
                                      Expression expr1)
    • Method Detail

      • reset

        public ChildExpressionBuilder<P> reset​(Expression original)
        Description copied from interface: Builder
        Configure the Builder to produce a copy of the provided original.
        Specified by:
        reset in interface Builder<P extends Builder<?>>
        Overrides:
        reset in class ExpressionBuilder
        Parameters:
        original - Original, if null this will behave the same as unset()
        Returns:
        Builder configured to produce the provided original
      • unset

        public ChildExpressionBuilder<P> unset()
        Description copied from interface: Builder
        Configure the Builder to produce null.

        This method allows a Builder to be used as a placeholder; in its unset state the build() method will produce null. If any of the builder methods are used the builder will produce a result.

        Specified by:
        unset in interface Builder<P extends Builder<?>>
        Overrides:
        unset in class ExpressionBuilder
        Returns:
        Builder configured to build null
      • build

        public Expression build()
        Build the parameter; adding it to the parent.

        When using this from another builder you may wish to override the this build() method as shown below:

         final Expression array[] = ...
         ChildExpressionBuilder first = new ChildExpressionBuilder<?>(this) {
              public Expression build() {
                  array[0] = super.build();
                  return array[0];
              }
          };
         }
         
        Specified by:
        build in interface Builder<P extends Builder<?>>
        Overrides:
        build in class ExpressionBuilder
        Returns:
        internal expression
      • end

        public P end()
        Build the expression and return to the parent builder.

        Example use:b.add().expr1().literal(1).end().expr2().literal(2).end().build();

        See Also:
        _build()
      • literal

        public P literal​(Object obj)
        Inline literal value.

        Example:b.literal( 1 );

        Overrides:
        literal in class ExpressionBuilder
        Parameters:
        obj - Object to use as the resulting literal