################################################################################
# Copyright (c) 2006, 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
################################################################################

# JptJpaUiPersistenceMessages

ARCHIVE_FILE_SELECTION_DIALOG_JAR_PATH_HELP_LABEL=The correct path to the JAR file selected will vary on your runtime environment.  You may alter it here to correctly reflect your particular environment.
ARCHIVE_FILE_SELECTION_DIALOG_JAR_PATH_LABEL=JAR file path:

PERSISTENCE_UNIT_CLASSES_COMPOSITE_DESCRIPTION=Specify the list of classes to be managed in this persistence unit.
PERSISTENCE_UNIT_CLASSES_COMPOSITE_EXCLUDE_UNLISTED_CLASSES=Exclude unlisted classes
PERSISTENCE_UNIT_CLASSES_COMPOSITE_EXCLUDE_UNLISTED_CLASSES_WITH_DEFAULT=Exclude unlisted classes ({0})
PERSISTENCE_UNIT_CLASSES_COMPOSITE_CLASS_REF_NO_NAME=<name not set>
PERSISTENCE_UNIT_CLASSES_COMPOSITE_OPEN=Open

PERSISTENCE_UNIT_CONNECTION_GENERAL_COMPOSITE_DEFAULT=Default(JTA)
PERSISTENCE_UNIT_CONNECTION_GENERAL_COMPOSITE_JTA=JTA
PERSISTENCE_UNIT_CONNECTION_GENERAL_COMPOSITE_RESOURCE_LOCAL=Resource Local

PERSISTENCE_UNIT_CONNECTION_COMPOSITE_CONNECTION=Connection
PERSISTENCE_UNIT_CONNECTION_COMPOSITE_database=Database
PERSISTENCE_UNIT_CONNECTION_COMPOSITE_general=General

PERSISTENCE_UNIT_CONNECTION_DATABASE_COMPOSITE_JTA_DATASOURCE_NAME=JTA data source name:
PERSISTENCE_UNIT_CONNECTION_DATABASE_COMPOSITE_NON_JTA_DATASOURCE_NAME=Non-JTA data source name:

PERSISTENCE_UNIT_CONNECTION_GENERAL_COMPOSITE_TRANSACTION_TYPE=Transaction type:

PERSISTENCE_UNIT_GENERAL_COMPOSITE_GENERAL=General
PERSISTENCE_UNIT_GENERAL_COMPOSITE_JAR_FILES=JAR Files
PERSISTENCE_UNIT_GENERAL_COMPOSITE_JPA_MAPPING_DESCRIPTORS=XML Mapping Files
PERSISTENCE_UNIT_GENERAL_COMPOSITE_JPA_MAPPING_DESCRIPTORS_DESCRIPTION=Specify the XML mapping files for this persistence unit.
PERSISTENCE_UNIT_GENERAL_COMPOSITE_MAPPED_CLASSES=Managed Classes
PERSISTENCE_UNIT_GENERAL_COMPOSITE_NAME=Name:
PERSISTENCE_UNIT_GENERAL_COMPOSITE_PERSISTENCE_PROVIDER=Persistence provider:
PERSISTENCE_UNIT_GENERAL_COMPOSITE_DESCRIPTION=Description:

PERSISTENCE_UNIT_JAR_FILES_COMPOSITE_NO_FILE_NAME=<File name not set>
PERSISTENCE_UNIT_MAPPING_FILES_COMPOSITE_JAR_FILE_DIALOG_TITLE=JAR File Selection
PERSISTENCE_UNIT_MAPPING_FILES_COMPOSITE_JAR_FILE_DIALOG_MESSAGE=Choose a JAR file to be added to the persistence unit.

PERSISTENCE_UNIT_MAPPING_FILES_COMPOSITE_MAPPING_FILE_DIALOG_MESSAGE=Choose the XML mapping files to be added to the persistence unit.
PERSISTENCE_UNIT_MAPPING_FILES_COMPOSITE_MAPPING_FILE_DIALOG_TITLE=JPA XML Mapping File Selection
PERSISTENCE_UNIT_MAPPING_FILES_COMPOSITE_ORM_NO_NAME=<name not set>

PERSISTENCE_UNIT_PROPERTIES_COMPOSITE_NAME_COLUMN=Name
PERSISTENCE_UNIT_PROPERTIES_COMPOSITE_PROPERTIES=Properties
PERSISTENCE_UNIT_PROPERTIES_COMPOSITE_PROPERTIES_DESCRIPTION=This table lists all properties that are defined for this persistence unit.
PERSISTENCE_UNIT_PROPERTIES_COMPOSITE_VALUE_COLUMN=Value
