/[volute]/trunk/projects/theory/snapdm/res/intermediate2ddl.xsl
ViewVC logotype

Diff of /trunk/projects/theory/snapdm/res/intermediate2ddl.xsl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 406 by gerard.lemson, Wed May 7 16:57:32 2008 UTC revision 407 by gerard.lemson, Thu May 8 09:22:17 2008 UTC
# Line 39  Line 39 
39    <xsl:strip-space elements="*" />    <xsl:strip-space elements="*" />
40        
41    <xsl:key name="element" match="*//*" use="@xmiid"/>    <xsl:key name="element" match="*//*" use="@xmiid"/>
42    <xsl:key name="elements" match="*//*" use="@xmiid cast as xsd:string"/>    <xsl:key name="ptype" match="*//primitiveType" use="@xmiid"/>
43      <xsl:key name="dtype" match="*//dataType" use="@xmiid"/>
44      <xsl:key name="enum" match="*//enumeration" use="@xmiid"/>
45        
46        
47    <xsl:param name="lastModified"/>    <xsl:param name="lastModified"/>
# Line 112  Line 114 
114    
115        <xsl:for-each select="exsl:node-set($sortedObjectTypes)/node/objectType">          <xsl:for-each select="exsl:node-set($sortedObjectTypes)/node/objectType">  
116          <xsl:sort select="position()" data-type="number" order="ascending"/>          <xsl:sort select="position()" data-type="number" order="ascending"/>
117            
118            <xsl:variable name="type" select="key('element',@xmiid)"/>
119            <xsl:message>Object Type: <xsl:value-of select="$type/name"/></xsl:message>
120            <xsl:for-each select="attribute">
121              <xsl:variable name="xmiidref" select="datatype/@xmiidref"/>
122              <xsl:variable name="attrtype" select="key('element',$xmiidref)/name"/>
123              <xsl:message>  Attribute : <xsl:value-of select="concat(name,':',datatype/@xmiidref,':',$attrtype)"/></xsl:message>
124            </xsl:for-each>
125          <xsl:text>------------------------------------------------------</xsl:text>&cr;          <xsl:text>------------------------------------------------------</xsl:text>&cr;
126          <xsl:text>-- Table representation of the objectType </xsl:text><xsl:value-of select="name"/>&cr;          <xsl:text>-- Table representation of the objectType </xsl:text><xsl:value-of select="name"/>&cr;
127          <xsl:text>-- XMI-ID = </xsl:text><xsl:value-of select="@xmiid"/>&cr;          <xsl:text>-- XMI-ID = </xsl:text><xsl:value-of select="@xmiid"/>&cr;
128          <xsl:text>/*-----------------------</xsl:text>&cr;          <xsl:text>/*-----------------------</xsl:text>&cr;
129          <xsl:value-of select="description"/>&cr;          <xsl:value-of select="description"/>&cr;
130          <xsl:text> ------------------------*/</xsl:text>&cr;          <xsl:text> ------------------------*/</xsl:text>&cr;
131          <xsl:apply-templates select="." mode="createTable"/>          
132            <xsl:apply-templates select="$type" mode="createTable"/>
133    
134          <xsl:apply-templates select="." mode="createIndexes"/>          <xsl:apply-templates select="." mode="createIndexes"/>
135          <!-- because of topologically sorted nodes, can define the foreign keys directly after the table definition -->          <!-- because of topologically sorted nodes, can define the foreign keys directly after the table definition -->
# Line 170  Line 181 
181    
182    
183    
184    
185        
186    <xsl:template match="objectType" mode="createTable">    <xsl:template match="objectType" mode="createTable">
187      <!-- generate a single table for the whole object hierarchy below the matched objectType -->      <!-- generate a single table for the whole object hierarchy below the matched objectType -->
# Line 177  Line 189 
189        <xsl:apply-templates select="." mode="tableName"/>        <xsl:apply-templates select="." mode="tableName"/>
190      </xsl:variable>      </xsl:variable>
191  <xsl:text>CREATE TABLE </xsl:text><xsl:value-of select="$tableName"/> <xsl:text>(</xsl:text>&cr;  <xsl:text>CREATE TABLE </xsl:text><xsl:value-of select="$tableName"/> <xsl:text>(</xsl:text>&cr;
192  <xsl:text>  id bigint not null</xsl:text>&cr;  &bl;&bl;<xsl:value-of select="$primaryKeyColumnName"/><xsl:text> bigint not null</xsl:text>&cr;
193  <xsl:if test="not(extends)"><xsl:apply-templates select="." mode="discriminatorColumnDeclaration"/></xsl:if>  <xsl:if test="not(extends)"><xsl:apply-templates select="." mode="discriminatorColumnDeclaration"/></xsl:if>
194  <xsl:apply-templates select="." mode="container"/>  <xsl:apply-templates select="." mode="container"/>
195  <xsl:apply-templates select="attribute" />  <xsl:apply-templates select="attribute" />
# Line 322  Line 334 
334        
335    <xsl:template match="attribute" >    <xsl:template match="attribute" >
336      <xsl:param name="prefix"/>      <xsl:param name="prefix"/>
337    <xsl:message ><xsl:value-of select="concat(name,':',datatype/@name)"/>
338    : <xsl:apply-templates select="datatype/@xmiidref" mode="classifier"/></xsl:message>      
339            
340      <xsl:variable name="columnname">      <xsl:variable name="columnname">
341        <xsl:choose>        <xsl:choose>
# Line 336  Line 350 
350      <xsl:variable name="type" select="key('element',datatype/@xmiidref)"/>      <xsl:variable name="type" select="key('element',datatype/@xmiidref)"/>
351      <xsl:choose>      <xsl:choose>
352        <xsl:when test="name($type) != 'primitiveType'">        <xsl:when test="name($type) != 'primitiveType'">
353        <xsl:apply-templates select="$type" mode="columns"><xsl:with-param name="prefix" select="$columnname"/></xsl:apply-templates></xsl:when>          <xsl:apply-templates select="$type" mode="columns"><xsl:with-param name="prefix" select="$columnname"/></xsl:apply-templates>
354          </xsl:when>
355        <xsl:otherwise>        <xsl:otherwise>
356          <xsl:variable name="sqltype">          <xsl:variable name="sqltype">
357            <xsl:call-template name="sqltype">            <xsl:call-template name="sqltype">
# Line 351  Line 366 
366        
367        
368        
369      <!--  DEBUG template -->    
370      <xsl:template match="datatype/@xmiidref" mode="classifier">
371        <xsl:variable name="type" select="key('element',.)"/>
372        <xsl:value-of select="$type/name"/>
373      </xsl:template>
374      <!-- END DEBUG -->
375      
376      
377      
378        
379    <!-- We need lengths for (var)char datatypes -->    <!-- We need lengths for (var)char datatypes -->
380    <xsl:template name="sqltype">    <xsl:template name="sqltype">
# Line 414  Line 438 
438        
439        
440    <!-- We need lengths for (var)char datatypes -->    <!-- We need lengths for (var)char datatypes -->
441    <xsl:template match="*/dataType" mode="columns">    <xsl:template match="dataType" mode="columns">
442      <xsl:param name="prefix"/>      <xsl:param name="prefix"/>
443    <xsl:message><xsl:value-of select="$prefix"/>_<xsl:value-of select="name"/></xsl:message>
444      <xsl:choose>      <xsl:choose>
445        <xsl:when test="not(attribute)">, <xsl:value-of select="$prefix"/> varchar(256) -- <xsl:value-of select="name"/>&cr;</xsl:when>        <xsl:when test="not(attribute)">, <xsl:value-of select="$prefix"/> varchar(256) -- <xsl:value-of select="name"/>&cr;</xsl:when>
446        <xsl:otherwise><xsl:apply-templates select="attribute"><xsl:with-param name="prefix" select="$prefix"/></xsl:apply-templates></xsl:otherwise>        <xsl:otherwise><xsl:apply-templates select="attribute"><xsl:with-param name="prefix" select="$prefix"/></xsl:apply-templates></xsl:otherwise>
# Line 426  Line 451 
451        
452        
453    <!-- We need lengths for (var)char datatypes -->    <!-- We need lengths for (var)char datatypes -->
454    <xsl:template match="*/enumeration" mode="columns">    <xsl:template match="enumeration" mode="columns">
455      <xsl:param name="prefix"/>, <xsl:value-of select="$prefix"/> varchar(256) -- <xsl:value-of select="name"/>&cr;      <xsl:param name="prefix"/>, <xsl:value-of select="$prefix"/> varchar(256) -- <xsl:value-of select="name"/>&cr;
456    </xsl:template>    </xsl:template>
457        

Legend:
Removed from v.406  
changed lines
  Added in v.407

msdemlei@ari.uni-heidelberg.de
ViewVC Help
Powered by ViewVC 1.1.26