csheets.core.formula.util
Class CircularReferenceFinder

java.lang.Object
  extended by csheets.core.formula.util.AbstractExpressionVisitor
      extended by csheets.core.formula.util.CircularReferenceFinder
All Implemented Interfaces:
ExpressionVisitor

public class CircularReferenceFinder
extends AbstractExpressionVisitor

An expression visitor that looks for circular references in a formula, i.e. a reference back to the cell in the formula of a cell that precedes it.

Author:
Einar Pehrson

Constructor Summary
CircularReferenceFinder()
          Creates a new circular reference finder.
 
Method Summary
 void check(Formula formula)
          Checks if the given formula has any circular references.
 Object visitReference(Reference reference)
          Checks if the given reference causes a circular reference.
 
Methods inherited from class csheets.core.formula.util.AbstractExpressionVisitor
visitBinaryOperation, visitFunctionCall, visitLiteral, visitUnaryOperation
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CircularReferenceFinder

public CircularReferenceFinder()
Creates a new circular reference finder.

Method Detail

check

public void check(Formula formula)
           throws CircularReferenceException
Checks if the given formula has any circular references.

Throws:
CircularReferenceException - if the formula contains any circular references

visitReference

public Object visitReference(Reference reference)
                      throws CircularReferenceException,
                             ExpressionVisitorException
Checks if the given reference causes a circular reference.

Specified by:
visitReference in interface ExpressionVisitor
Overrides:
visitReference in class AbstractExpressionVisitor
Parameters:
reference - the reference to visit
Returns:
an arbitrary object
Throws:
CircularReferenceException - if the given reference causes a circular reference
ExpressionVisitorException