<?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.jdbc.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>
