<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
  
   http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->
<config>

	<properties>
		<!-- provider name must match the property-section containing the connection data -->
		<databaseProvider>hsqldb</databaseProvider>
	</properties>

	<properties-hsqldb>
		<!-- JDBC properties for a HSQLDB Database connection -->
		<!-- Required jar file: hsqldb.jar -->
		<jdbcClass>org.hsqldb.jdbcDriver</jdbcClass>
		<jdbcURL>jdbc:hsqldb:file:hsqldb/sample;shutdown=true</jdbcURL>
		<jdbcUser>sa</jdbcUser>
		<jdbcPwd></jdbcPwd>
		<schemaName>DBSAMPLE</schemaName>
	</properties-hsqldb>

	<properties-mysql>
		<!-- JDBC properties for a MySQL Database connection -->
		<!-- Required jar file: mysql-connector-java-5.1.6-bin.jar -->
		<jdbcClass>com.mysql.jdbc.Driver</jdbcClass>
		<jdbcURL>jdbc:mysql://localhost</jdbcURL>
		<jdbcUser>root</jdbcUser>
		<jdbcPwd>empire-db</jdbcPwd>
		<schemaName>DBSAMPLE</schemaName>
	</properties-mysql>

	<properties-oracle>
		<!-- JDBC properties for an Oracle Database connection -->
		<!-- Required jar file: ojdbc14.jar -->
		<jdbcClass>oracle.jdbc.driver.OracleDriver</jdbcClass>
		<jdbcURL>jdbc:oracle:thin:@192.168.0.2:1521:ora10</jdbcURL>
		<jdbcUser>DBSAMPLE</jdbcUser>
		<jdbcPwd>DBSAMPLE</jdbcPwd>
		<schemaName>DBSAMPLE</schemaName>
	</properties-oracle>

	<properties-sqlserver>
		<!-- JDBC properties for a Microsoft SQL-Server Database connection -->
		<!-- Required jar file: sqljdbc.jar -->
		<jdbcClass>com.microsoft.sqlserver.jdbc.SQLServerDriver</jdbcClass>
		<jdbcURL>jdbc:sqlserver://192.168.0.2:1433</jdbcURL>
		<jdbcUser>sa</jdbcUser>
		<jdbcPwd>empire-db</jdbcPwd>
		<schemaName>DBSAMPLE</schemaName>
	</properties-sqlserver>
	
</config>
