This does not work, but...
I'm halfway through refactoring adl2controllerclasses, and about to make an even more radical change. This is a way back in case it goes horribly wrong.
This commit is contained in:
parent
f9fd11c101
commit
f5b524e5c7
|
@ -9,8 +9,8 @@
|
||||||
Transform ADL into (partial) controller classes
|
Transform ADL into (partial) controller classes
|
||||||
|
|
||||||
$Author: sb $
|
$Author: sb $
|
||||||
$Revision: 1.9 $
|
$Revision: 1.10 $
|
||||||
$Date: 2008-06-04 16:17:39 $
|
$Date: 2008-06-06 08:46:27 $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- WARNING WARNING WARNING: Do NOT reformat this file!
|
<!-- WARNING WARNING WARNING: Do NOT reformat this file!
|
||||||
|
@ -72,7 +72,7 @@
|
||||||
//
|
//
|
||||||
// Automatically generated abstract super class for controllers for the
|
// Automatically generated abstract super class for controllers for the
|
||||||
// <xsl:value-of select="/adl:application/@name"/> application; generated using
|
// <xsl:value-of select="/adl:application/@name"/> application; generated using
|
||||||
// adl2controllerclasses.xslt version <xsl:value-of select="substring( '$Revision: 1.9 $', 10)"/>
|
// adl2controllerclasses.xslt version <xsl:value-of select="substring( '$Revision: 1.10 $', 10)"/>
|
||||||
//
|
//
|
||||||
// This file is automatically generated; DO NOT EDIT IT.
|
// This file is automatically generated; DO NOT EDIT IT.
|
||||||
//
|
//
|
||||||
|
@ -135,7 +135,7 @@ namespace <xsl:value-of select="$controllerns"/> {
|
||||||
//
|
//
|
||||||
// Controller for auto-generated forms for editing <xsl:value-of select="@name"/>s
|
// Controller for auto-generated forms for editing <xsl:value-of select="@name"/>s
|
||||||
// Automatically generated from application description using
|
// Automatically generated from application description using
|
||||||
// adl2controllerclasses.xslt version <xsl:value-of select="substring( '$Revision: 1.9 $', 10)"/>
|
// adl2controllerclasses.xslt version <xsl:value-of select="substring( '$Revision: 1.10 $', 10)"/>
|
||||||
//
|
//
|
||||||
// This file is automatically generated; DO NOT EDIT IT.
|
// This file is automatically generated; DO NOT EDIT IT.
|
||||||
//
|
//
|
||||||
|
@ -296,10 +296,12 @@ namespace <xsl:value-of select="$controllerns"/> {
|
||||||
</xsl:call-template>
|
</xsl:call-template>
|
||||||
</xsl:variable>
|
</xsl:variable>
|
||||||
hibernator.CreateCriteria( typeof( <xsl:value-of select="concat( $entityns, '.', $keyentity)"/>))
|
hibernator.CreateCriteria( typeof( <xsl:value-of select="concat( $entityns, '.', $keyentity)"/>))
|
||||||
.Add(Expression.Eq( "<xsl:value-of select="//adl:entity[@name=$keyentity]/adl:key/adl:property[position()=1]/@name"/>",<xsl:choose>
|
<xsl:call-template name="add-hibernate-expression-eq">
|
||||||
<xsl:when test="$keyenttype = 'int'">Int32.Parse( Form[ "<xsl:value-of select="concat( 'instance.', @name)"/>"])</xsl:when>
|
<xsl:with-param name="property" select="//adl:entity[@name=$keyentity]/adl:key/adl:property[position()=1]"/>
|
||||||
<xsl:otherwise>Form[ "<xsl:value-of select="concat( 'instance.', @name)"/>"]</xsl:otherwise>
|
<xsl:with-param name="value">
|
||||||
</xsl:choose>))
|
Form[ "<xsl:value-of select="concat( 'instance.', @name)"/>"]
|
||||||
|
</xsl:with-param>
|
||||||
|
</xsl:call-template>
|
||||||
.UniqueResult<<xsl:value-of select="concat( $entityns, '.', $keyentity)"/>>()</xsl:when>
|
.UniqueResult<<xsl:value-of select="concat( $entityns, '.', $keyentity)"/>>()</xsl:when>
|
||||||
<xsl:otherwise>Form["<xsl:value-of select="concat( 'instance.', @name)"/>"]</xsl:otherwise>
|
<xsl:otherwise>Form["<xsl:value-of select="concat( 'instance.', @name)"/>"]</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
@ -386,7 +388,14 @@ namespace <xsl:value-of select="$controllerns"/> {
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
</xsl:for-each>
|
</xsl:for-each>
|
||||||
|
|
||||||
<xsl:for-each select="property[@type='link']">
|
<xsl:for-each select="descendant::adl:property[@type='link']">
|
||||||
|
<xsl:variable name="farentityname" select="@entity"/>
|
||||||
|
<xsl:variable name="farkey" select="//adl:entity[@name=$farentityname]/adl:key/adl:property[position()=1]/@name"/>
|
||||||
|
<xsl:variable name="farkeybasetype">
|
||||||
|
<xsl:call-template name="base-type">
|
||||||
|
<xsl:with-param name="property" select="//adl:entity[@name=$farentityname]/adl:key/adl:property[position()=1]"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:variable>
|
||||||
/* to update a link table which has no other data than the near and far keys, it is
|
/* to update a link table which has no other data than the near and far keys, it is
|
||||||
* sufficient to smash the existing values and create new ones. It's also a lot easier! */
|
* sufficient to smash the existing values and create new ones. It's also a lot easier! */
|
||||||
|
|
||||||
|
@ -408,9 +417,12 @@ namespace <xsl:value-of select="$controllerns"/> {
|
||||||
foreach ( string index in <xsl:value-of select="concat(@name, 'Values')"/>)
|
foreach ( string index in <xsl:value-of select="concat(@name, 'Values')"/>)
|
||||||
{
|
{
|
||||||
<xsl:value-of select="concat( 'record.', @name)"/>.Add(
|
<xsl:value-of select="concat( 'record.', @name)"/>.Add(
|
||||||
hibernator.CreateCriteria(typeof(<xsl:value-of select="@entity"/>))
|
hibernator.CreateCriteria(typeof(<xsl:value-of select="concat( $entityns, '.', @entity)"/>))
|
||||||
.Add(Expression.Eq("<xsl:value-of select="@entity"/>Id", index))
|
<xsl:call-template name="add-hibernate-expression-eq">
|
||||||
.UniqueResult<<xsl:value-of select="$entityns"/>.<xsl:value-of select="@entity"/>>());
|
<xsl:with-param name="property" select="//adl:entity[@name=$farentityname]/adl:key/adl:property[position()=1]"/>
|
||||||
|
<xsl:with-param name="value" select="index"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
.UniqueResult<<xsl:value-of select="concat( $entityns, '.', @entity)"/>>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</xsl:for-each>
|
</xsl:for-each>
|
||||||
|
@ -468,20 +480,10 @@ namespace <xsl:value-of select="$controllerns"/> {
|
||||||
{
|
{
|
||||||
<xsl:value-of select="concat( $entityns, '.', @entity)"/> item =
|
<xsl:value-of select="concat( $entityns, '.', @entity)"/> item =
|
||||||
hibernator.CreateCriteria(typeof(<xsl:value-of select="@entity"/>))
|
hibernator.CreateCriteria(typeof(<xsl:value-of select="@entity"/>))
|
||||||
.Add(Expression.Eq("<xsl:value-of select="$farkey"/>", <xsl:choose>
|
<xsl:call-template name="add-hibernate-expression-eq">
|
||||||
<xsl:when test="$farkeybasetype = 'string'">
|
<xsl:with-param name="property" select="//adl:entity[@name=$farentityname]/adl:key/adl:property[position()=1]"/>
|
||||||
index
|
<xsl:with-param name="value" select="index"/>
|
||||||
</xsl:when>
|
</xsl:call-template>
|
||||||
<xsl:when test="$farkeybasetype = 'integer'">
|
|
||||||
Int32.Parse( index)
|
|
||||||
</xsl:when>
|
|
||||||
<xsl:otherwise>
|
|
||||||
<xsl:message terminate="yes">
|
|
||||||
ADL: Error: keys of type <xsl:value-of select="$farkeybasetype"/> cannot yet be used
|
|
||||||
in lists
|
|
||||||
</xsl:message>
|
|
||||||
</xsl:otherwise>
|
|
||||||
</xsl:choose>))
|
|
||||||
.UniqueResult<<xsl:value-of select="concat( $entityns, '.', @entity)"/>>();
|
.UniqueResult<<xsl:value-of select="concat( $entityns, '.', @entity)"/>>();
|
||||||
|
|
||||||
if ( ! record.<xsl:value-of select="@name"/>.Contains( item))
|
if ( ! record.<xsl:value-of select="@name"/>.Contains( item))
|
||||||
|
@ -631,35 +633,19 @@ namespace <xsl:value-of select="$controllerns"/> {
|
||||||
<xsl:with-param name="property" select="."/>
|
<xsl:with-param name="property" select="."/>
|
||||||
</xsl:call-template>
|
</xsl:call-template>
|
||||||
</xsl:variable>
|
</xsl:variable>
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="@type='message'">
|
<xsl:when test="$base-type='boolean'"/>
|
||||||
<!-- search.Add( Expression.Like( "<xsl:value-of select="@name"/>.LocalText", "%"+Params["<xsl:value-of select="concat( 'search_', @name)"/>"]+"%")); -->
|
<xsl:when test="$base-type='link'"/>
|
||||||
</xsl:when>
|
<xsl:when test="$base-type='list'"/>
|
||||||
<xsl:when test="$base-type = 'integer'">
|
<xsl:otherwise>
|
||||||
if ( ! String.IsNullOrEmpty( Params[ "<xsl:value-of select="concat( 'search_', @name)"/>"])) {
|
if ( ! String.IsNullOrEmpty( Params[ "<xsl:value-of select="concat( 'search_', @name)"/>"])) {
|
||||||
search.Add( Expression.Eq( "<xsl:value-of select="@name"/>", Int32.Parse( Params["<xsl:value-of select="concat( 'search_', @name)"/>"])));
|
search<xsl:call-template name="add-hibernate-expression-like">
|
||||||
|
<xsl:with-param name="property" select="."/>
|
||||||
|
<xsl:with-param name="value" select="concat( 'search_', @name)"/>
|
||||||
|
</xsl:call-template>;
|
||||||
}
|
}
|
||||||
</xsl:when>
|
</xsl:otherwise>
|
||||||
<xsl:when test="$base-type = 'real'">
|
</xsl:choose>
|
||||||
if ( ! String.IsNullOrEmpty( Params[ "<xsl:value-of select="concat( 'search_', @name)"/>"])) {
|
|
||||||
search.Add( Expression.Eq( "<xsl:value-of select="@name"/>", Int32.Parse( Params["<xsl:value-of select="concat( 'search_', @name)"/>"])));
|
|
||||||
}
|
|
||||||
</xsl:when>
|
|
||||||
<xsl:when test="$base-type = 'money'">
|
|
||||||
if ( ! String.IsNullOrEmpty( Params[ "<xsl:value-of select="concat( 'search_', @name)"/>"])) {
|
|
||||||
search.Add( Expression.Eq( "<xsl:value-of select="@name"/>", Int32.Parse( Params["<xsl:value-of select="concat( 'search_', @name)"/>"])));
|
|
||||||
}
|
|
||||||
</xsl:when>
|
|
||||||
<!-- xsl:when test="$base-type = 'entity'">
|
|
||||||
search.Add( Expression.Like( "<xsl:value-of select="@name"/>.UserIdentifier", "%"+Params["<xsl:value-of select="concat( 'search_', @name)"/>"]+"%"));
|
|
||||||
</xsl:when doesn't work -->
|
|
||||||
<xsl:otherwise>
|
|
||||||
if ( ! String.IsNullOrEmpty( Params[ "<xsl:value-of select="concat( 'search_', @name)"/>"])) {
|
|
||||||
search.Add( Expression.Like( "<xsl:value-of select="@name"/>", "%"+Params["<xsl:value-of select="concat( 'search_', @name)"/>"]+"%"));
|
|
||||||
}
|
|
||||||
</xsl:otherwise>
|
|
||||||
</xsl:choose>
|
|
||||||
|
|
||||||
</xsl:for-each>
|
</xsl:for-each>
|
||||||
<xsl:for-each select="adl:property[@distinct='user' or @distinct='all']">
|
<xsl:for-each select="adl:property[@distinct='user' or @distinct='all']">
|
||||||
search.AddOrder(<xsl:value-of select="concat( ' new Order( "', @name, '", true)')"/>);
|
search.AddOrder(<xsl:value-of select="concat( ' new Order( "', @name, '", true)')"/>);
|
||||||
|
@ -706,40 +692,6 @@ namespace <xsl:value-of select="$controllerns"/> {
|
||||||
<xsl:with-param name="property" select="."/>
|
<xsl:with-param name="property" select="."/>
|
||||||
</xsl:call-template>
|
</xsl:call-template>
|
||||||
</xsl:variable>
|
</xsl:variable>
|
||||||
.Add( Expression.Eq( "<xsl:value-of select="@name"/>", <xsl:choose>
|
|
||||||
<xsl:when test="$basetype='integer'">
|
|
||||||
Int32.Parse( Form[ "<xsl:value-of select="concat( 'instance.', @name)"/>"])
|
|
||||||
</xsl:when>
|
|
||||||
<xsl:when test="$basetype='string'">
|
|
||||||
Form[ "<xsl:value-of select="concat( 'instance.', @name)"/>"]
|
|
||||||
</xsl:when>
|
|
||||||
<xsl:when test="$basetype='entity'">
|
|
||||||
<!-- Maybe TODO: this doesn't work recursively - if an entity has a key which is an entity
|
|
||||||
and the key of that entity is an entity, you're on your own, mate! -->
|
|
||||||
<xsl:variable name="keyentity" select="@entity"/>
|
|
||||||
<xsl:variable name="keyenttype">
|
|
||||||
<xsl:call-template name="primary-key-csharp-type">
|
|
||||||
<xsl:with-param name="entity" select="//adl:entity[@name=$keyentity]"/>
|
|
||||||
</xsl:call-template>
|
|
||||||
</xsl:variable>
|
|
||||||
hibernator.CreateCriteria( typeof( <xsl:value-of select="concat( $entityns, '.', $keyentity)"/>))
|
|
||||||
.Add(Expression.Eq( "<xsl:value-of select="//adl:entity[@name=$keyentity]/adl:key/adl:property[position()=1]/@name"/>",<xsl:choose>
|
|
||||||
<xsl:when test="$keyenttype = 'int'">
|
|
||||||
Int32.Parse( Form[ "<xsl:value-of select="concat( 'instance.', @name)"/>"])
|
|
||||||
</xsl:when>
|
|
||||||
<xsl:when test="$keyenttype='String'">
|
|
||||||
Form[ "<xsl:value-of select="concat( 'instance.', @name)"/>"]
|
|
||||||
</xsl:when>
|
|
||||||
<xsl:otherwise>
|
|
||||||
Form[ "<xsl:value-of select="concat( 'instance.', @name)"/>"]
|
|
||||||
</xsl:otherwise>
|
|
||||||
</xsl:choose>))
|
|
||||||
.UniqueResult<<xsl:value-of select="concat( $entityns, '.', $keyentity)"/>>()
|
|
||||||
</xsl:when>
|
|
||||||
<xsl:otherwise>
|
|
||||||
Form[ "<xsl:value-of select="concat( 'instance.', @name)"/>"]
|
|
||||||
</xsl:otherwise>
|
|
||||||
</xsl:choose>))
|
|
||||||
</xsl:for-each>
|
</xsl:for-each>
|
||||||
.UniqueResult<<xsl:value-of select="concat( $entityns, '.', @name)"/>>();
|
.UniqueResult<<xsl:value-of select="concat( $entityns, '.', @name)"/>>();
|
||||||
}
|
}
|
||||||
|
@ -877,17 +829,18 @@ namespace <xsl:value-of select="$controllerns"/> {
|
||||||
</xsl:for-each>
|
</xsl:for-each>
|
||||||
[AccessibleThrough(Verb.Get)]
|
[AccessibleThrough(Verb.Get)]
|
||||||
public void <xsl:value-of select="@name"/>( <xsl:for-each select="ancestor::adl:entity/adl:key/adl:property">
|
public void <xsl:value-of select="@name"/>( <xsl:for-each select="ancestor::adl:entity/adl:key/adl:property">
|
||||||
<xsl:choose>
|
<!-- all args are passed as string because that's what hibernate-expression-eq -->
|
||||||
|
string <xsl:choose>
|
||||||
<xsl:when test="@type='entity'">
|
<xsl:when test="@type='entity'">
|
||||||
<xsl:call-template name="csharp-base-type">
|
<!-- xsl:call-template name="csharp-base-type">
|
||||||
<xsl:with-param name="property" select="."/>
|
<xsl:with-param name="property" select="."/>
|
||||||
</xsl:call-template>
|
</xsl:call-template -->
|
||||||
<xsl:value-of select="concat( ' ', @name, '_Value')"/>
|
<xsl:value-of select="concat( ' ', @name, '_Value')"/>
|
||||||
</xsl:when>
|
</xsl:when>
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<xsl:call-template name="csharp-base-type">
|
<!-- xsl:call-template name="csharp-base-type">
|
||||||
<xsl:with-param name="property" select="."/>
|
<xsl:with-param name="property" select="."/>
|
||||||
</xsl:call-template>
|
</xsl:call-template -->
|
||||||
<xsl:value-of select="concat( ' ', @name)"/>
|
<xsl:value-of select="concat( ' ', @name)"/>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
@ -901,7 +854,10 @@ namespace <xsl:value-of select="$controllerns"/> {
|
||||||
<xsl:when test="@type='entity'">
|
<xsl:when test="@type='entity'">
|
||||||
<xsl:variable name="entity" select="@entity"/>
|
<xsl:variable name="entity" select="@entity"/>
|
||||||
hibernator.CreateCriteria(typeof(<xsl:value-of select="concat($entityns, '.', @entity)"/>))
|
hibernator.CreateCriteria(typeof(<xsl:value-of select="concat($entityns, '.', @entity)"/>))
|
||||||
.Add( Expression.Eq( "<xsl:value-of select="//adl:entity[@name=$entity]/adl:key/adl:property[position()=1]/@name"/>", <xsl:value-of select="concat( @name, '_Value')"/>))
|
<xsl:call-template name="add-hibernate-expression-eq">
|
||||||
|
<xsl:with-param name="property" select="//adl:entity[@name=$entity]/adl:key/adl:property[position()=1]"/>
|
||||||
|
<xsl:with-param name="value" select="concat( @name, '_Value')"/>
|
||||||
|
</xsl:call-template>
|
||||||
.UniqueResult<<xsl:value-of select="concat($entityns, '.', @entity)"/>>()
|
.UniqueResult<<xsl:value-of select="concat($entityns, '.', @entity)"/>>()
|
||||||
</xsl:when>
|
</xsl:when>
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
|
@ -921,10 +877,10 @@ namespace <xsl:value-of select="$controllerns"/> {
|
||||||
</xsl:for-each>
|
</xsl:for-each>
|
||||||
[AccessibleThrough(Verb.Get)]
|
[AccessibleThrough(Verb.Get)]
|
||||||
public void <xsl:value-of select="@name"/>( <xsl:for-each select="ancestor::adl:entity/adl:key/adl:property">
|
public void <xsl:value-of select="@name"/>( <xsl:for-each select="ancestor::adl:entity/adl:key/adl:property">
|
||||||
<xsl:call-template name="csharp-type">
|
<!-- xsl:call-template name="csharp-type">
|
||||||
<xsl:with-param name="property" select="."/>
|
<xsl:with-param name="property" select="."/>
|
||||||
</xsl:call-template>
|
</xsl:call-template -->
|
||||||
<xsl:value-of select="concat( ' ', @name)"/>
|
string <xsl:value-of select="concat( ' ', @name)"/>
|
||||||
<xsl:if test="not( position() = last())">,</xsl:if>
|
<xsl:if test="not( position() = last())">,</xsl:if>
|
||||||
</xsl:for-each>)
|
</xsl:for-each>)
|
||||||
{
|
{
|
||||||
|
@ -934,7 +890,10 @@ namespace <xsl:value-of select="$controllerns"/> {
|
||||||
<xsl:value-of select="concat($entityns, '.', ancestor::adl:entity/@name)"/> record =
|
<xsl:value-of select="concat($entityns, '.', ancestor::adl:entity/@name)"/> record =
|
||||||
hibernator.CreateCriteria(typeof(<xsl:value-of select="concat($entityns, '.', ancestor::adl:entity/@name)"/>))
|
hibernator.CreateCriteria(typeof(<xsl:value-of select="concat($entityns, '.', ancestor::adl:entity/@name)"/>))
|
||||||
<xsl:for-each select="ancestor::adl:entity/adl:key/adl:property">
|
<xsl:for-each select="ancestor::adl:entity/adl:key/adl:property">
|
||||||
.Add(Expression.Eq("<xsl:value-of select="@name"/>", <xsl:value-of select="@name"/>))
|
<xsl:call-template name="add-hibernate-expression-eq">
|
||||||
|
<xsl:with-param name="property" select="."/>
|
||||||
|
<xsl:with-param name="value" select="@name"/>
|
||||||
|
</xsl:call-template>
|
||||||
</xsl:for-each>
|
</xsl:for-each>
|
||||||
.UniqueResult<<xsl:value-of select="concat($entityns, '.', ancestor::adl:entity/@name)"/>>();
|
.UniqueResult<<xsl:value-of select="concat($entityns, '.', ancestor::adl:entity/@name)"/>>();
|
||||||
|
|
||||||
|
@ -968,6 +927,11 @@ namespace <xsl:value-of select="$controllerns"/> {
|
||||||
/* <xsl:apply-templates/> */
|
/* <xsl:apply-templates/> */
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template match="adl:key">
|
||||||
|
<!-- the key shouldn't be matched directly - at least, not in this implementation -->
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
<!-- for properties with @distinct='all' or @distinct='system',
|
<!-- for properties with @distinct='all' or @distinct='system',
|
||||||
check that values are indeed distinct -->
|
check that values are indeed distinct -->
|
||||||
<xsl:template name="check-property-value-distinct">
|
<xsl:template name="check-property-value-distinct">
|
||||||
|
@ -989,22 +953,10 @@ namespace <xsl:value-of select="$controllerns"/> {
|
||||||
matchCriteria =
|
matchCriteria =
|
||||||
hibernator.CreateCriteria(typeof(<xsl:value-of select="$property/ancestor::adl:entity/@name"/>));
|
hibernator.CreateCriteria(typeof(<xsl:value-of select="$property/ancestor::adl:entity/@name"/>));
|
||||||
|
|
||||||
matchCriteria.Add(Expression.Eq("<xsl:value-of select="$property/@name"/>", <xsl:choose>
|
matchCriteria<xsl:call-template name="add-hibernate-expression-eq">
|
||||||
<xsl:when test="$basetype='string'">Form["<xsl:value-of select="concat('instance.', $property/@name)"/>"]</xsl:when>
|
<xsl:with-param name="property" select="$property"/>
|
||||||
<xsl:when test="$basetype='integer'">Int32.Parse( Form["<xsl:value-of select="concat('instance.', $property/@name)"/>"])</xsl:when>
|
<xsl:with-param name="value" select="concat('instance.', $property/@name)"/>
|
||||||
<xsl:when test="$basetype='entity'">
|
</xsl:call-template>;
|
||||||
<xsl:call-template name="fetch-property-instance">
|
|
||||||
<xsl:with-param name="property" select="."/>
|
|
||||||
<xsl:with-param name="valuename" select="adl:property[position()=1]/@name"/>
|
|
||||||
</xsl:call-template>
|
|
||||||
</xsl:when>
|
|
||||||
<xsl:otherwise>
|
|
||||||
<xsl:message terminate="yes">
|
|
||||||
ADL: ERROR: don't yet know how to do distinctness checks for properties
|
|
||||||
with base type <xsl:value-of select="$basetype"/>
|
|
||||||
</xsl:message>
|
|
||||||
</xsl:otherwise>
|
|
||||||
</xsl:choose>));
|
|
||||||
|
|
||||||
if ( record != null) {
|
if ( record != null) {
|
||||||
/* i.e. we do have values for each of our key fields... */
|
/* i.e. we do have values for each of our key fields... */
|
||||||
|
@ -1014,17 +966,11 @@ namespace <xsl:value-of select="$controllerns"/> {
|
||||||
<xsl:with-param name="property" select="."/>
|
<xsl:with-param name="property" select="."/>
|
||||||
</xsl:call-template>
|
</xsl:call-template>
|
||||||
</xsl:variable>
|
</xsl:variable>
|
||||||
matchCriteria.Add(Expression.Not(Expression.Eq("<xsl:value-of select="@name"/>",<xsl:choose>
|
matchCriteria.Add(Expression.Not(<xsl:call-template name="hibernate-expression-eq">
|
||||||
<xsl:when test="$keybasetype='entity'">
|
<xsl:with-param name="property" select="."/>
|
||||||
<xsl:call-template name="fetch-property-instance">
|
<xsl:with-param name="value">
|
||||||
<!-- recurse -->
|
Form["<xsl:value-of select="concat( 'instance.', @name)"/>"]</xsl:with-param>
|
||||||
<xsl:with-param name="property" select="."/>
|
</xsl:call-template>));
|
||||||
<xsl:with-param name="valuename" select="@name"/>
|
|
||||||
</xsl:call-template>
|
|
||||||
</xsl:when>
|
|
||||||
<xsl:when test="$keybasetype='integer'">Int32.Parse( Form["<xsl:value-of select="concat( 'instance.', @name)"/>"])</xsl:when>
|
|
||||||
<xsl:otherwise>Form["<xsl:value-of select="concat( 'instance.', @name)"/>"]</xsl:otherwise>
|
|
||||||
</xsl:choose>)));
|
|
||||||
</xsl:for-each>
|
</xsl:for-each>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1111,10 +1057,6 @@ namespace <xsl:value-of select="$controllerns"/> {
|
||||||
|
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<xsl:template match="adl:key">
|
|
||||||
<!-- the key shouldn't be matched directly - at least, not in this implementation -->
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
<xsl:template name="menu">
|
<xsl:template name="menu">
|
||||||
<xsl:param name="property"/>
|
<xsl:param name="property"/>
|
||||||
<xsl:variable name="entity" select="//adl:entity[@name=$property/@entity]"/>
|
<xsl:variable name="entity" select="//adl:entity[@name=$property/@entity]"/>
|
||||||
|
@ -1169,6 +1111,100 @@ namespace <xsl:value-of select="$controllerns"/> {
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- it's often convenient to wrap an expression in an Add() -->
|
||||||
|
<xsl:template name="add-hibernate-expression-eq">
|
||||||
|
<xsl:param name="property"/>
|
||||||
|
<xsl:param name="value"/>
|
||||||
|
<xsl:variable name="basetype">
|
||||||
|
<xsl:call-template name="base-type">
|
||||||
|
<xsl:with-param name="property" select="$property"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:variable>
|
||||||
|
.Add(<xsl:call-template name="hibernate-expression-eq">
|
||||||
|
<xsl:with-param name="property" select="$property"/>
|
||||||
|
<xsl:with-param name="value" select="$value"/>
|
||||||
|
</xsl:call-template>)
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- it's often convenient to wrap an expression in an Add() -->
|
||||||
|
<xsl:template name="add-hibernate-expression-like">
|
||||||
|
<xsl:param name="property"/>
|
||||||
|
<xsl:param name="value"/>
|
||||||
|
<xsl:variable name="basetype">
|
||||||
|
<xsl:call-template name="base-type">
|
||||||
|
<xsl:with-param name="property" select="$property"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:variable>
|
||||||
|
.Add(<xsl:call-template name="hibernate-expression-like">
|
||||||
|
<xsl:with-param name="property" select="$property"/>
|
||||||
|
<xsl:with-param name="value" select="$value"/>
|
||||||
|
</xsl:call-template>)
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- generate a hibernate equality expression based on this property,
|
||||||
|
comparing it to this value -->
|
||||||
|
<xsl:template name="hibernate-expression-eq">
|
||||||
|
<!-- an entity of type property -->
|
||||||
|
<xsl:param name="property"/>
|
||||||
|
<!-- an expression which, at run time, will evaluate to a string -->
|
||||||
|
<xsl:param name="value"/>
|
||||||
|
<xsl:variable name="basetype">
|
||||||
|
<xsl:call-template name="base-type">
|
||||||
|
<xsl:with-param name="property" select="$property"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:variable>
|
||||||
|
Expression.Eq("<xsl:value-of select="$property/@name"/>", <xsl:choose>
|
||||||
|
<xsl:when test="$basetype = 'string'">
|
||||||
|
<xsl:value-of select="$value"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="$basetype = 'integer'">
|
||||||
|
Int32.Parse( <xsl:value-of select="$value"/>)
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="$basetype = 'money'">
|
||||||
|
Decimal.Parse( <xsl:value-of select="$value"/>)
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="$basetype = 'date'">
|
||||||
|
Date.Parse( <xsl:value-of select="$value"/>)
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="$basetype='entity'">
|
||||||
|
<xsl:call-template name="fetch-property-instance">
|
||||||
|
<!-- recurse -->
|
||||||
|
<xsl:with-param name="property" select="$property"/>
|
||||||
|
<xsl:with-param name="value" select="$value"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:message terminate="yes">
|
||||||
|
ADL: Error: keys of type <xsl:value-of select="$basetype"/> cannot yet be used
|
||||||
|
in links
|
||||||
|
</xsl:message>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>)
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- generate a hibernate like expression based on this property,
|
||||||
|
comparing it to this value -->
|
||||||
|
<xsl:template name="hibernate-expression-like">
|
||||||
|
<xsl:param name="property"/>
|
||||||
|
<xsl:param name="value"/>
|
||||||
|
<xsl:variable name="basetype">
|
||||||
|
<xsl:call-template name="base-type">
|
||||||
|
<xsl:with-param name="property" select="$property"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:variable>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="$basetype='string' or $basetype='text'">
|
||||||
|
Expression.Like( "<xsl:value-of select="@name"/>", "%"+Params["<xsl:value-of select="$value"/>"]+"%")
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:call-template name="hibernate-expression-eq">
|
||||||
|
<xsl:with-param name="property" select="$property"/>
|
||||||
|
<xsl:with-param name="value" select="$value"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
<!-- argument: a property
|
<!-- argument: a property
|
||||||
returns 'true' if that property is of a type which makes it searchable,
|
returns 'true' if that property is of a type which makes it searchable,
|
||||||
else 'false'. See also how search fields are generated in adl2views.xsl -->
|
else 'false'. See also how search fields are generated in adl2views.xsl -->
|
||||||
|
@ -1198,24 +1234,22 @@ namespace <xsl:value-of select="$controllerns"/> {
|
||||||
<!-- the name of the value in the returned values from which the instance
|
<!-- the name of the value in the returned values from which the instance
|
||||||
must be resolved -->
|
must be resolved -->
|
||||||
<xsl:param name="valuename"/>
|
<xsl:param name="valuename"/>
|
||||||
<xsl:if test="not( $property/@type='entity')">
|
<xsl:variable name="basetype">
|
||||||
|
<xsl:call-template name="base-type">
|
||||||
|
<xsl:with-param name="property" select="$property"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:variable>
|
||||||
|
<xsl:if test="not( $basetype='entity')">
|
||||||
<xsl:message terminate="yes">
|
<xsl:message terminate="yes">
|
||||||
ADL: ERROR: property passed to fetch-property-instance whose type is not 'entity'
|
ADL: ERROR: property passed to fetch-property-instance whose type is not 'entity'
|
||||||
</xsl:message>
|
</xsl:message>
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
hibernator.CreateCriteria(typeof(<xsl:value-of select="concat( $entityns, '.', $property/@entity)"/>))
|
hibernator.CreateCriteria(typeof(<xsl:value-of select="concat( $entityns, '.', $property/@entity)"/>))
|
||||||
<xsl:for-each select="//adl:entity[@name=$property/@entity]/adl:key/adl:property">
|
<xsl:for-each select="//adl:entity[@name=$property/@entity]/adl:key/adl:property">
|
||||||
.Add(Expression.Eq("<xsl:value-of select="@name"/>",<xsl:choose>
|
<xsl:call-template name="add-hibernate-expression-eq">
|
||||||
<xsl:when test="@type='entity'">
|
<xsl:with-param name="property" select="."/>
|
||||||
<xsl:call-template name="fetch-property-instance">
|
<xsl:with-param name="value">Form["<xsl:value-of select="concat( 'instance.', $valuename)"/>"]</xsl:with-param>
|
||||||
<!-- recurse -->
|
</xsl:call-template>
|
||||||
<xsl:with-param name="property" select="."/>
|
|
||||||
<xsl:with-param name="valuename" select="$valuename"/>
|
|
||||||
</xsl:call-template>
|
|
||||||
</xsl:when>
|
|
||||||
<xsl:when test="@type='integer'">Int32.Parse( Form["<xsl:value-of select="concat( 'instance.', $valuename)"/>"])</xsl:when>
|
|
||||||
<xsl:otherwise>Form["<xsl:value-of select="concat( 'instance.', $valuename)"/>"]</xsl:otherwise>
|
|
||||||
</xsl:choose>))
|
|
||||||
</xsl:for-each>
|
</xsl:for-each>
|
||||||
.UniqueResult<<xsl:value-of select="concat( $entityns, '.', @entity)"/>>()
|
.UniqueResult<<xsl:value-of select="concat( $entityns, '.', @entity)"/>>()
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
|
@ -13,8 +13,8 @@
|
||||||
Transform ADL into velocity view templates
|
Transform ADL into velocity view templates
|
||||||
|
|
||||||
$Author: sb $
|
$Author: sb $
|
||||||
$Revision: 1.6 $
|
$Revision: 1.7 $
|
||||||
$Date: 2008-06-04 16:17:39 $
|
$Date: 2008-06-06 08:46:27 $
|
||||||
-->
|
-->
|
||||||
<!-- WARNING WARNING WARNING: Do NOT reformat this file!
|
<!-- WARNING WARNING WARNING: Do NOT reformat this file!
|
||||||
Whitespace (or lack of it) is significant! -->
|
Whitespace (or lack of it) is significant! -->
|
||||||
|
@ -124,7 +124,7 @@
|
||||||
Auto generated Velocity maybe-delete form for <xsl:value-of select="@name"/>,
|
Auto generated Velocity maybe-delete form for <xsl:value-of select="@name"/>,
|
||||||
generated from ADL.
|
generated from ADL.
|
||||||
|
|
||||||
Generated using adl2views.xslt <xsl:value-of select="substring( '$Revision: 1.6 $', 10)"/>
|
Generated using adl2views.xslt <xsl:value-of select="substring( '$Revision: 1.7 $', 10)"/>
|
||||||
</xsl:comment>
|
</xsl:comment>
|
||||||
<xsl:call-template name="maybe-delete">
|
<xsl:call-template name="maybe-delete">
|
||||||
<xsl:with-param name="entity" select="."/>
|
<xsl:with-param name="entity" select="."/>
|
||||||
|
@ -162,7 +162,7 @@
|
||||||
Auto generated Velocity maybe-delete form for <xsl:value-of select="@name"/>,
|
Auto generated Velocity maybe-delete form for <xsl:value-of select="@name"/>,
|
||||||
generated from ADL.
|
generated from ADL.
|
||||||
|
|
||||||
Generated using adl2views.xslt <xsl:value-of select="substring( '$Revision: 1.6 $', 10)"/>
|
Generated using adl2views.xslt <xsl:value-of select="substring( '$Revision: 1.7 $', 10)"/>
|
||||||
</xsl:comment>
|
</xsl:comment>
|
||||||
<xsl:call-template name="install-scripts"/>
|
<xsl:call-template name="install-scripts"/>
|
||||||
</head>
|
</head>
|
||||||
|
@ -243,7 +243,7 @@
|
||||||
Auto generated Velocity <xsl:value-of select="@name"/> form for <xsl:value-of select="ancestor::adl:entity/@name"/>,
|
Auto generated Velocity <xsl:value-of select="@name"/> form for <xsl:value-of select="ancestor::adl:entity/@name"/>,
|
||||||
generated from ADL.
|
generated from ADL.
|
||||||
|
|
||||||
Generated using adl2views.xslt <xsl:value-of select="substring( '$Revision: 1.6 $', 10)"/>
|
Generated using adl2views.xslt <xsl:value-of select="substring( '$Revision: 1.7 $', 10)"/>
|
||||||
</xsl:comment>
|
</xsl:comment>
|
||||||
#capturefor( title)
|
#capturefor( title)
|
||||||
#if ( $instance)
|
#if ( $instance)
|
||||||
|
@ -364,7 +364,7 @@
|
||||||
Auto generated Velocity form for <xsl:value-of select="ancestor::adl:entity/@name"/>,
|
Auto generated Velocity form for <xsl:value-of select="ancestor::adl:entity/@name"/>,
|
||||||
generated from ADL.
|
generated from ADL.
|
||||||
|
|
||||||
Generated using adl2views.xsl <xsl:value-of select="substring( '$Revision: 1.6 $', 10)"/>
|
Generated using adl2views.xsl <xsl:value-of select="substring( '$Revision: 1.7 $', 10)"/>
|
||||||
</xsl:comment>
|
</xsl:comment>
|
||||||
<xsl:call-template name="install-scripts"/>
|
<xsl:call-template name="install-scripts"/>
|
||||||
<script type='text/javascript' language='JavaScript1.2'>
|
<script type='text/javascript' language='JavaScript1.2'>
|
||||||
|
@ -737,7 +737,7 @@
|
||||||
<xsl:template match="adl:property[@type='link'or @type='list']">
|
<xsl:template match="adl:property[@type='link'or @type='list']">
|
||||||
<!-- note! this template is only intended to match properties in the context of a form:
|
<!-- note! this template is only intended to match properties in the context of a form:
|
||||||
it may be we need to add a mode to indicate this! -->
|
it may be we need to add a mode to indicate this! -->
|
||||||
<!-- for links we implement a shuffle widget, which extends over both columns -->
|
<!-- for links and lists we implement a shuffle widget, which extends over both columns -->
|
||||||
<!-- TODO: Permissions! -->
|
<!-- TODO: Permissions! -->
|
||||||
<xsl:param name="oddness" select="odd"/>
|
<xsl:param name="oddness" select="odd"/>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -764,7 +764,19 @@
|
||||||
</input>
|
</input>
|
||||||
</td>
|
</td>
|
||||||
<td class="widget" rowspan="2">
|
<td class="widget" rowspan="2">
|
||||||
${ShuffleWidgetHelper.SelectedOptions( "<xsl:value-of select="@name"/>", $instance.<xsl:value-of select="@name"/>)}
|
<xsl:variable name="entityname" select="@entity"/>
|
||||||
|
<xsl:variable name="foreignkey" select="@farkey"/>
|
||||||
|
<xsl:variable name="allow-shuffle-back">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="@type='list' and //adl:entity[@name=$entityname]//adl:property[@name=$foreignkey and @required='true']">
|
||||||
|
<xsl:value-of select="'false'"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:value-of select="'true'"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:variable>
|
||||||
|
${ShuffleWidgetHelper.SelectedOptions( "<xsl:value-of select="@name"/>", $instance.<xsl:value-of select="@name"/>, <xsl:value-of select="$allow-shuffle-back"/>)}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -951,7 +963,7 @@
|
||||||
Auto generated Velocity list for <xsl:value-of select="@name"/>,
|
Auto generated Velocity list for <xsl:value-of select="@name"/>,
|
||||||
generated from ADL.
|
generated from ADL.
|
||||||
|
|
||||||
Generated using adl2views.xslt <xsl:value-of select="substring( '$Revision: 1.6 $', 10)"/>
|
Generated using adl2views.xslt <xsl:value-of select="substring( '$Revision: 1.7 $', 10)"/>
|
||||||
</xsl:comment>
|
</xsl:comment>
|
||||||
|
|
||||||
#capturefor( title)
|
#capturefor( title)
|
||||||
|
@ -990,7 +1002,7 @@
|
||||||
Auto generated Velocity list for <xsl:value-of select="ancestor::adl:entity/@name"/>,
|
Auto generated Velocity list for <xsl:value-of select="ancestor::adl:entity/@name"/>,
|
||||||
generated from ADL.
|
generated from ADL.
|
||||||
|
|
||||||
Generated using adl2listview.xsl <xsl:value-of select="substring( '$Revision: 1.6 $', 10)"/>
|
Generated using adl2listview.xsl <xsl:value-of select="substring( '$Revision: 1.7 $', 10)"/>
|
||||||
</xsl:comment>
|
</xsl:comment>
|
||||||
<xsl:call-template name="install-scripts"/>
|
<xsl:call-template name="install-scripts"/>
|
||||||
</head>
|
</head>
|
||||||
|
|
Loading…
Reference in a new issue