###############################################################################
# Copyright (c) 2001, 2004, 2007 IBM Corporation and others.
# 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:
#     IBM Corporation - initial API and implementation
###############################################################################

pluginName = Eclipse Data Tools Platform Derby Plug-in
providerName = Eclipse Data Tools Platform

DERBY_CONNECTION_PROFILE_NAME=Derby Embedded Database
DERBY_JDBC_CONNECTION_FACTORY_NAME=JDBC Connection
DERBY_PING_CONNECTION_FACTORY_NAME=Ping Connection Factory
DERBY_SQL_MODEL_CONNECTION_FACTORY_NAME=SQL Model Connection
DRIVER_CLASS_PROPERTY_NAME=Driver Class
VENDOR_PROPERTY_NAME=Vendor
VERSION_PROPERTY_NAME=Version
DATABASE_NAME_PROPERTY_NAME=Database Name
CONNECTION_URL_PROPERTY_NAME=Connection URL
USER_ID_PROPERTY_NAME=User ID
PASSWORD_PROPERTY_NAME=Password

DERBY_CATEGORY_NAME=Derby
10_0_VERSION_CATEGORY_NAME = 10.0
10_1_VERSION_CATEGORY_NAME = 10.1
10_2_VERSION_CATEGORY_NAME = 10.2

DERBY_EMBEDDED_DRIVER_TEMPLATE_NAME=Derby Embedded JDBC Driver
DERBY_EMBEDDED_DRIVER_DEFAULT_INSTANCE_NAME=Derby Embedded JDBC Driver 10.0
DERBY_OTHER_DRIVER_TEMPLATE_NAME = Other Driver
DERBY101_EMBEDDED_DRIVER_TEMPLATE_NAME=Derby Embedded JDBC Driver
DERBY101_EMBEDDED_DRIVER_DEFAULT_INSTANCE_NAME=Derby Embedded JDBC Driver 10.1
DERBY_NETWORK_EMBEDDED_DRIVER_TEMPLATE_NAME=IBM Data Server Driver for JDBC and SQLJ
DERBY101_NETWORK_EMBEDDED_DRIVER_TEMPLATE_NAME=IBM Data Server Driver for JDBC and SQLJ
DERBY101_CLIENT_DRIVER_TEMPLATE_NAME = Derby Client JDBC Driver
DERBY101_CLIENT_DRIVER_DEFAULT_INSTANCE_NAME = Derby Client JDBC Driver 10.1
DERBY101_OTHER_DRIVER_TEMPLATE_NAME = Other Driver
DERBY102_EMBEDDED_DRIVER_TEMPLATE_NAME=Derby Embedded JDBC Driver
DERBY102_EMBEDDED_DRIVER_DEFAULT_INSTANCE_NAME=Derby Embedded JDBC Driver 10.2
DERBY102_CLIENT_DRIVER_TEMPLATE_NAME = Derby Client JDBC Driver
DERBY102_CLIENT_DRIVER_DEFAULT_INSTANCE_NAME = Derby Client JDBC Driver 10.2
DERBY102_OTHER_DRIVER_TEMPLATE_NAME = Other Driver