<?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.
  
-->
<!-- persistence.xml schema -->
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
	version="2.0">
	<persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL">
		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
		<class>org.apache.openmeetings.db.entity.basic.Configuration</class>
		<class>org.apache.openmeetings.db.entity.basic.ErrorType</class>
		<class>org.apache.openmeetings.db.entity.basic.ErrorValue</class>
		<class>org.apache.openmeetings.db.entity.server.LdapConfig</class>
		<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>
		<class>org.apache.openmeetings.db.entity.basic.Naviglobal</class>
		<class>org.apache.openmeetings.db.entity.basic.Navimain</class>
		<class>org.apache.openmeetings.db.entity.server.Sessiondata</class>
		<class>org.apache.openmeetings.db.entity.server.SOAPLogin</class>
		<class>org.apache.openmeetings.db.entity.server.Server</class>
		<class>org.apache.openmeetings.db.entity.calendar.Appointment</class>
		<class>org.apache.openmeetings.db.entity.calendar.AppointmentCategory</class>
		<class>org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps</class>
		<class>org.apache.openmeetings.db.entity.calendar.MeetingMember</class>
		<class>org.apache.openmeetings.db.entity.basic.ChatMessage</class>
		<class>org.apache.openmeetings.db.entity.user.Organisation</class>
		<class>org.apache.openmeetings.db.entity.user.Organisation_Users</class>
		<class>org.apache.openmeetings.db.entity.record.FlvRecording</class>
		<class>org.apache.openmeetings.db.entity.record.FlvRecordingLog</class>
		<class>org.apache.openmeetings.db.entity.record.FlvRecordingMetaData</class>
		<class>org.apache.openmeetings.db.entity.record.FlvRecordingMetaDelta</class>
		<class>org.apache.openmeetings.db.entity.room.Invitation</class>
		<class>org.apache.openmeetings.db.entity.log.ConferenceLog</class>
		<class>org.apache.openmeetings.db.entity.log.ConferenceLogType</class>
		<class>org.apache.openmeetings.db.entity.room.PollType</class>
		<class>org.apache.openmeetings.db.entity.room.RoomPoll</class>
		<class>org.apache.openmeetings.db.entity.room.RoomPollAnswers</class>
		<class>org.apache.openmeetings.db.entity.room.Client</class>
		<class>org.apache.openmeetings.db.entity.room.RoomModerator</class>
		<class>org.apache.openmeetings.db.entity.room.Room</class>
		<class>org.apache.openmeetings.db.entity.room.RoomType</class>
		<class>org.apache.openmeetings.db.entity.room.RoomOrganisation</class>
		<class>org.apache.openmeetings.db.entity.room.Whiteboard</class>
		<class>org.apache.openmeetings.db.entity.room.WhiteboardItem</class>
		<class>org.apache.openmeetings.db.entity.user.Address</class>
		<class>org.apache.openmeetings.db.entity.user.State</class>
		<class>org.apache.openmeetings.db.entity.user.PrivateMessage</class>
		<class>org.apache.openmeetings.db.entity.user.PrivateMessageFolder</class>
		<class>org.apache.openmeetings.db.entity.user.Salutation</class>
		<class>org.apache.openmeetings.db.entity.user.UserContact</class>
		<class>org.apache.openmeetings.db.entity.user.Userdata</class>
		<class>org.apache.openmeetings.db.entity.user.User</class>
		<class>org.apache.openmeetings.db.entity.file.FileExplorerItem</class>
		<class>org.apache.openmeetings.db.entity.user.AsteriskSipUser</class>
		<class>org.apache.openmeetings.db.entity.server.OAuthServer</class>
		<exclude-unlisted-classes>false</exclude-unlisted-classes>
		<properties>
			<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />
			<property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp2.BasicDataSource" />
			<property name="openjpa.ConnectionProperties"
				value="DriverClassName=com.ibm.db2.jcc.DB2Driver
					, Url=jdbc:db2://localhost:50000/openmeet
					, MaxActive=100
					, MaxWait=10000
					, TestOnBorrow=true
					, poolPreparedStatements=true
					, Username=db2admin
					, Password=admin" />
			<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" />
			<property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" />
			<property name="openjpa.DataCache" value="true" />
			<property name="openjpa.QueryCache" value="true" />
			<property name="openjpa.jdbc.DBDictionary" value="batchLimit=100" />
			<property name="openjpa.jdbc.QuerySQLCache" value="false" />
		</properties>
	</persistence-unit>
</persistence>
