################################################################################
# Copyright (c) 2008, 2010 by SAP AG, Walldorf. 
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     SAP AG - initial API and implementation
#     Dimiter Dimitrov, d.dimitrov@sap.com - initial API and implementation     
################################################################################

ENTITY_WIZARD_TITLE=New JPA Entity
ENTITY_WIZARD_PAGE_TITLE=Entity class
ENTITY_WIZARD_PAGE_DESCRIPTION=Create a new JPA entity. Only JPA enabled projects may be selected.
DEFAULT_PACKAGE_WARNING=The usage of the default package is not recommended.
ENTITY_PROPERTIES_TITLE=Entity Properties
ENTITY_PROPERTIES_DESCRIPTION=Set entity name, table name, fields, and access type.
ENTITY=Entit&y
MAPPED_AS_SUPERCLASS=Mapped super&class
INHERITANCE_GROUP=Inheritance
INHERITANCE_CHECK_BOX=&Inheritance:
XML_STORAGE_GROUP=XML entity mappings
XML_SUPPORT=Add to entity mappings in &XML
CHOOSE_XML=M&apping file:
MAPPING_XML_TITLE=Mapping File
XML_NAME_TITLE=XML name:
CHOOSE_MAPPING_XML_MESSAGE=Choose mapping XML
INVALID_XML_NAME=The mapping file does not exist
MAPPING_FILE_NOT_LISTED_ERROR=The selected mapping file has not been added to the persistence unit.
TYPE_DIALOG_TITLE=Choose Type
TYPE_DIALOG_DESCRIPTION=Choose the type of the entity field.
ENTITY_NAME=Entity na&me:
TABLE_NAME_GROUP=Table name
TABLE_NAME=&Table name:
USE_DEFAULT=&Use default
ENTITY_FIELDS_GROUP=Entity field&s
ENTITY_FIELDS_DIALOG_TITLE=Entity Fields
KEY=Key
NAME_COLUMN=Name
TYPE_COLUMN=Type
NAME_TEXT_FIELD=Na&me:
TYPE_TEXT_FIELD=&Type:
BROWSE_BUTTON_LABEL=B&rowse...
ADD_BUTTON_LABEL=&Add...
EDIT_BUTTON_LABEL=&Edit...
REMOVE_BUTTON_LABEL=&Remove
DUPLICATED_ENTITY_NAMES_MESSAGE=There are duplicate names on created entity fields. Please resolve the duplication.
ACCESS_TYPE=Access type
FIELD_BASED=Fiel&d
PROPERTY_BASED=&Property
NO_JPA_PROJECTS=No JPA projects in the workspace
APPLY_CHANGES_TO_PERSISTENCE_XML=Apply changes to persistence XML
ADD_MAPPED_SUPERCLASS_TO_XML=Add mapped superclass to XML
ADD_ENTITY_TO_XML=Add entity to XML
EntityDataModelProvider_typeNotInProjectClasspath=''{0}'' does not exist on the project classpath
EntityDataModelProvider_invalidPKType=''{0}'' is not a valid simple primary key type
EntityDataModelProvider_invalidArgument=Invalid argument ''{0}''
