<?xml version='1.0'?>
<!-- 
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.
-->
<betwixt-config>
  <class name="org.apache.ddlutils.model.Database">
    <element name="database">
      <attribute name="name"            property="name"/>
      <attribute name="defaultIdMethod" property="idMethod"/>
      <attribute name="version"         property="version"/>

      <element property="tables" updater="addTable"/>
    </element>
  </class>

  <class name="org.apache.ddlutils.model.Table">
    <element name="table">
      <attribute name="name"        property="name"/>
      <attribute name="description" property="description"/>

      <element property="columns"     updater="addColumn"/>
      <element property="foreignKeys" updater="addForeignKey"/>
      <element property="indices"     updater="addIndex"/>
    </element>
  </class>

  <class name="org.apache.ddlutils.model.Column">
    <element name="column">
      <attribute name="name"          property="name"/>
      <attribute name="primaryKey"    property="primaryKey"/>
      <attribute name="required"      property="required"/>
      <attribute name="type"          property="type"/>
      <attribute name="size"          property="size"/>
      <attribute name="default"       property="defaultValue"/>
      <attribute name="autoIncrement" property="autoIncrement"/>
      <attribute name="description"   property="description"/>
      <attribute name="javaName"      property="javaName"/>
    </element>
  </class>

  <class name="org.apache.ddlutils.model.ForeignKey">
    <element name="foreign-key">
      <attribute name="foreignTable" property="foreignTableName"/>
      <attribute name="name"         property="name"/>

      <element property="references" updater="addReference"/>
    </element>
  </class>

  <class name="org.apache.ddlutils.model.Reference">
    <element name="reference">
      <attribute name="local"   property="localColumnName"/>
      <attribute name="foreign" property="foreignColumnName"/>
    </element>
  </class>

  <class name="org.apache.ddlutils.model.NonUniqueIndex">
    <element name="index">
      <attribute name="name" property="name"/>

      <element name="index-column" property="columns" updater="addColumn"/>
    </element>
  </class>

  <class name="org.apache.ddlutils.model.IndexColumn">
    <element name="index-column">
      <attribute name="name" property="name"/>
      <attribute name="size" property="size"/>
    </element>
  </class>

  <class name="org.apache.ddlutils.model.UniqueIndex">
    <element name="unique">
      <attribute name="name" property="name"/>

      <element name="unique-column" property="columns" updater="addColumn"/>
    </element>
  </class>
</betwixt-config>