/[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 434 by gerard.lemson, Thu May 8 16:52:53 2008 UTC revision 435 by gerard.lemson, Fri May 9 16:17:58 2008 UTC
# Line 197  Line 197 
197        <xsl:apply-templates select="." mode="tableName"/>        <xsl:apply-templates select="." mode="tableName"/>
198      </xsl:variable>      </xsl:variable>
199  <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;
200  &bl;&bl;<xsl:value-of select="$primaryKeyColumnName"/><xsl:text> bigint not null</xsl:text>&cr;  &bl;&bl;<xsl:value-of select="concat($primaryKeyColumnName,' ',$IDDatatype)"/>&bl;<xsl:if test="not(extends)"><xsl:text>IDENTITY </xsl:text></xsl:if><xsl:text>not null</xsl:text>&cr;
201  <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>
202  <xsl:apply-templates select="." mode="container"/>  <xsl:apply-templates select="." mode="container"/>
203  <xsl:apply-templates select="attribute" />  <xsl:apply-templates select="attribute" />
# Line 232  Line 232 
232      <xsl:choose>      <xsl:choose>
233        <xsl:when test="extends">        <xsl:when test="extends">
234          <xsl:text>  SELECT b.*</xsl:text>&cr;          <xsl:text>  SELECT b.*</xsl:text>&cr;
235          <xsl:for-each select="attribute|reference">          <xsl:for-each select="attribute">
236              <xsl:variable name="columns">
237                <xsl:apply-templates select="." mode="columns"/>
238              </xsl:variable>
239              <xsl:for-each select="exsl:node-set($columns)/column">
240                <xsl:text>  ,      t.</xsl:text><xsl:value-of select="name"/>&cr;
241              </xsl:for-each>  
242            </xsl:for-each>
243            <xsl:for-each select="reference[not(subsets)]">
244            <xsl:text>  ,      t.</xsl:text><xsl:apply-templates select="." mode="columnName"/>&cr;            <xsl:text>  ,      t.</xsl:text><xsl:apply-templates select="." mode="columnName"/>&cr;
245          </xsl:for-each>                  </xsl:for-each>        
246          <xsl:text>    FROM </xsl:text><xsl:value-of select="$tableName"/><xsl:text> t</xsl:text>&cr;          <xsl:text>    FROM </xsl:text><xsl:value-of select="$tableName"/><xsl:text> t</xsl:text>&cr;
247          <xsl:text>    ,    </xsl:text><xsl:apply-templates select="$base" mode="viewName"/> b          <xsl:text>    ,    </xsl:text><xsl:apply-templates select="$base" mode="viewName"/> b
248  <xsl:text>   WHERE b.</xsl:text><xsl:value-of select="$primaryKeyColumnName"/><xsl:text> = t.</xsl:text><xsl:value-of select="$primaryKeyColumnName"/>;&cr;&cr;  <xsl:text>   WHERE b.</xsl:text><xsl:value-of select="$primaryKeyColumnName"/><xsl:text> = t.</xsl:text><xsl:value-of select="$primaryKeyColumnName"/>
249        </xsl:when>        </xsl:when>
250        <xsl:otherwise>        <xsl:otherwise>
251  <xsl:text>  SELECT *</xsl:text>&cr;  <xsl:text>  SELECT *</xsl:text>&cr;
252  <xsl:text>    FROM </xsl:text><xsl:value-of select="$tableName"/>;&cr;&cr;  <xsl:text>    FROM </xsl:text><xsl:value-of select="$tableName"/>
253        </xsl:otherwise>        </xsl:otherwise>
254      </xsl:choose>      </xsl:choose>
255        <xsl:choose>
256        <xsl:when test="$vendor='mssqlserver'">
257        &cr;<xsl:text>GO</xsl:text>
258        </xsl:when>
259        <xsl:otherwise>
260        <xsl:text>;</xsl:text>
261        </xsl:otherwise>
262        </xsl:choose>
263        &cr;&cr;
264    </xsl:template>    </xsl:template>
265        
266    
# Line 251  Line 268 
268    
269    <xsl:template match="objectType" mode="dropView">    <xsl:template match="objectType" mode="dropView">
270      <!-- 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 -->
271      <xsl:variable name="tableName">      <xsl:variable name="viewName">
272        <xsl:apply-templates select="." mode="tableName"/>        <xsl:apply-templates select="." mode="viewName"/>
273      </xsl:variable>      </xsl:variable>
274  DROP VIEW v_<xsl:value-of select="$tableName"/>;&cr;&cr;  <xsl:text>DROP VIEW </xsl:text><xsl:value-of select="$viewName"/>;&cr;&cr;
275    </xsl:template>    </xsl:template>
276    
277    
# Line 279  Line 296 
296        <xsl:apply-templates select="key('element',datatype/@xmiidref)" mode="tableName"/>        <xsl:apply-templates select="key('element',datatype/@xmiidref)" mode="tableName"/>
297      </xsl:variable>      </xsl:variable>
298  <xsl:text>alter table </xsl:text><xsl:value-of select="$tableName"/> add constraint fk_<xsl:value-of select="$tableName"/>_<xsl:value-of select="name"/>&cr;  <xsl:text>alter table </xsl:text><xsl:value-of select="$tableName"/> add constraint fk_<xsl:value-of select="$tableName"/>_<xsl:value-of select="name"/>&cr;
299  <xsl:text>    foreign key (</xsl:text><xsl:value-of select="name"/>Id) references <xsl:value-of select="$otherTable"/>(<xsl:value-of select="$primaryKeyColumnName"/>);&cr;&cr;  <xsl:text>    foreign key (</xsl:text><xsl:apply-templates select="." mode="columnName"/>) references <xsl:value-of select="$otherTable"/>(<xsl:value-of select="$primaryKeyColumnName"/>);&cr;&cr;
300  </xsl:for-each>  </xsl:for-each>
301    </xsl:template>    </xsl:template>
302    
# Line 292  Line 309 
309        <xsl:apply-templates select="." mode="tableName"/>        <xsl:apply-templates select="." mode="tableName"/>
310      </xsl:variable>      </xsl:variable>
311      <xsl:for-each select="reference">      <xsl:for-each select="reference">
312  DROP FOREIGN KEY fk_<xsl:value-of select="$tableName"/>_<xsl:value-of select="name"/> (<xsl:value-of select="name"/>Id);&cr;&cr;  DROP FOREIGN KEY fk_<xsl:value-of select="$tableName"/>_<xsl:value-of select="name"/> (<xsl:apply-templates select="." mode="columnName"/>);&cr;&cr;
313  </xsl:for-each>  </xsl:for-each>
314    </xsl:template>    </xsl:template>
315    
# Line 308  Line 325 
325  alter table <xsl:value-of select="$tableName"/> add constraint pk_<xsl:value-of select="$tableName"/>_<xsl:value-of select="$primaryKeyColumnName"/> primary key(<xsl:value-of select="$primaryKeyColumnName"/>);&cr;&cr;  alter table <xsl:value-of select="$tableName"/> add constraint pk_<xsl:value-of select="$tableName"/>_<xsl:value-of select="$primaryKeyColumnName"/> primary key(<xsl:value-of select="$primaryKeyColumnName"/>);&cr;&cr;
326            
327      <xsl:for-each select="reference[not(subsets)]">      <xsl:for-each select="reference[not(subsets)]">
328  CREATE INDEX ix_<xsl:value-of select="$tableName"/>_<xsl:value-of select="name"/> on <xsl:value-of select="$tableName"/>(<xsl:value-of select="name"/>Id);&cr;&cr;  CREATE INDEX ix_<xsl:value-of select="$tableName"/>_<xsl:value-of select="name"/> on <xsl:value-of select="$tableName"/>(<xsl:apply-templates select="." mode="columnName"/>);&cr;&cr;
329  </xsl:for-each>  </xsl:for-each>
330    </xsl:template>    </xsl:template>
331    
# Line 321  Line 338 
338        <xsl:apply-templates select="." mode="tableName"/>        <xsl:apply-templates select="." mode="tableName"/>
339      </xsl:variable>      </xsl:variable>
340      <xsl:for-each select="reference">      <xsl:for-each select="reference">
341  DROP INDEX <xsl:value-of select="$tableName"/>.ix_<xsl:value-of select="$tableName"/>_<xsl:value-of select="name"/> (<xsl:value-of select="name"/>Id);&cr;&cr;  DROP INDEX <xsl:value-of select="$tableName"/>.ix_<xsl:value-of select="$tableName"/>_<xsl:value-of select="name"/> (<xsl:apply-templates select="." mode="columnName"/>);&cr;&cr;
342  </xsl:for-each>  </xsl:for-each>
343    </xsl:template>      </xsl:template>  
344        
# Line 333  Line 350 
350    NOTE we should ensure that there is only 1  -->    NOTE we should ensure that there is only 1  -->
351    <xsl:template match="objectType" mode="container">    <xsl:template match="objectType" mode="container">
352      <xsl:variable name="xmiid" select="@xmiid"/>      <xsl:variable name="xmiid" select="@xmiid"/>
353      <xsl:if test="container">, containerId bigint not null -- <xsl:value-of select="key('element',container/@xmiidref)/name"/>&cr;      <xsl:if test="container"><xsl:text>, containerId </xsl:text><xsl:value-of select="$IDDatatype"/><xsl:text> not null -- </xsl:text><xsl:value-of select="key('element',container/@xmiidref)/name"/>&cr;
354      </xsl:if>      </xsl:if>
355    </xsl:template>    </xsl:template>
356        
# Line 416  Line 433 
433        
434        
435    <xsl:template match="reference">    <xsl:template match="reference">
436      <xsl:if test="not(subsets)">, <xsl:value-of select="name"/>Id&bl;bigint <xsl:call-template name="nullity"><xsl:with-param name="multiplicity" select="multiplicity"/></xsl:call-template> -- <xsl:value-of select="key('element',datatype/@xmiidref)/name"/>&cr;      <xsl:if test="not(subsets)">, <xsl:apply-templates select="." mode="columnName"/>&bl;<xsl:value-of select="$IDDatatype"/>&bl;<xsl:call-template name="nullity"><xsl:with-param name="multiplicity" select="multiplicity"/></xsl:call-template> -- <xsl:value-of select="key('element',datatype/@xmiidref)/name"/>&cr;
437      </xsl:if>      </xsl:if>
438    </xsl:template>    </xsl:template>
439        
# Line 446  Line 463 
463    
464  <!-- Maybe somewhat too much indirection here? -->  <!-- Maybe somewhat too much indirection here? -->
465    <xsl:template match="objectType" mode="PK_COLUMN">    <xsl:template match="objectType" mode="PK_COLUMN">
466      <xsl:value-of select="$primaryKeyColumnName"/> bigint not null      <xsl:value-of select="concat($primaryKeyColumnName,' ',$IDDatatype)"/><xsl:text> not null</xsl:text>
467    </xsl:template>    </xsl:template>
468    
469    

Legend:
Removed from v.434  
changed lines
  Added in v.435

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