org.eclipse.persistence.jpa.jpql.tools.AbstractRefactoringTool Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of eclipselink Show documentation
Show all versions of eclipselink Show documentation
EclipseLink build based upon Git transaction 67768906cf
/*
* Copyright (c) 2012, 2018 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Oracle - initial API and implementation
//
package org.eclipse.persistence.jpa.jpql.tools;
import org.eclipse.persistence.jpa.jpql.tools.spi.IManagedTypeProvider;
/**
* The abstract definition of a refactoring
*
* @see RefactoringTool
* @see BasicRefactoringTool
*
* @version 2.4
* @since 2.4
* @author Pascal Filion
*/
public abstract class AbstractRefactoringTool {
/**
* The JPQL query to manipulate or a single JPQL fragment, which is parsed using the JPQL query
* specified BNF.
*/
private CharSequence jpqlFragment;
/**
* The unique identifier of the {@link org.eclipse.persistence.jpa.jpql.parser.JPQLQueryBNF
* JPQLQueryBNF} that determines how to parse the JPQL fragment.
*/
private String jpqlQueryBNFId;
/**
* The external form of a provider that gives access to the JPA metadata.
*/
private IManagedTypeProvider managedTypeProvider;
/**
* Determines whether the parsing system should be tolerant.
*/
private boolean tolerant;
/**
* Creates a new BasicRefactoringTool
.
*
* @param jpqlFragment The JPQL query to manipulate or a single JPQL fragment, which is parsed
* using the JPQL query BNF identifier by the given ID
* @param managedTypeProvider The external form of a provider that gives access to the JPA metadata
* @param jpqlQueryBNFId The unique identifier of the {@link
* org.eclipse.persistence.jpa.jpql.parser.JPQLQueryBNF JPQLQueryBNF} that determines how to parse
* the JPQL fragment
*/
protected AbstractRefactoringTool(CharSequence jpqlFragment,
IManagedTypeProvider managedTypeProvider,
String jpqlQueryBNFId) {
super();
this.tolerant = true;
this.jpqlFragment = jpqlFragment;
this.jpqlQueryBNFId = jpqlQueryBNFId;
this.managedTypeProvider = managedTypeProvider;
}
/**
* Returns the original JPQL query or the JPQL fragment that was passed to this tool so it can
* be manipulated.
*
* @return The string representation of the JPQL query or fragment
*/
public CharSequence getJPQLFragment() {
return jpqlFragment;
}
/**
* Returns the unique identifier of the JPQL query BNF that determined how the JPQL query or
* fragment needs to be parsed.
*
* @return The ID of the {@link org.eclipse.persistence.jpa.jpql.parser.JPQLQueryBNF JPQLQueryBNF}
* used to parse the query
*/
public String getJPQLQueryBNFId() {
return jpqlQueryBNFId;
}
/**
* Returns the provider of managed types.
*
* @return The provider that gives access to the managed types
*/
public IManagedTypeProvider getManagedTypeProvider() {
return managedTypeProvider;
}
/**
* Determines whether the parsing system should be tolerant, meaning if it should try to parse
* invalid or incomplete queries.
*
* @return By default, the parsing system uses tolerance
*/
public boolean isTolerant() {
return tolerant;
}
/**
* Sets whether the parsing system should be tolerant, meaning if it should try to parse invalid
* or incomplete queries.
*
* @param tolerant true
if the JPQL query or fragment should be parsed with tolerance;
* false
otherwise
*/
public void setTolerant(boolean tolerant) {
this.tolerant = tolerant;
}
/**
* Returns the resulted of the refactoring operations. The list of changes will be removed after
* applying the changes.
*
* @return The string representation of the JPQL query that contains the changes
*/
public abstract String toActualText();
}