Schema2XMI is a generator that will read a database schema and write your schema into an XMI model. This is useful for a couple of reasons:
The produced XMI model will possess the following attributes:
Schema2XMI is a command line utility that you'll pass arguments to and then execute the main Schema2XMI class. The usage is defined below:
usage: org.andromda.schema2xmi.Schema2XMI [options] ...]]
Options:
-C,--classStereotypes <arg> Comma separated list of stereotype
names to add to the created class
-I,--identifierStereotypes <arg> Comma separated list of stereotype
names to add to any class identifiers
-P,--package <arg> The package to output classifiers
-V,--tableTaggedValue <arg> The tagged value to use for storing
the table name
-a,--columnPattern <arg> The column name pattern of columns to
process (regular expression)
-c,--connectionUrl <arg> JDBC connection URL
-d,--driver <arg> JDBC driver class
-h,--help Display help information
-i,--input <arg> Input model file (to which model
elements will be added)
-m,--mappings <arg> The type mappings URI (i.e.
file:${basedir}/DataypeMappings.xml)
-o,--output <arg> Output location to which the result of
the transformation will be written
-p,--password <arg> Schema user password
-s,--schema <arg> The name of the schema where the
tables can be found
-t,--tablePattern <arg> The table name pattern of tables to
process (regular expression)
-u,--user <arg> Schema user name
-v,--columnTaggedValue <arg> The tagged value to use for storing
the column name
-x,--xmi <arg> Specifies the XMI version that will be
produced
Here's an example of how you could use Schema2XMI with an Oracle schema from Ant with the java task .
<java classname="org.andromda.schema2xmi.Schema2XMI" fork="true">
<classpath>
<path refid="schema2xmi.classpath"/>
</classpath>
<arg value="-i"/>
<arg value="jar:file:${src.dir}/test/uml/SomeModel.xml.zip!/SomeModel.xml"/>
<arg value="-u"/>
<arg value="someuser"/>
<arg value="-p"/>
<arg value="somepassword"/>
<arg value="-c"/>
<arg value="jdbc:oracle:oci:@yoursid"/>
<arg value="-d"/>
<arg value="oracle.jdbc.driver.OracleDriver"/>
<arg value="-m"/>
<arg value="file:${conf.dir}/mappings/DatatypeMappings.xml"/>
<arg value="-o"/>
<arg value="${build.dir}/schema2xmi/transformed.xmi"/>
<arg value="-t"/>
<arg value="[\p{Lower}\p{Upper}[_]]*"/>
<arg value="-P"/>
<arg value="org::andromda::sample"/>
<arg value="-C"/>
<arg value="entity,persistent"/>
<ant value="-I"/>
<arg value="identifier"/>
<arg value="-V"/>
<arg value="andromda_persistence_table"/>
<arg value="-v"/>
<arg value="andromda_persistence_column"/>
</java>
IMPORTANT: The datatype mappings file that you specify with the -m argument, must be structured like the example directly below:
<!--
This is used to map SQL Types to
model datatypes for Schema2XMI
-->
<mappings name="DatatypeMappings">
<mapping>
<from>DECIMAL</from>
<to>datatype::Decimal</to>
</mapping>
<mapping>
<from>VARCHAR</from>
<to>datatype::String</to>
</mapping>
<mapping>
<from>TIMESTAMP</from>
<to>datatype::Timestamp</to>
</mapping>
<mapping>
<from>BLOB</from>
<to>datatype::Blob</to>
</mapping>
</mappings>