################################################################################
# Copyright (c) 2010, 2013 Oracle. All rights reserved.
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0, which accompanies this distribution
# and is available at https://www.eclipse.org/legal/epl-2.0/.
# 
# Contributors:
#     Oracle - initial API and implementation
################################################################################

# JptJpaCoreRefactoringMessages

JPA_DELETE_TYPE_REFACTORING_PARTICIPANT_NAME=JPA delete IType refactoring participant
JPA_DELETE_PACKAGE_OR_FOLDER_REFACTORING_PARTICIPANT_NAME=JPA delete IPackageFragment/IFolder refactoring participant
JPA_DELETE_TYPE_REFACTORING_CHANGE_NAME=Delete references in JPA metadata files
JPA_DELETE_TYPE_REFACTORING_CHANGE_PERSISTENCE_XML_NAME=Delete references from persistence.xml
JPA_DELETE_TYPE_REFACTORING_CHANGE_MAPPING_FILE_NAME=Delete types from mapping file
JPA_DELETE_TYPE_REFACTORING_SUB_TASK_NAME=JPA delete references

JPA_DELETE_MAPPING_FILE_REFACTORING_PARTICIPANT_NAME=JPA delete mapping file refactoring participant
JPA_DELETE_MAPPING_FILE_REFACTORING_SUB_TASK_NAME=JPA delete mapping file references
JPA_DELETE_MAPPING_FILE_REFACTORING_CHANGE_NAME=Delete mapping file references in JPA metadata files
JPA_DELETE_MAPPING_FILE_REFACTORING_CHANGE_PERSISTENCE_XML_NAME=Delete mapping files from persistence.xml

JPA_REFACORING_PARTICIPANT_LOADING_JPA_PROJECTS_SUB_TASK_NAME=loading JPA projects

JPA_RENAME_TYPE_REFACTORING_PARTICIPANT_NAME=JPA rename IType refactoring participant
JPA_RENAME_TYPE_REFACTORING_CHANGE_NAME=Rename classes referenced in JPA metadata files
JPA_RENAME_TYPE_REFACTORING_CHANGE_PERSISTENCE_XML_NAME=Rename type references in the persistence.xml
JPA_RENAME_TYPE_REFACTORING_CHANGE_MAPPING_FILE_NAME=Rename type references in the mapping file
JPA_RENAME_TYPE_REFACTORING_SUB_TASK_NAME=JPA rename type references

JPA_RENAME_PACKAGE_REFACTORING_PARTICIPANT_NAME=JPA rename IPackageFragment refactoring participant
JPA_RENAME_PACKAGE_REFACTORING_CHANGE_NAME=Rename packages referenced in JPA metadata files
JPA_RENAME_PACKAGE_REFACTORING_CHANGE_PERSISTENCE_XML_NAME=Rename package references in the persistence.xml
JPA_RENAME_PACKAGE_REFACTORING_CHANGE_MAPPING_FILE_NAME=Rename package references in the mapping file
JPA_RENAME_PACKAGE_REFACTORING_SUB_TASK_NAME=JPA rename package references

JPA_RENAME_FOLDER_REFACTORING_PARTICIPANT_NAME=JPA rename IFolder refactoring participant
JPA_RENAME_FOLDER_REFACTORING_CHANGE_NAME=Rename folders referenced in JPA metadata files
JPA_RENAME_FOLDER_REFACTORING_CHANGE_PERSISTENCE_XML_NAME=Rename folder references in the persistence.xml
JPA_RENAME_FOLDER_REFACTORING_SUB_TASK_NAME=JPA rename folder references

JPA_RENAME_MAPPING_FILE_REFACTORING_PARTICIPANT_NAME=JPA rename mapping file refactoring participant
JPA_RENAME_MAPPING_FILE_REFACTORING_SUB_TASK_NAME=JPA rename mapping file references
JPA_RENAME_MAPPING_FILE_REFACTORING_CHANGE_NAME=Rename mapping file references in JPA metadata files
JPA_RENAME_MAPPING_FILE_REFACTORING_CHANGE_PERSISTENCE_XML_NAME=Rename mapping file references in the persistence.xml

JPA_MOVE_TYPE_REFACTORING_PARTICIPANT_NAME=JPA move IType refactoring participant
JPA_MOVE_TYPE_REFACTORING_CHANGE_NAME=Move classes referenced in JPA metadata files
JPA_MOVE_TYPE_REFACTORING_CHANGE_PERSISTENCE_XML_NAME=Move type references in the persistence.xml
JPA_MOVE_TYPE_REFACTORING_CHANGE_MAPPING_FILE_NAME=Move type references in the mapping file
JPA_MOVE_TYPE_REFACTORING_SUB_TASK_NAME=JPA move type references

JPA_MOVE_MAPPING_FILE_REFACTORING_PARTICIPANT_NAME=JPA move mapping file refactoring participant
JPA_MOVE_MAPPING_FILE_REFACTORING_SUB_TASK_NAME=JPA move mapping file references
JPA_MOVE_MAPPING_FILE_REFACTORING_CHANGE_NAME=Move mapping file references in JPA metadata files
JPA_MOVE_MAPPING_FILE_REFACTORING_CHANGE_PERSISTENCE_XML_NAME=Move mapping file references in the persistence.xml

JPA_MOVE_FOLDER_REFACTORING_PARTICIPANT_NAME=JPA move IFolder refactoring participant
JPA_MOVE_FOLDER_REFACTORING_CHANGE_NAME=Move folders referenced in JPA metadata files
JPA_MOVE_FOLDER_REFACTORING_CHANGE_PERSISTENCE_XML_NAME=Move folder references in the persistence.xml
JPA_MOVE_FOLDER_REFACTORING_SUB_TASK_NAME=JPA move folder references
