<?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>
		<!-- Empire-db driver configuration -->
		<empireDBDriverClass>org.apache.empire.db.hsql.DBDatabaseDriverHSql</empireDBDriverClass>
		<empireDBDriverProperites>
			<!-- no properties -->
		</empireDBDriverProperites>
	</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>esteam</jdbcPwd>
		<!-- Empire-db driver configuration -->
		<empireDBDriverClass>org.apache.empire.db.mysql.DBDatabaseDriverMySQL</empireDBDriverClass>
		<empireDBDriverProperites>
			<databaseName>DBSAMPLEADV</databaseName>
		</empireDBDriverProperites>
	</properties-mysql>
	
	<properties-postgresql>
		<!-- JDBC properties for a PostreSQL Database connection -->
		<!-- Required jar file: postgresql-8.3-603.jdbc4.jar -->
		<jdbcClass>org.postgresql.Driver</jdbcClass>
		<jdbcURL>jdbc:postgresql://localhost</jdbcURL>
		<jdbcUser>postgres</jdbcUser>
		<jdbcPwd>postgres</jdbcPwd>
		<!-- Empire-db driver configuration -->
		<empireDBDriverClass>org.apache.empire.db.postgresql.DBDatabaseDriverPostgreSQL</empireDBDriverClass>
		<empireDBDriverProperites>
			<databaseName>DBSAMPLEADV</databaseName>
		</empireDBDriverProperites>
	</properties-postgresql>
	
	<properties-h2>
		<!-- JDBC properties for a H2 Database connection -->
		<!-- Required jar file: h2-1.1.107.jar -->
		<jdbcClass>org.h2.Driver</jdbcClass>
		<jdbcURL>jdbc:h2:h2/DBSAMPLE</jdbcURL>
		<jdbcUser>sa</jdbcUser>
		<jdbcPwd></jdbcPwd>
		<!-- Empire-db driver configuration -->
		<empireDBDriverClass>org.apache.empire.db.h2.DBDatabaseDriverH2</empireDBDriverClass>
		<empireDBDriverProperites>
			<databaseName>DBSAMPLEADV</databaseName>
		</empireDBDriverProperites>
	</properties-h2>
	
	<properties-derby>
		<!-- JDBC properties for a Derby Database connection -->
		<!-- Required jar file: derby-10.4.2.0.jar -->
		<jdbcClass>org.apache.derby.jdbc.EmbeddedDriver</jdbcClass>
		<jdbcURL>jdbc:derby:derby/DBSAMPLE;create=true</jdbcURL>
		<jdbcUser></jdbcUser>
		<jdbcPwd></jdbcPwd>
		<!-- Empire-db driver configuration -->
		<empireDBDriverClass>org.apache.empire.db.derby.DBDatabaseDriverDerby</empireDBDriverClass>
		<empireDBDriverProperites>
			<databaseName>DBSAMPLEADV</databaseName>
		</empireDBDriverProperites>
	</properties-derby>

	<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>DBSAMPLEADV</jdbcUser>
		<jdbcPwd>DBSAMPLEADV</jdbcPwd>
		<!-- Empire-db driver configuration -->
		<empireDBDriverClass>org.apache.empire.db.oracle.DBDatabaseDriverOracle</empireDBDriverClass>
		<empireDBDriverProperites>
			<!-- no properties -->
		</empireDBDriverProperites>
	</properties-oracle>

	<properties-sqlserver>
		<!-- JDBC properties for a Microsoft SQL-Server Database connection -->
		<jdbcClass>com.microsoft.sqlserver.jdbc.SQLServerDriver</jdbcClass>
		<jdbcURL>jdbc:sqlserver://esteamsvr12\sql14</jdbcURL>
		<jdbcUser>jdbcUser</jdbcUser>
		<jdbcPwd>jdbcPwd</jdbcPwd>
		<!-- Empire-db driver configuration -->
		<empireDBDriverClass>org.apache.empire.db.sqlserver.DBDatabaseDriverMSSQL</empireDBDriverClass>
		<empireDBDriverProperites>
			<databaseName>DBSAMPLEADV</databaseName>
			<useSequenceTable>false</useSequenceTable>
			<!-- useDateTime2: set to false for databases using DATETIME for timestamps instead of DATETIME2 -->
			<useDateTime2>true</useDateTime2>
		</empireDBDriverProperites>
	</properties-sqlserver>

	<!-- log4j configuration node -->
	<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

		<appender name="default" class="org.apache.log4j.ConsoleAppender">
			<!-- layout class="org.apache.log4j.TTCCLayout"/ -->
			<layout class="org.apache.log4j.PatternLayout">
				<!-- param name="ConversionPattern" value="NSB(%c) %-5p %m	at %l%n"/ -->
				<param name="ConversionPattern" value="%-5p [%d{yyyy/MM/dd HH:mm}]: %m		at %l %n"/>
			</layout>
		</appender>
	
		<!-- log detail configuration -->

		<logger name="org.apache.empire.xml" additivity="false">
			<level value="info"/>
			<appender-ref ref="default"/>
		</logger>
		
		<logger name="org.apache.empire.commons" additivity="false">
			<level value="warn"/>
			<appender-ref ref="default"/>
		</logger>
	
		<logger name="org.apache.empire.db" additivity="false">
			<level value="warn"/>
			<appender-ref ref="default"/>
		</logger>

		<!-- Set this level to "debug" to log all SQL-Statements -->		
		<logger name="org.apache.empire.db.DBDatabase" additivity="false">
			<level value="debug"/>
			<appender-ref ref="default"/>
		</logger>
		<logger name="org.apache.empire.db.DBDatabaseDriver" additivity="false">
			<level value="debug"/>
			<appender-ref ref="default"/>
		</logger>

		<!-- Set this level to "debug" to log all DDL-Statements -->		
		<logger name="org.apache.empire.db.DBSQLScript" additivity="false">
			<level value="debug"/>
			<appender-ref ref="default"/>
		</logger>
		
		<logger name="org.apache.empire.samples.db.advanced" additivity="false">
			<level value="debug"/>
			<appender-ref ref="default"/>
		</logger>
	
		<root>
			<priority value="info"/>
			<appender-ref ref="default"/>
		</root>

	</log4j:configuration>
	
</config>
