You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by tv...@apache.org on 2006/06/27 20:22:13 UTC
svn commit: r417546 - in /db/torque/site/trunk/xdocs/tools: ./
D4-Torque.xslt index.xml
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="TABLE[@Tablename]">
+ <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="COLUMN[@ColName]">
+ <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="//DATATYPE[@ID=$d]">
+ <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="RELATION_END[@ID]">
+ <foreign-key>
+ <xsl:variable name="id" select="@ID"/>
+ <xsl:for-each select="//RELATION[@ID=$id]">
+ <xsl:variable name="t" select="@SrcTable"/>
+ <xsl:for-each select="//TABLE[@ID=$t]">
+ <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="INDEX[@ID]">
+ <xsl:choose>
+ <xsl:when test="@IndexKind = 1">
+ <index>
+ <xsl:attribute name="name">
+ <xsl:value-of select="@IndexName"/>
+ </xsl:attribute>
+ <xsl:for-each select="INDEXCOLUMNS/INDEXCOLUMN[@idColumn]">
+ <index-column>
+ <xsl:variable name="c" select="@idColumn"/>
+ <xsl:for-each select="//COLUMN[@ID=$c]">
+ <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/INDEXCOLUMN[@idColumn]">
+ <unique-column>
+ <xsl:variable name="c" select="@idColumn"/>
+ <xsl:for-each select="//COLUMN[@ID=$c]">
+ <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="tv@apache.org">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: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org