jigcell.compare.transform
Class TransformContext

java.lang.Object
  extended by jigcell.compare.transform.TransformContext
All Implemented Interfaces:
ITransformContext

public final class TransformContext
extends java.lang.Object
implements ITransformContext

A default implementation of the runtime context for evaluating transforms.

This code is licensed under the DARPA BioCOMP Open Source License. See LICENSE for more details.

Author:
Nicholas Allen

Nested Class Summary
private  class TransformContext.ReaperReference
          Reference class for transforms that deletes the transform information from the context when the transform is reclaimed.
 
Field Summary
private static long anonymousCount
          Unique identifier counter
private  IEvaluationListener listener
          Listener for IProgrammableDataGenerator events
private  javax.swing.event.EventListenerList listenerList
          Manages listeners for this context
private static java.lang.ref.ReferenceQueue referenceQueue
          Reference queue for finding out that a registered transform has been collected
private  java.util.Map references
          Map[Reference,String] from references to registered transforms to registered names
private  java.util.Map registered
          Map[ITransform,String] from registered transforms to registered names
private static EDU.oswego.cs.dl.util.concurrent.ReadWriteLock registrationLock
          Lock for manipulating transform registration information
private  java.util.Map reverseRegistered
          Map[String,ITransform] from registered names to references to registered transforms
 
Constructor Summary
TransformContext()
          Creates a new evaluation context.
 
Method Summary
 void addEvaluationListener(IEvaluationListener listener)
          Adds a listener for all generators in this context.
 void addTransformEvaluationContextListener(ITransformContextListener listener)
          Adds a listener for this context.
private  void evaluationError(IProgrammableDataGenerator source, java.lang.Throwable t)
           
private  void evaluationStart(IProgrammableDataGenerator source)
           
private  void evaluationStop(IProgrammableDataGenerator source, IDataElement result)
           
 java.lang.String findNameForTransform(ITransform transform)
          The name this transform was registered with.
 ITransform findTransformForName(java.lang.String name)
          Finds a transform based on an evaluation name.
private  void fireTransformAdded(ITransform transform, java.lang.String name)
          Notifies listeners of a transform added event.
private  void fireTransformRemoved(ITransform transform, java.lang.String name)
          Notifies listeners of a transform removed event.
 java.util.Set getRegisteredNames()
          All registered transform names.
 java.util.Set getRegisteredTransforms()
          All registered transforms.
private static java.lang.String nextAnonymousId()
          Generates a unique identifier
private static void reaperReferenceRun()
          Removes unreachable transforms from contexts.
 java.lang.String registerTransform(ITransform transform)
          Gives a name to an anonymous transform.
 java.lang.String registerTransform(ITransform transform, java.lang.String name)
          Registers a transform so that it can later be identified by this context.
 void removeEvaluationListener(IEvaluationListener listener)
          Removes a listener for all generators in this context.
 void removeTransformEvaluationContextListener(ITransformContextListener listener)
          Removes a listener for this context.
 void unregisterTransform(ITransform transform)
          Unregisters a transform so that it can no longer be identified by this context.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

registrationLock

private static final EDU.oswego.cs.dl.util.concurrent.ReadWriteLock registrationLock
Lock for manipulating transform registration information


referenceQueue

private static final java.lang.ref.ReferenceQueue referenceQueue
Reference queue for finding out that a registered transform has been collected


anonymousCount

private static long anonymousCount
Unique identifier counter


listenerList

private final javax.swing.event.EventListenerList listenerList
Manages listeners for this context


listener

private final IEvaluationListener listener
Listener for IProgrammableDataGenerator events


references

private final java.util.Map references
Map[Reference,String] from references to registered transforms to registered names


registered

private final java.util.Map registered
Map[ITransform,String] from registered transforms to registered names


reverseRegistered

private final java.util.Map reverseRegistered
Map[String,ITransform] from registered names to references to registered transforms

Constructor Detail

TransformContext

public TransformContext()
Creates a new evaluation context.

Method Detail

nextAnonymousId

private static java.lang.String nextAnonymousId()
Generates a unique identifier


reaperReferenceRun

private static void reaperReferenceRun()
Removes unreachable transforms from contexts.


addEvaluationListener

public void addEvaluationListener(IEvaluationListener listener)
Adds a listener for all generators in this context.

Specified by:
addEvaluationListener in interface ITransformContext
Parameters:
listener - Listener

addTransformEvaluationContextListener

public void addTransformEvaluationContextListener(ITransformContextListener listener)
Adds a listener for this context.

Specified by:
addTransformEvaluationContextListener in interface ITransformContext
Parameters:
listener - Listener

findNameForTransform

public java.lang.String findNameForTransform(ITransform transform)
The name this transform was registered with. Returns null if the transform is not known.

Specified by:
findNameForTransform in interface ITransformContext
Parameters:
transform - Transform

findTransformForName

public ITransform findTransformForName(java.lang.String name)
Finds a transform based on an evaluation name. Returns null if no appropriate transform is known.

Specified by:
findTransformForName in interface ITransformContext
Parameters:
name - Name

getRegisteredNames

public java.util.Set getRegisteredNames()
All registered transform names.

Specified by:
getRegisteredNames in interface ITransformContext

getRegisteredTransforms

public java.util.Set getRegisteredTransforms()
All registered transforms.

Specified by:
getRegisteredTransforms in interface ITransformContext

registerTransform

public java.lang.String registerTransform(ITransform transform)
Gives a name to an anonymous transform.

Specified by:
registerTransform in interface ITransformContext
Parameters:
transform - Transform

registerTransform

public java.lang.String registerTransform(ITransform transform,
                                          java.lang.String name)
Registers a transform so that it can later be identified by this context. Renaming a transform invalidates all previously registered names for that transform.

Specified by:
registerTransform in interface ITransformContext
Parameters:
transform - Transform
name - Name

removeEvaluationListener

public void removeEvaluationListener(IEvaluationListener listener)
Removes a listener for all generators in this context.

Specified by:
removeEvaluationListener in interface ITransformContext
Parameters:
listener - Listener

removeTransformEvaluationContextListener

public void removeTransformEvaluationContextListener(ITransformContextListener listener)
Removes a listener for this context.

Specified by:
removeTransformEvaluationContextListener in interface ITransformContext
Parameters:
listener - Listener

unregisterTransform

public void unregisterTransform(ITransform transform)
Unregisters a transform so that it can no longer be identified by this context.

Specified by:
unregisterTransform in interface ITransformContext
Parameters:
transform - Transform

evaluationError

private void evaluationError(IProgrammableDataGenerator source,
                             java.lang.Throwable t)
See Also:
IEvaluationListener.evaluationError(jigcell.compare.IProgrammableDataGenerator,java.lang.Throwable)

evaluationStart

private void evaluationStart(IProgrammableDataGenerator source)
See Also:
IEvaluationListener.evaluationStart(jigcell.compare.IProgrammableDataGenerator)

evaluationStop

private void evaluationStop(IProgrammableDataGenerator source,
                            IDataElement result)
See Also:
IEvaluationListener.evaluationStop(jigcell.compare.IProgrammableDataGenerator,jigcell.compare.IDataElement)

fireTransformAdded

private void fireTransformAdded(ITransform transform,
                                java.lang.String name)
Notifies listeners of a transform added event.

Parameters:
transform - Transform
name - Name

fireTransformRemoved

private void fireTransformRemoved(ITransform transform,
                                  java.lang.String name)
Notifies listeners of a transform removed event.

Parameters:
transform - Transform
name - Name