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>