Evaluating Software Design Patterns
— the "Gang of Four" patterns implemented in Java 6

dk.rode.thesis.builder
Class StandardComparableExpressionBuilder<E extends Comparable<? super E>>

java.lang.Object
  extended by dk.rode.thesis.builder.AbstractExpressionBuilder<E>
      extended by dk.rode.thesis.builder.StandardExpressionBuilder<E>
          extended by dk.rode.thesis.builder.StandardComparableExpressionBuilder<E>
Type Parameters:
E - The Comparable type of values the constructed expressions operate on and/or produces.
All Implemented Interfaces:
ComparableExpressionBuilder<E>, ExpressionBuilder<E>, Copyable<ExpressionBuilder<E>>, StrictCopyable<ExpressionBuilder<E>>

@Participant(value="ConcreteBuilder")
public class StandardComparableExpressionBuilder<E extends Comparable<? super E>>
extends StandardExpressionBuilder<E>
implements ComparableExpressionBuilder<E>

A comparable expression builder construct various Expression types having a Comparable bound on the value produced by the constructed expressions and on the expression operands used.

The constructed terminal expressions will all manipulate the same sequence instance.

A comparable expression builder uses a context to register all unique instances of constructed variables and store all created constants.

Author:
Gunni Rode / rode.dk

Field Summary
 
Fields inherited from class dk.rode.thesis.builder.AbstractExpressionBuilder
context, root, sequence
 
Constructor Summary
StandardComparableExpressionBuilder(Context context, Sequence<? extends E> sequence)
          Constructor.
StandardComparableExpressionBuilder(Sequence<? extends E> sequence)
          Constructor.
StandardComparableExpressionBuilder(StandardComparableExpressionBuilder<E> builder)
          Copy constructor.
 
Method Summary
 Expression<Boolean> buildGreaterThanExpression(Expression<E> first, Expression<E> second)
          Builds a new GREATER THAN expression.
 Expression<E> buildSetExpression(Expression<E> value)
          Builds a new SET expression.
 Expression<Boolean> buildSmallerThanExpression(Expression<E> first, Expression<E> second)
          Builds a new SMALLER THAN expression.
 StandardComparableExpressionBuilder<E> copy()
          Returns a deep copy of this object.
 
Methods inherited from class dk.rode.thesis.builder.StandardExpressionBuilder
buildAndExpression, buildAssignmentExpression, buildBreakExpression, buildConditionalExpression, buildCurrentExpression, buildEqualExpression, buildFlowExpression, buildInitialisedFlowExpression, buildNextExpression, buildNonShortCircuitAndExpression, buildNonShortCircuitOrExpression, buildNotExpression, buildOrExpression, buildResetExpression, buildReverseExpression
 
Methods inherited from class dk.rode.thesis.builder.AbstractExpressionBuilder
buildConstantExpression, buildExpression, buildVariableExpression, equals, getContext, getRootExpression, getSequence, hashCode, initialiseExpressions, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface dk.rode.thesis.builder.ExpressionBuilder
buildAndExpression, buildAssignmentExpression, buildBreakExpression, buildConditionalExpression, buildConstantExpression, buildCurrentExpression, buildEqualExpression, buildExpression, buildFlowExpression, buildInitialisedFlowExpression, buildNextExpression, buildNonShortCircuitAndExpression, buildNonShortCircuitOrExpression, buildNotExpression, buildOrExpression, buildResetExpression, buildReverseExpression, buildVariableExpression, getRootExpression, getSequence
 

Constructor Detail

StandardComparableExpressionBuilder

public StandardComparableExpressionBuilder(Context context,
                                           Sequence<? extends E> sequence)
Constructor.

The context supplied as context is used to register created variables and store constants.

Parameters:
context - The context to use; cannot be null.
sequence - The sequence to be manipulated by constructed terminal expressions; cannot be null.
Throws:
NullPointerException - If either argument is null.
See Also:
AbstractExpressionBuilder.getContext()

StandardComparableExpressionBuilder

public StandardComparableExpressionBuilder(Sequence<? extends E> sequence)
Constructor.

A local context is used to register created variables and store constants.

Parameters:
sequence - The sequence to be manipulated by constructed terminal expressions; cannot be null.
Throws:
NullPointerException - If sequence is null.
See Also:
AbstractExpressionBuilder.getContext()

StandardComparableExpressionBuilder

public StandardComparableExpressionBuilder(StandardComparableExpressionBuilder<E> builder)
Copy constructor.

The same context and sequence as used by builder will be used by this builder.

The root expression from builder is not copied. Hence, this builder is ready to construct new expressions, and return a unique root expression from AbstractExpressionBuilder.getRootExpression().

Parameters:
builder - The builder to copy; cannot be null.
Throws:
NullPointerException - If builder is null.
Method Detail

buildGreaterThanExpression

public Expression<Boolean> buildGreaterThanExpression(Expression<E> first,
                                                      Expression<E> second)
Description copied from interface: ComparableExpressionBuilder
Builds a new GREATER THAN expression.

Specified by:
buildGreaterThanExpression in interface ComparableExpressionBuilder<E extends Comparable<? super E>>
Parameters:
first - The first expression operand; cannot be null.
second - The second expression operand; cannot be null.
Returns:
The constructed expression; never null.

buildSetExpression

public Expression<E> buildSetExpression(Expression<E> value)
Description copied from interface: ComparableExpressionBuilder
Builds a new SET expression.

Specified by:
buildSetExpression in interface ComparableExpressionBuilder<E extends Comparable<? super E>>
Parameters:
value - The expression that will determine the sequence value to fast-forward to for the sequence when the constructed expression is evaluated.
Returns:
The constructed expression; never null.

buildSmallerThanExpression

public Expression<Boolean> buildSmallerThanExpression(Expression<E> first,
                                                      Expression<E> second)
Description copied from interface: ComparableExpressionBuilder
Builds a new SMALLER THAN expression.

Specified by:
buildSmallerThanExpression in interface ComparableExpressionBuilder<E extends Comparable<? super E>>
Parameters:
first - The first expression operand; cannot be null.
second - The second expression operand; cannot be null.
Returns:
The constructed expression; never null.

copy

public StandardComparableExpressionBuilder<E> copy()
Description copied from interface: Copyable
Returns a deep copy of this object.

Specified by:
copy in interface Copyable<ExpressionBuilder<E extends Comparable<? super E>>>
Overrides:
copy in class StandardExpressionBuilder<E extends Comparable<? super E>>
Returns:
The copy; never null.

Gunni Rode / rode.dk

Feel free to use and/or modify the Java 6 source code developed for this thesis AT YOUR OWN RISK, but note that the source code comes WITHOUT ANY — and I do mean WITHOUT ANY — form of warranty WHAT SO EVER!

The original thesis and source code are available at rode.dk/thesis.