org.acm.seguin.refactor.type
Class TypeChangeVisitor

java.lang.Object
  extended by org.acm.seguin.summary.TraversalVisitor
      extended by org.acm.seguin.refactor.type.TypeChangeVisitor
All Implemented Interfaces:
SummaryVisitor
Direct Known Subclasses:
EliminatePackageImportVisitor, MoveClassVisitor, RenameClassVisitor

public abstract class TypeChangeVisitor
extends TraversalVisitor

Scans through the summary objects to create a list of files that reference a particular class.

Author:
Chris Seguin

Constructor Summary
TypeChangeVisitor(ComplexTransform complex)
          Visitor for type changes
 
Method Summary
protected abstract  void addRenamingTransforms(ComplexTransform refactoring, FileSummary node, java.lang.String className)
          Gets the RenamingTransform
protected abstract  java.util.LinkedList getAppropriateClasses(FileSummary node)
          Gets the list of classes to iterate over
protected abstract  java.lang.String getCurrentPackage()
          Return the current package
protected abstract  TransformAST getFileSpecificTransform(FileSummary summary)
          Gets the File Specific Transform
protected abstract  java.io.File getNewFile(FileSummary node)
          Gets the reference to the file where the refactored output should be sent
protected abstract  AddImportTransform getNewImports(FileSummary node, java.lang.String className)
          Gets the New Imports transform
protected abstract  RemoveImportTransform getRemoveImportTransform(ImportSummary node)
          Gets the Remove Imports transform
protected  org.acm.seguin.refactor.type.State getState(boolean foundImport, FileSummary node, java.lang.String className)
          Returns the state object to be used to determine if the particular type we are deleting is present
protected  boolean preconditions(FileSummary summary)
          Checks any preconditions
 java.lang.Object visit(FieldAccessSummary node, java.lang.Object data)
          Visit a field access summary.
 java.lang.Object visit(FieldSummary node, java.lang.Object data)
          Visit a field summary.
 java.lang.Object visit(FileSummary node, java.lang.Object data)
          Visit a file summary.
 java.lang.Object visit(ImportSummary node, java.lang.Object data)
          Visit a import summary.
 java.lang.Object visit(LocalVariableSummary node, java.lang.Object data)
          Visit a local variable summary.
 java.lang.Object visit(MessageSendSummary node, java.lang.Object data)
          Visit a message send summary.
 java.lang.Object visit(MethodSummary node, java.lang.Object data)
          Visit a method summary.
 java.lang.Object visit(ParameterSummary node, java.lang.Object data)
          Visit a parameter summary.
 java.lang.Object visit(Summary node, java.lang.Object data)
          Visit a summary node.
 java.lang.Object visit(TypeDeclSummary node, java.lang.Object data)
          Visit a type declaration summary.
 java.lang.Object visit(TypeSummary node, java.lang.Object data)
          Visit a type summary.
 java.lang.Object visit(VariableSummary node, java.lang.Object data)
          Visit a variable summary.
 
Methods inherited from class org.acm.seguin.summary.TraversalVisitor
visit, visit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TypeChangeVisitor

public TypeChangeVisitor(ComplexTransform complex)
Visitor for type changes

Parameters:
complex - Description of Parameter
Method Detail

visit

public java.lang.Object visit(Summary node,
                              java.lang.Object data)
Visit a summary node. This is the default method.

Specified by:
visit in interface SummaryVisitor
Overrides:
visit in class TraversalVisitor
Parameters:
node - the summary that we are visiting
data - the data that was passed in
Returns:
the result

visit

public java.lang.Object visit(FileSummary node,
                              java.lang.Object data)
Visit a file summary.

Specified by:
visit in interface SummaryVisitor
Overrides:
visit in class TraversalVisitor
Parameters:
node - the summary that we are visiting
data - the data that was passed in
Returns:
the result

visit

public java.lang.Object visit(ImportSummary node,
                              java.lang.Object data)
Visit a import summary.

Specified by:
visit in interface SummaryVisitor
Overrides:
visit in class TraversalVisitor
Parameters:
node - the summary that we are visiting
data - the data that was passed in
Returns:
the result

visit

public java.lang.Object visit(TypeSummary node,
                              java.lang.Object data)
Visit a type summary.

Specified by:
visit in interface SummaryVisitor
Overrides:
visit in class TraversalVisitor
Parameters:
node - the summary that we are visiting
data - the data that was passed in
Returns:
the result

visit

public java.lang.Object visit(MethodSummary node,
                              java.lang.Object data)
Visit a method summary.

Specified by:
visit in interface SummaryVisitor
Overrides:
visit in class TraversalVisitor
Parameters:
node - the summary that we are visiting
data - the data that was passed in
Returns:
the result

visit

public java.lang.Object visit(FieldSummary node,
                              java.lang.Object data)
Visit a field summary.

Specified by:
visit in interface SummaryVisitor
Overrides:
visit in class TraversalVisitor
Parameters:
node - the summary that we are visiting
data - the data that was passed in
Returns:
the result

visit

public java.lang.Object visit(ParameterSummary node,
                              java.lang.Object data)
Visit a parameter summary.

Specified by:
visit in interface SummaryVisitor
Overrides:
visit in class TraversalVisitor
Parameters:
node - the summary that we are visiting
data - the data that was passed in
Returns:
the result

visit

public java.lang.Object visit(LocalVariableSummary node,
                              java.lang.Object data)
Visit a local variable summary.

Specified by:
visit in interface SummaryVisitor
Overrides:
visit in class TraversalVisitor
Parameters:
node - the summary that we are visiting
data - the data that was passed in
Returns:
the result

visit

public java.lang.Object visit(VariableSummary node,
                              java.lang.Object data)
Visit a variable summary.

Specified by:
visit in interface SummaryVisitor
Overrides:
visit in class TraversalVisitor
Parameters:
node - the summary that we are visiting
data - the data that was passed in
Returns:
the result

visit

public java.lang.Object visit(TypeDeclSummary node,
                              java.lang.Object data)
Visit a type declaration summary.

Specified by:
visit in interface SummaryVisitor
Overrides:
visit in class TraversalVisitor
Parameters:
node - the summary that we are visiting
data - the data that was passed in
Returns:
the result

visit

public java.lang.Object visit(MessageSendSummary node,
                              java.lang.Object data)
Visit a message send summary.

Specified by:
visit in interface SummaryVisitor
Overrides:
visit in class TraversalVisitor
Parameters:
node - the summary that we are visiting
data - the data that was passed in
Returns:
the result

visit

public java.lang.Object visit(FieldAccessSummary node,
                              java.lang.Object data)
Visit a field access summary.

Specified by:
visit in interface SummaryVisitor
Overrides:
visit in class TraversalVisitor
Parameters:
node - the summary that we are visiting
data - the data that was passed in
Returns:
the result

getState

protected org.acm.seguin.refactor.type.State getState(boolean foundImport,
                                                      FileSummary node,
                                                      java.lang.String className)
Returns the state object to be used to determine if the particular type we are deleting is present

Parameters:
foundImport - Description of Parameter
node - Description of Parameter
className - Description of Parameter
Returns:
The State value

getFileSpecificTransform

protected abstract TransformAST getFileSpecificTransform(FileSummary summary)
Gets the File Specific Transform

Parameters:
summary - Gets a file specific transform
Returns:
The FileSpecificTransform value

getNewImports

protected abstract AddImportTransform getNewImports(FileSummary node,
                                                    java.lang.String className)
Gets the New Imports transform

Parameters:
node - the file summary
className - the name of the class that is changing
Returns:
The NewImports value

getRemoveImportTransform

protected abstract RemoveImportTransform getRemoveImportTransform(ImportSummary node)
Gets the Remove Imports transform

Parameters:
node - the import summary
Returns:
The transform

getAppropriateClasses

protected abstract java.util.LinkedList getAppropriateClasses(FileSummary node)
Gets the list of classes to iterate over

Parameters:
node - the file summary
Returns:
The list

getNewFile

protected abstract java.io.File getNewFile(FileSummary node)
Gets the reference to the file where the refactored output should be sent

Parameters:
node - the files summary
Returns:
The NewFile value

getCurrentPackage

protected abstract java.lang.String getCurrentPackage()
Return the current package

Returns:
the current package of the class

preconditions

protected boolean preconditions(FileSummary summary)
Checks any preconditions

Parameters:
summary - Description of Parameter
Returns:
Description of the Returned Value

addRenamingTransforms

protected abstract void addRenamingTransforms(ComplexTransform refactoring,
                                              FileSummary node,
                                              java.lang.String className)
Gets the RenamingTransform

Parameters:
refactoring - the refactoring
node - the file summary to reference
className - the name of the class that is changing