Author: tv Date: Tue Jun 27 11:22:13 2006 New Revision: 417546 URL: http://svn.apache.org/viewvc?rev=417546&view=rev Log: Added DBDesigner-to-Torque translator and some docs.
Added: db/torque/site/trunk/xdocs/tools/ db/torque/site/trunk/xdocs/tools/D4-Torque.xslt db/torque/site/trunk/xdocs/tools/index.xml Added: db/torque/site/trunk/xdocs/tools/D4-Torque.xslt URL: http://svn.apache.org/viewvc/db/torque/site/trunk/xdocs/tools/D4-Torque.xslt?rev=417546&view=auto ============================================================================== --- db/torque/site/trunk/xdocs/tools/D4-Torque.xslt (added) +++ db/torque/site/trunk/xdocs/tools/D4-Torque.xslt Tue Jun 27 11:22:13 2006 @@ -0,0 +1,183 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" doctype-system="http://db.apache.org/torque/dtd/database_3_2.dtd"/> + + <xsl:template match="/"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="DBMODEL"> + <database> + <xsl:attribute name="name"> + <xsl:value-of select="SETTINGS/GLOBALSETTINGS/@ModelName"/> + </xsl:attribute> + <xsl:apply-templates/> + </database> + </xsl:template> + + <xsl:template match="METADATA"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="TABLES"> + <xsl:for-each select="[EMAIL PROTECTED]"> + <table> + <xsl:attribute name="name"> + <xsl:value-of select="@Tablename"/> + </xsl:attribute> + <xsl:choose> + <xsl:when test="@nmTable = 1"> + <xsl:attribute name="idMethod">none</xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="idMethod">native</xsl:attribute> + </xsl:otherwise> + </xsl:choose> + <xsl:apply-templates/> + </table> + </xsl:for-each> + </xsl:template> + + <xsl:template match="COLUMNS"> + <xsl:for-each select="[EMAIL PROTECTED]"> + <column> + <xsl:attribute name="name"> + <xsl:value-of select="@ColName"/> + </xsl:attribute> + <xsl:if test="@PrimaryKey = 1"> + <xsl:attribute name="primaryKey">true</xsl:attribute> + </xsl:if> + <xsl:if test="@NotNull = 1"> + <xsl:attribute name="required">true</xsl:attribute> + </xsl:if> + <xsl:if test="@AutoInc = 1"> + <xsl:attribute name="autoIncrement">true</xsl:attribute> + </xsl:if> + <xsl:if test="@idDatatype = 20"> + <!-- VARCHAR --> + <xsl:attribute name="size"> + <xsl:value-of select="substring-after(substring-before(@DatatypeParams, ')'),'(')"/> + </xsl:attribute> + </xsl:if> + <xsl:attribute name="type"> + <xsl:variable name="d" select="@idDatatype"/> + <xsl:for-each select="//[EMAIL PROTECTED]"> + <xsl:choose> + <xsl:when test="@PhysicalMapping = 1"> + <xsl:choose> + <xsl:when test="contains(@PhysicalTypeName, 'BOOL')">BOOLEANINT</xsl:when> + <xsl:when test="contains(@PhysicalTypeName, 'DATETIME')">TIMESTAMP</xsl:when> + <xsl:when test="contains(@PhysicalTypeName, 'MEDIUMTEXT')">LONGVARCHAR</xsl:when> + <xsl:otherwise> + <xsl:value-of select="@PhysicalTypeName"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="contains(@TypeName, 'BOOL')">BOOLEANINT</xsl:when> + <xsl:when test="contains(@TypeName, 'DATETIME')">TIMESTAMP</xsl:when> + <xsl:when test="contains(@TypeName, 'MEDIUMTEXT')">LONGVARCHAR</xsl:when> + <xsl:otherwise> + <xsl:value-of select="@TypeName"/> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:attribute> + <xsl:if test="string-length(@DefaultValue) > 0"> + <xsl:attribute name="default"> + <xsl:value-of select="@DefaultValue"/> + </xsl:attribute> + </xsl:if> + <xsl:apply-templates/> + </column> + </xsl:for-each> + </xsl:template> + + <xsl:template match="RELATIONS_END"> + <xsl:for-each select="[EMAIL PROTECTED]"> + <foreign-key> + <xsl:variable name="id" select="@ID"/> + <xsl:for-each select="//[EMAIL PROTECTED]"> + <xsl:variable name="t" select="@SrcTable"/> + <xsl:for-each select="//[EMAIL PROTECTED]"> + <xsl:attribute name="foreignTable"> + <xsl:value-of select="@Tablename"/> + </xsl:attribute> + </xsl:for-each> + <xsl:if test="@CreateRefDef = 1"> + <xsl:attribute name="onUpdate"> + <xsl:choose> + <xsl:when test="contains(@RefDef, 'OnUpdate=0')">restrict</xsl:when> + <xsl:when test="contains(@RefDef, 'OnUpdate=1')">cascade</xsl:when> + <xsl:when test="contains(@RefDef, 'OnUpdate=2')">setnull</xsl:when> + <xsl:otherwise>none</xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <xsl:attribute name="onDelete"> + <xsl:choose> + <xsl:when test="contains(@RefDef, 'OnDelete=0')">restrict</xsl:when> + <xsl:when test="contains(@RefDef, 'OnDelete=1')">cascade</xsl:when> + <xsl:when test="contains(@RefDef, 'OnDelete=2')">setnull</xsl:when> + <xsl:otherwise>none</xsl:otherwise> + </xsl:choose> + </xsl:attribute> + </xsl:if> + <reference> + <xsl:attribute name="local"> + <xsl:value-of select="substring-after(substring-before(@FKFields, '\'), '=')"/> + </xsl:attribute> + <xsl:attribute name="foreign"> + <xsl:value-of select="substring-before(@FKFields,'=')"/> + </xsl:attribute> + </reference> + </xsl:for-each> + <xsl:apply-templates/> + </foreign-key> + </xsl:for-each> + </xsl:template> + + <xsl:template match="INDICES"> + <xsl:for-each select="[EMAIL PROTECTED]"> + <xsl:choose> + <xsl:when test="@IndexKind = 1"> + <index> + <xsl:attribute name="name"> + <xsl:value-of select="@IndexName"/> + </xsl:attribute> + <xsl:for-each select="INDEXCOLUMNS/[EMAIL PROTECTED]"> + <index-column> + <xsl:variable name="c" select="@idColumn"/> + <xsl:for-each select="//[EMAIL PROTECTED]"> + <xsl:attribute name="name"> + <xsl:value-of select="@ColName"/> + </xsl:attribute> + </xsl:for-each> + </index-column> + </xsl:for-each> + </index> + </xsl:when> + <xsl:when test="@IndexKind = 2"> + <unique> + <xsl:attribute name="name"> + <xsl:value-of select="@IndexName"/> + </xsl:attribute> + <xsl:for-each select="INDEXCOLUMNS/[EMAIL PROTECTED]"> + <unique-column> + <xsl:variable name="c" select="@idColumn"/> + <xsl:for-each select="//[EMAIL PROTECTED]"> + <xsl:attribute name="name"> + <xsl:value-of select="@ColName"/> + </xsl:attribute> + </xsl:for-each> + </unique-column> + </xsl:for-each> + </unique> + </xsl:when> + </xsl:choose> + </xsl:for-each> + </xsl:template> + +</xsl:stylesheet> \ No newline at end of file Added: db/torque/site/trunk/xdocs/tools/index.xml URL: http://svn.apache.org/viewvc/db/torque/site/trunk/xdocs/tools/index.xml?rev=417546&view=auto ============================================================================== --- db/torque/site/trunk/xdocs/tools/index.xml (added) +++ db/torque/site/trunk/xdocs/tools/index.xml Tue Jun 27 11:22:13 2006 @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright 2001-2006 The Apache Software Foundation. + + Licensed 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. +--> + +<document> + <properties> + <title>Transforming DBDesigner Schemas into Torque Format</title> + <author email="[EMAIL PROTECTED]">Thomas Vandahl</author> + </properties> + + <body> + <section name="D4-Torque.xslt"> + <p> + <a href="http://fabforce.net/dbdesigner4/">DBDesigner</a> is a tool which + helps with database design. It is made for MySQL databases, mostly. + DBDesigner kindly stores the model in XML files which contain most + information that we need in the Torque schema. So this script was + created to transform one form into the other. + </p> + <p> + To use the script <a href="D4-Torque.xslt"><code>D4-Torque.xslt</code></a>, + simply fire up the XSLT-processor of your choice and give it the DBDesigner + model as an input. + </p> + </section> + <section name="Status"> + <p> + This script was made for transforming a certain model into the associated + Torque schema. So basically, "It works for me". Mostly the mapping + of DBDesigner types into Torque types is incomplete. Any patches are welcome + (as always). + </p> + <p> + DBDesigner is no longer actively being developed. It's successor, + <a href="http://dev.mysql.com/downloads/workbench/">MySQL Workbench</a>, + is currently in Beta status. As far as we can see, the format of the + model files will need adjustment when it's ready. + </p> + </section> + </body> +</document> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]