Class BasicRefactoringTool

  • Direct Known Subclasses:
    DefaultBasicRefactoringTool, EclipseLinkBasicRefactoringTool

    public abstract class BasicRefactoringTool
    extends AbstractRefactoringTool
    The abstract implementation providing refactoring support for JPQL queries. This version does not change the query but rather gather the changes in RefactoringDelta and it is the responsibility of the invoker to the actual change.

    Provisional API: This interface is part of an interim API that is still under development and expected to change significantly before reaching stability. It is available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.

    Version:
    2.6
    See Also:
    DefaultBasicRefactoringTool, EclipseLinkBasicRefactoringTool
    Author:
    Pascal Filion
    Since:
    2.4
    • Constructor Detail

      • BasicRefactoringTool

        protected BasicRefactoringTool​(java.lang.CharSequence jpqlQuery,
                                       JPQLGrammar jpqlGrammar,
                                       IManagedTypeProvider managedTypeProvider)
        Creates a new BasicRefactoringTool.
        Parameters:
        jpqlQuery - The JPQL query to manipulate
        jpqlGrammar - The JPQLGrammar that was used to parse the JPQL query
        managedTypeProvider - The external form of a provider that gives access to the JPA metadata
      • BasicRefactoringTool

        protected BasicRefactoringTool​(java.lang.CharSequence jpqlFragment,
                                       JPQLGrammar jpqlGrammar,
                                       IManagedTypeProvider managedTypeProvider,
                                       java.lang.String jpqlQueryBNFId)
        Creates a new BasicRefactoringTool.
        Parameters:
        jpqlFragment - The JPQL query to manipulate or a single JPQL fragment, which is parsed using the JPQL query BNF identifier by the given ID
        jpqlGrammar - The JPQLGrammar that was used to parse the JPQL fragment
        managedTypeProvider - The external form of a provider that gives access to the JPA metadata
        jpqlQueryBNFId - The unique identifier of the JPQLQueryBNF that determines how to parse the JPQL fragment
    • Method Detail

      • buildAttributeNameRenamer

        protected BasicRefactoringTool.AttributeNameRenamer buildAttributeNameRenamer​(java.lang.String typeName,
                                                                                      java.lang.String oldAttributeName,
                                                                                      java.lang.String newAttributeName)
        Creates the visitor that will traverse the representation of the JPQL query and will rename a type's attribute name.
        Parameters:
        typeName - The fully qualified name of the type that got one of its attributes renamed
        oldAttributeName - The current name of the attribute to rename
        newAttributeName - The new name of the attribute
        Returns:
        A new BasicRefactoringTool.AttributeNameRenamer
      • buildClassNameRenamer

        protected BasicRefactoringTool.ClassNameRenamer buildClassNameRenamer​(java.lang.String oldClassName,
                                                                              java.lang.String newClassName)
        Creates the visitor that will traverse the representation of the JPQL query and will rename the fully qualified class name.
        Parameters:
        oldClassName - The current name of the class to rename
        newClassName - The new name of the class
        Returns:
        A new BasicRefactoringTool.ClassNameRenamer
      • buildEntityNameRenamer

        protected BasicRefactoringTool.EntityNameRenamer buildEntityNameRenamer​(java.lang.String oldEntityName,
                                                                                java.lang.String newEntityName)
        Creates the visitor that will traverse the representation of the JPQL query and will rename the entity name.
        Parameters:
        oldEntityName - The current name of the entity to rename
        newEntityName - The new name of the entity
        Returns:
        A new BasicRefactoringTool.EntityNameRenamer
      • buildEnumConstantRenamer

        protected BasicRefactoringTool.EnumConstantRenamer buildEnumConstantRenamer​(java.lang.String oldClassName,
                                                                                    java.lang.String newClassName)
        Creates the visitor that will traverse the representation of the JPQL query and will rename the enum constant.
        Parameters:
        oldClassName - The new name of the enum constant
        newClassName - The current name of the enum constant to rename
        Returns:
        A new BasicRefactoringTool.EnumConstantRenamer
      • buildJPQLQueryContext

        protected abstract JPQLQueryContext buildJPQLQueryContext()
        Creates a new JPQLQueryContext that can retrieve information from the declaration portion of the JPQL query.
        Returns:
        A new concrete instance of JPQLQueryContext
      • buildResultVariableNameRenamer

        protected BasicRefactoringTool.ResultVariableNameRenamer buildResultVariableNameRenamer​(java.lang.String oldVariableName,
                                                                                                java.lang.String newVariableName)
        Creates the visitor that will traverse the representation of the JPQL query and will rename a result variable.
        Parameters:
        oldVariableName - The current result variable name
        newVariableName - The new name of the result variable
        Returns:
        A new BasicRefactoringTool.ResultVariableNameRenamer
      • buildVariableNameRenamer

        protected BasicRefactoringTool.VariableNameRenamer buildVariableNameRenamer​(java.lang.String oldVariableName,
                                                                                    java.lang.String newVariableName)
        Creates the visitor that will traverse the representation of the JPQL query and will rename an identification variable.
        Parameters:
        oldVariableName - The current identification variable name
        newVariableName - The new name of the identification variable
        Returns:
        A new BasicRefactoringTool.VariableNameRenamer
      • getDelta

        public RefactoringDelta getDelta()
        Returns the delta of the changes made to the JPQL query.
        Returns:
        An object containing the refactoring events
      • getExpression

        public JPQLExpression getExpression()
        Returns the parsed tree representation of the JPQL query.
        Returns:
        The root of the parsed tree
      • getGrammar

        public JPQLGrammar getGrammar()
        Returns the JPQLGrammar that is associated with this builder.
        Returns:
        The JPQLGrammar that was used to parse the JPQL query or JPQL fragments
      • hasChanges

        public boolean hasChanges()
        Determines whether some refactoring operations found changes to be made in the JPQL query.
        Returns:
        true if there is at least one TextEdit; false otherwise
      • renameAttribute

        public void renameAttribute​(java.lang.Class<?> type,
                                    java.lang.String oldAttributeName,
                                    java.lang.String newAttributeName)
        Renames the attribute (persistent field or persistent property) from the given type.
        Parameters:
        type - The Java class from which the change originate
        oldAttributeName - The current name of the attribute to rename
        newAttributeName - The new name of the attribute
      • renameAttribute

        public void renameAttribute​(IType type,
                                    java.lang.String oldAttributeName,
                                    java.lang.String newAttributeName)
        Renames the attribute (persistent field or persistent property) from the given type.
        Parameters:
        type - The IType from which the change originate
        oldAttributeName - The current name of the attribute to rename
        newAttributeName - The new name of the attribute
      • renameAttribute

        public void renameAttribute​(java.lang.String typeName,
                                    java.lang.String oldAttributeName,
                                    java.lang.String newAttributeName)
        Renames the attribute (persistent field or persistent property) from the given type.
        Parameters:
        typeName - The fully qualified name of the type that got one of its attributes renamed
        oldAttributeName - The current name of the attribute to rename
        newAttributeName - The new name of the attribute
      • renameClassName

        public void renameClassName​(java.lang.String oldClassName,
                                    java.lang.String newClassName)
        Renames a fully qualified class name.
        Parameters:
        oldClassName - The current fully qualified class name of the class to rename
        newClassName - The new fully qualified class name
      • renameEntityName

        public void renameEntityName​(java.lang.String oldEntityName,
                                     java.lang.String newEntityName)
        Renames a given entity name.
        Parameters:
        oldEntityName - The current name of the entity to rename
        newEntityName - The new name of the entity
      • renameEnumConstant

        public void renameEnumConstant​(java.lang.String oldEnumConstant,
                                       java.lang.String newEnumConstant)
        Renames an enum constant, which has to be fully qualified.
        Parameters:
        oldEnumConstant - The current fully qualified name of the enum constant to rename
        newEnumConstant - The new fully qualified name of the enum constant
      • renameResultVariable

        public void renameResultVariable​(java.lang.String oldVariableName,
                                         java.lang.String newVariableName)
        Renames a result variable name.
        Parameters:
        oldVariableName - The current identification variable name
        newVariableName - The new name of the identification variable
      • renameVariable

        public void renameVariable​(java.lang.String oldVariableName,
                                   java.lang.String newVariableName)
        Renames a variable name.
        Parameters:
        oldVariableName - The current identification variable name
        newVariableName - The new name of the identification variable
      • toActualText

        public java.lang.String toActualText()
        Returns the resulted of the refactoring operations. The list of changes will be removed after applying the changes.
        Specified by:
        toActualText in class AbstractRefactoringTool
        Returns:
        The string representation of the JPQL query that contains the changes