################################################################################
# Copyright (c) 2006, 2010 Oracle. 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:
#     Oracle - initial API and implementation
################################################################################

NONE=<None>
VALIDATE_JOB=Validation
VALIDATE_CONTAINER_NOT_SPECIFIED=Parent folder must be specified
VALIDATE_PROJECT_NOT_JPA=Project does not have the JPA facet
VALIDATE_PROJECT_IMPROPER_PLATFORM=Project's JPA platform does not support this file type
VALIDATE_CONTAINER_QUESTIONABLE=Parent folder may not be acceptable for this project
VALIDATE_FILE_NAME_NOT_SPECIFIED=File name must be specified
VALIDATE_FILE_ALREADY_EXISTS=File already exists
VALIDATE_FILE_VERSION_NOT_SUPPORTED=File version not supported
VALIDATE_FILE_VERSION_NOT_SUPPORTED_FOR_FACET_VERSION=File version not supported for JPA facet version
VALIDATE_PERSISTENCE_UNIT_DOES_NOT_SPECIFIED=Persistence unit not specified
VALIDATE_PERSISTENCE_UNIT_NOT_IN_PROJECT=Persistence unit ''{0}'' not defined in project ''{1}''
VALIDATE_PLATFORM_NOT_SPECIFIED=Platform must be specified
VALIDATE_PLATFORM_DOES_NOT_SUPPORT_FACET_VERSION=Platform does not support the current JPA facet version
VALIDATE_LIBRARY_PROVIDER_INVALID=The currently selected library provider is invalid
VALIDATE_CONNECTION_NOT_SPECIFIED=Connection must be specified
VALIDATE_CONNECTION_INVALID=Connection profile ''{0}'' does not exist
VALIDATE_CONNECTION_NOT_CONNECTED=Connection must be active to get data source specific help and validation.
VALIDATE_DEFAULT_CATALOG_NOT_SPECIFIED=Default catalog is not specified
VALIDATE_CONNECTION_DOESNT_CONTAIN_CATALOG=Catalog ''{0}'' does not exist on the connection specified
VALIDATE_DEFAULT_SCHEMA_NOT_SPECIFIED=Default schema is not specified
VALIDATE_CONNECTION_DOESNT_CONTAIN_SCHEMA=Schema ''{0}'' does not exist on the connection specified
VALIDATE_RUNTIME_NOT_SPECIFIED=There is no server runtime associated with this project to provide a JPA implementation
VALIDATE_RUNTIME_DOES_NOT_SUPPORT_EJB_30=The server runtime selected does not support EJB 3.0, so it likely does not provide a JPA implementation
VALIDATE_LIBRARY_NOT_SPECIFIED=No JPA implementation library specified
SYNCHRONIZE_CLASSES_JOB=Synchronizing classes
SYNCHRONIZING_CLASSES_TASK=Synchronizing classes ...
INVALID_PERSISTENCE_XML_CONTENT=Invalid persistence.xml content
ERROR_SYNCHRONIZING_CLASSES_COULD_NOT_VALIDATE=Error synchronizing classes.  Could not validate.
ERROR_WRITING_FILE=Could not write to persistence.xml
REGISTRY_MISSING_ATTRIBUTE=Missing required attribute ''{0}'' for element ''{1}'' in extension ''{1}'' from plug-in ''{2}''.
REGISTRY_INVALID_VALUE=Invalid value ''{0}'' for ''{1}'' in extension ''{2}'' from plug-in ''{3}''.
REGISTRY_DUPLICATE=An extension of ''{0}'' with the id ''{1}'' is already registered.
REGISTRY_FAILED_CLASS_LOAD=Unable to load the class ''{0}'' declared for the extension point ''{1}'' in the plug-in ''{2}''.
REGISTRY_FAILED_INTERFACE_ASSIGNMENT=Unable to assign the class ''{0}'' declared for the extension point ''{1}'' in the plug-in ''{2}'' to the interface ''{3}''.
REGISTRY_FAILED_INSTANTIATION=Unable to instantiate the class ''{0}'' declared for the extension point ''{1}'' in the plug-in ''{2}''.
UPDATE_JOB_NAME=Update JPA project: ''{0}''
PLATFORM_ID_DOES_NOT_EXIST=No JPA platform exists for the id: ''{0}''. The JPA project was not created for project ''{1}''.  Ensure that the platform''s plugin has been added to this Eclipse installation.
DALI_EVENT_HANDLER_THREAD_NAME=Dali Event Handler
PREFERENCES_FLUSH_JOB_NAME=Flush Preferences: {0}
USER_LIBRARY_VALIDATOR__CLASS_NOT_FOUND=The class ''{0}'' is required to be in the selected libraries.
OSGI_BUNDLES_LIBRARY_VALIDATOR__BUNDLE_NOT_FOUND=The bundle ''{0}'' could not be found.
OSGI_BUNDLES_LIBRARY_VALIDATOR__IMPROPER_BUNDLE_VERSION=The version of bundle ''{0}'' does not meet platform requirements.
GENERATION_CREATING_LAUNCH_CONFIG_TASK=Creating launch configuration
GENERATION_SAVING_LAUNCH_CONFIG_TASK=Saving launch config
GENERATION_LAUNCHING_CONFIG_TASK=Launching config
