################################################################################
# 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
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}''
