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

dk.rode.thesis.visitor
Class LoggingVisitor

java.lang.Object
  extended by dk.rode.thesis.visitor.LoggingVisitor
All Implemented Interfaces:
SequenceTypeVisitor<Log>, SequenceValueVisitor<Log>, SequenceVisitor<Log>

@Participant(value="ConcreteVisitor")
public class LoggingVisitor
extends Object
implements SequenceValueVisitor<Log>, SequenceTypeVisitor<Log>

A logging visitor logs each visited sequence to a log supplied at execution time using a given sequence policy supplied at construction time.

It handles both value and type sequences.

A logging visitor does not accumulate information about the visited sequences.

Author:
Gunni Rode / rode.dk
See Also:
CountingVisitor, TypeVisitor, SimpleScanner

Field Summary
private  SequencePolicy policy
          The policy used to format visited sequences.
 
Constructor Summary
LoggingVisitor()
          No-arg constructor.
LoggingVisitor(SequencePolicy policy)
          Constructor.
 
Method Summary
 SequencePolicy getSequencePolicy()
          Return the currently used SequencePolicy by this log visitor to log each visited sequence.
 void setSequencePolicy(SequencePolicy policy)
          Sets the SequencePolicy to use by this log visitor to log each visited sequence to policy.
 String toString()
          Returns the string representation of this visitor.
 void visitComposite(CompositeSequence<?> sequence, Log out)
          Visits a composite sequence.
 void visitDateValued(Sequence<Date> sequence, Log out)
          Visits a sequence that delivers Date sequence values.
 void visitIntegerValued(Sequence<Integer> sequence, Log out)
          Visits a sequence that delivers Integer sequence values.
 void visitLongValued(Sequence<Long> sequence, Log out)
          Visits a sequence that delivers Long sequence values.
 void visitMemorizable(MemorizableSequence<?> sequence, Log out)
          Visits a memorizable sequence.
 void visitObservable(ObservableSequence<?,?,?> sequence, Log out)
          Visits an observable sequence.
 void visitReversible(ReversibleSequence<?> sequence, Log out)
          Visits a reversible sequence.
 void visitStateable(StateableSequence<?> sequence, Log out)
          Visits a stateable sequence.
 void visitStringValued(Sequence<? extends CharSequence> sequence, Log out)
          Visits a sequence that delivers any type of value that implements the CharSequence interface, including CharSequence it self.
 void visitUnknown(Sequence<?> sequence, Log out)
          Visits a sequence that cannot be visited by any other visitation methods declared by this visitor.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

policy

private SequencePolicy policy
The policy used to format visited sequences.

Can be null, i.e. default.

Constructor Detail

LoggingVisitor

public LoggingVisitor()
No-arg constructor.

The default policy is used to format visited sequences.


LoggingVisitor

public LoggingVisitor(SequencePolicy policy)
Constructor.

Parameters:
policy - The policy used to format visited sequences; can be null, i.e default.
Method Detail

getSequencePolicy

public SequencePolicy getSequencePolicy()
Return the currently used SequencePolicy by this log visitor to log each visited sequence.

Returns:
The used policy; null means default.
See Also:
setSequencePolicy(SequencePolicy)

setSequencePolicy

public void setSequencePolicy(SequencePolicy policy)
Sets the SequencePolicy to use by this log visitor to log each visited sequence to policy.

Parameters:
policy - The policy to use; can be null, which means default policy.
See Also:
getSequencePolicy()

toString

public String toString()
Returns the string representation of this visitor.

Overrides:
toString in class Object
Returns:
The string representation; never null.

visitComposite

public void visitComposite(CompositeSequence<?> sequence,
                           Log out)
Description copied from interface: SequenceTypeVisitor
Visits a composite sequence.

Specified by:
visitComposite in interface SequenceTypeVisitor<Log>
Parameters:
sequence - The composite sequence to visit; never null.
out - A visitor-specified argument, if any; nullability determined by the visitor implementation.

visitDateValued

public void visitDateValued(Sequence<Date> sequence,
                            Log out)
Description copied from interface: SequenceValueVisitor
Visits a sequence that delivers Date sequence values.

Specified by:
visitDateValued in interface SequenceValueVisitor<Log>
Parameters:
sequence - The sequence to visit; never null.
out - A visitor-specified argument, if any; nullability determined by the visitor implementation.

visitIntegerValued

public void visitIntegerValued(Sequence<Integer> sequence,
                               Log out)
Description copied from interface: SequenceValueVisitor
Visits a sequence that delivers Integer sequence values.

Specified by:
visitIntegerValued in interface SequenceValueVisitor<Log>
Parameters:
sequence - The sequence to visit; never null.
out - A visitor-specified argument, if any; nullability determined by the visitor implementation.

visitLongValued

public void visitLongValued(Sequence<Long> sequence,
                            Log out)
Description copied from interface: SequenceValueVisitor
Visits a sequence that delivers Long sequence values.

Specified by:
visitLongValued in interface SequenceValueVisitor<Log>
Parameters:
sequence - The sequence to visit; never null.
out - A visitor-specified argument, if any; nullability determined by the visitor implementation.

visitMemorizable

public void visitMemorizable(MemorizableSequence<?> sequence,
                             Log out)
Description copied from interface: SequenceTypeVisitor
Visits a memorizable sequence.

Specified by:
visitMemorizable in interface SequenceTypeVisitor<Log>
Parameters:
sequence - The memorizable sequence to visit; never null.
out - A visitor-specified argument, if any; nullability determined by the visitor implementation.

visitObservable

public void visitObservable(ObservableSequence<?,?,?> sequence,
                            Log out)
Description copied from interface: SequenceTypeVisitor
Visits an observable sequence.

Specified by:
visitObservable in interface SequenceTypeVisitor<Log>
Parameters:
sequence - The observable sequence to visit; never null.
out - A visitor-specified argument, if any; nullability determined by the visitor implementation.

visitReversible

public void visitReversible(ReversibleSequence<?> sequence,
                            Log out)
Description copied from interface: SequenceTypeVisitor
Visits a reversible sequence.

Specified by:
visitReversible in interface SequenceTypeVisitor<Log>
Parameters:
sequence - The reversible sequence to visit; never null.
out - A visitor-specified argument, if any; nullability determined by the visitor implementation.

visitStateable

public void visitStateable(StateableSequence<?> sequence,
                           Log out)
Description copied from interface: SequenceTypeVisitor
Visits a stateable sequence.

Specified by:
visitStateable in interface SequenceTypeVisitor<Log>
Parameters:
sequence - The stateable sequence to visit; never null.
out - A visitor-specified argument, if any; nullability determined by the visitor implementation.

visitStringValued

public void visitStringValued(Sequence<? extends CharSequence> sequence,
                              Log out)
Description copied from interface: SequenceValueVisitor
Visits a sequence that delivers any type of value that implements the CharSequence interface, including CharSequence it self.

Specified by:
visitStringValued in interface SequenceValueVisitor<Log>
Parameters:
sequence - The sequence to visit; never null.
out - A visitor-specified argument, if any; nullability determined by the visitor implementation.

visitUnknown

public void visitUnknown(Sequence<?> sequence,
                         Log out)
Description copied from interface: SequenceVisitor
Visits a sequence that cannot be visited by any other visitation methods declared by this visitor.

Specified by:
visitUnknown in interface SequenceVisitor<Log>
Parameters:
sequence - The sequence to visit; never null.
out - A visitor-specified argument, if any; nullability determined by the visitor implementation.

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.