<?xml version="1.0"?>
  <gstructs-skip xmlns:attr="http://www.mysql.com/grt/struct-attribute">    
      <requires file="structs.xml"/>    
      <requires file="structs.base.xml"/>    

      <gstruct attr:caption="Migration Settings" attr:desc="an object to store information needed during the migration process" name="db.migration.Migration" parent="GrtObject">      
          <members>        
              <member attr:desc="connection used for the source database" name="sourceConnection" struct-name="db.mgmt.Connection" type="object" owned="1"/>
              <member attr:desc="connection used for the target database" name="targetConnection" struct-name="db.mgmt.Connection" type="object" owned="1"/>

              <member attr:desc="list of available schemata names in the source database" content-type="string" name="sourceSchemataNames" type="list"/>        
              <member attr:desc="list of selected schemata names to reverse engineer" content-type="string" name="selectedSchemataNames" type="list"/>        

              <member attr:desc="a catalog object reflecting the reverse engineered assets from the source database" name="sourceCatalog" struct-name="db.Catalog" type="object" owned="1"/>
              <member attr:desc="the migrated target catalog" name="targetCatalog" struct-name="db.Catalog" type="object" owned="1"/>
              <member attr:desc="the version that the target catalog should have" name="targetVersion" struct-name="GrtVersion" type="object" owned="1"/>

              <member attr:desc="list of objects that should not be migrated in the form objecttype:schemaname.objectname" content-type="string" name="ignoreList" type="list"/>        
              <member attr:desc="list of default mappings that are chosen when no mapping definition is defined" content-struct-name="db.migration.Mapping" content-type="object" name="mappingDefaults" type="list"  owned="1"/>
              <member attr:desc="list of user defined mappings for objects that should not be migrated using the default mappings" content-struct-name="db.migration.Mapping" content-type="object" name="mappingDefinitions" type="list"  owned="1"/>
              <member attr:desc="list of available migration methods" content-struct-name="db.migration.Method" content-type="object" name="migrationMethods" type="list"  owned="1"/>
              <member attr:desc="temporary list of objects that should be migrated" content-struct-name="GrtObject" content-type="object" name="sourceObjects" type="list"  owned="1"/>
              <member attr:desc="the dictionary of parameters used during the object creation" content-type="string" name="objectCreationParams" type="dict"/>        
              <member attr:desc="the dictionary of parameters used during the bulk data transfer" content-type="string" name="dataBulkTransferParams" type="dict"/>        

              <member attr:desc="a listing of log messages generated during object migration" content-struct-name="GrtLogObject" content-type="object" name="migrationLog" type="list"  owned="1"/>
              <member attr:desc="a listing of log messages generated during object creation" content-struct-name="GrtLogObject" content-type="object" name="creationLog" type="list"  owned="1"/>
              <member attr:desc="a listing of log messages generated during data transfer" content-struct-name="GrtLogObject" content-type="object" name="dataTransferLog" type="list" owned="1"/>

              <member attr:desc="datatype mapping for generic migration" content-struct-name="db.migration.DatatypeMapping" content-type="object" name="genericDatatypeMappings" type="list" owned="1"/>
              <member attr:desc="internal parameters set by the migration tool" content-type="string" name="applicationData" type="dict"/>        
          </members>      
      </gstruct>    

      <gstruct attr:desc="definition of the default methods that will be used" name="db.migration.Mapping" parent="GrtObject">      
          <members>        
              <member attr:desc="a link to the object that should be migrated. Null when this is a default mapping" name="sourceObject" struct-name="GrtObject" type="object"/>        
              <member attr:desc="the source struct name the migration method expects e.g. db.oracle.Table" name="sourceStructName" type="string"/>        
              <member attr:desc="a link to the method that will be used" name="method" struct-name="db.migration.Method" type="object"/>
              <member attr:desc="name of the method used to migrate the source object" name="methodName" type="string"/>        
              <member attr:desc="name of the module the method belongs to" name="moduleName" type="string"/>        
              <member attr:desc="name of the parameter group to use or empty if user defined settings at to use" name="paramGroupName" type="string"/>        
              <member attr:desc="dictionary of user defined parameters when no parameter group is specified" content-type="string" name="params" type="dict"/>        
          </members>      
      </gstruct>    

      <gstruct attr:desc="information about a method that can be used to migrate an object" name="db.migration.Method" parent="GrtObject">      
          <members>        
              <member attr:desc="the name of the module that contains this method" name="moduleName" type="string"/>        
              <member attr:desc="the name of the method" name="attr:caption=" type="string"/>        
              <member attr:desc="description of the method" name="desc" type="string"/>        
              <member attr:desc="the struct name of the source object, e.g. db.oracle.Table" name="sourceStructName" type="string"/>        
              <member attr:desc="the package name of the target object, e.g. db.mysql" name="targetPackageName" type="string"/>        
              <member attr:desc="dictionary of all parameters the method can by called with together with the default values" content-type="string" name="params" type="dict"/>        
              <member attr:desc="list of predefined parameters groups" content-struct-name="db.migration.ParameterGroup" content-type="object" name="paramGroups" type="list" owned="1"/>
              <member attr:desc="the method with the highest rating will be presented as default one" name="rating" type="int"/>        
          </members>      
      </gstruct>    

      <gstruct attr:desc="a group of migration method parameters" name="db.migration.ParameterGroup" parent="GrtObject">      
          <members>        
              <member attr:desc="Description of the parameter group" name="desc" type="string"/>        
              <member attr:desc="the dictionary of parameters in the group" content-type="string" name="params" type="dict"/>        
          </members>      
      </gstruct>    

      <gstruct attr:desc="mapping of a datatype from one database to another" name="db.migration.DatatypeMapping" parent="GrtObject">      
          <members>        
              <member attr:desc="name of the datatype in the source database" name="sourceDatatypeName" type="string"/>        
              <member attr:desc="name of the datatype in the target database" name="targetDatatypeName" type="string"/>        
              <member attr:desc="if set to a value different than 0 this becomes a condition" name="lengthConditionFrom" type="int"/>        
              <member attr:desc="if set to a value different than 0 this becomes a condition" name="lengthConditionTo" type="int"/>        
              <member attr:desc="overwrite length if different than -1" name="length" type="int"/>        
              <member attr:desc="if set to a value different than 0 this becomes a condition" name="precisionConditionFrom" type="int"/>        
              <member attr:desc="if set to a value different than 0 this becomes a condition" name="precisionConditionTo" type="int"/>        
              <member attr:desc="overwrite precision if different than -1" name="precision" type="int"/>        
              <member attr:desc="if set to a value different than 0 this becomes a condition" name="scaleConditionFrom" type="int"/>        
              <member attr:desc="if set to a value different than 0 this becomes a condition" name="scaleConditionTo" type="int"/>        
              <member attr:desc="overwrite scale if different than -1" name="scale" type="int"/>        
              <member attr:desc="set a fixed character set for the target datatype" name="characterSet" type="string"/>        
              <member attr:desc="set a fixed collation for the target datatype" name="collation" type="string"/>        
              <member attr:desc="sets the auto increment flag" name="autoIncrement" type="int"/>        
              <member attr:desc="sets the unsigned flag" name="unsigned" type="int"/>        
          </members>      
      </gstruct>    

  </gstructs-skip>
