From 9d09c248d04d0873e18a769fedce6496f116c60c Mon Sep 17 00:00:00 2001
From: sb <sb>
Date: Thu, 19 Feb 2009 15:29:27 +0000
Subject: [PATCH] Very close to having SRU working.

---
 transforms/adl2controllerclasses.xslt | 22 ++++++---------
 transforms/adl2mssql.xslt             | 26 +++++++++++++----
 transforms/adl2views.xslt             | 40 +++++++++++++++------------
 3 files changed, 51 insertions(+), 37 deletions(-)

diff --git a/transforms/adl2controllerclasses.xslt b/transforms/adl2controllerclasses.xslt
index e29f699..ccff28e 100755
--- a/transforms/adl2controllerclasses.xslt
+++ b/transforms/adl2controllerclasses.xslt
@@ -9,8 +9,8 @@
     Transform ADL into (partial) controller classes
     
     $Author: sb $
-    $Revision: 1.27 $
-    $Date: 2009-02-06 17:48:58 $
+    $Revision: 1.28 $
+    $Date: 2009-02-19 15:29:27 $
   -->
 
 <!-- WARNING WARNING WARNING: Do NOT reformat this file! 
@@ -70,7 +70,7 @@
 		//
 		//  Automatically generated abstract super class for controllers for the
 		//	<xsl:value-of select="/adl:application/@name"/> application; generated using
-		//  adl2controllerclasses.xslt version <xsl:value-of select="substring( '$Revision: 1.27 $', 10)"/>
+		//  adl2controllerclasses.xslt version <xsl:value-of select="substring( '$Revision: 1.28 $', 10)"/>
 		//
 		//  <xsl:value-of select="/adl:application/@revision"/>
 		//
@@ -109,9 +109,8 @@
 		<xsl:choose>
 			<xsl:when test="$authentication-layer = 'Application'"/>
 			<xsl:when test="$authentication-layer = 'Database'">
-				public <xsl:value-of select="concat( 'Abstract', /adl:application/@name, 'Controller')"/>(){
-				dbSessionProvider = new DBLayerSessionProvider();
-				}
+				/* authentication layer is requested to be 'database', but in fact database-layer 
+				authentication does not work well with NHibernate so this is being ignored. */
 			</xsl:when>
 			<xsl:otherwise>
 				<xsl:message terminate="yes">
@@ -181,7 +180,7 @@
 		//
 		//  Controller for auto-generated forms for editing <xsl:value-of select="@name"/>s
 		//  Automatically generated from application description using
-		//  adl2controllerclasses.xslt version <xsl:value-of select="substring( '$Revision: 1.27 $', 10)"/>
+		//  adl2controllerclasses.xslt version <xsl:value-of select="substring( '$Revision: 1.28 $', 10)"/>
 		//
 		//  This file is automatically generated; DO NOT EDIT IT.
 		//
@@ -435,7 +434,8 @@
 				<xsl:variable name="entityname" select="@entity"/>
 				<xsl:choose>
 					<xsl:when test="//adl:entity[@name=$entityname]">
-						if ( ! String.IsNullOrEmpty( Form["<xsl:value-of select="concat( 'instance.', @name)"/>"]))
+						if ( ! String.IsNullOrEmpty( Form["<xsl:value-of select="concat( 'instance.', @name)"/>"]) &amp;&amp;
+						! EntityMenuControl&lt;<xsl:value-of select="concat( $entityns, '.', @entity)"/>&gt;.NULLMARKER.Equals ( Form["<xsl:value-of select="concat( 'instance.', @name)"/>"]))
 						{
 						record.<xsl:value-of select="@name"/> = <xsl:call-template name="fetch-property-instance">
 							<xsl:with-param name="property" select="."/>
@@ -939,12 +939,6 @@
 		{
 		ISession hibernator = GetDBSession();
 
-		if ( record == null ){
-		record = new <xsl:value-of select="concat($entityns, '.', ancestor::adl:entity/@name)"/>();
-
-		BindObjectInstance( record, ParamStore.Form, "instance");
-		}
-
 		TypedPropertyBag = new {
 		<xsl:call-template name="formmenus">
 			<xsl:with-param name="form" select="."/>
diff --git a/transforms/adl2mssql.xslt b/transforms/adl2mssql.xslt
index a812f5f..87408e0 100755
--- a/transforms/adl2mssql.xslt
+++ b/transforms/adl2mssql.xslt
@@ -12,7 +12,7 @@
       Convert ADL to MS-SQL
       
       $Author: sb $
-      $Revision: 1.16 $
+      $Revision: 1.17 $
   -->
     
   <xsl:output indent="no" encoding="UTF-8" method="text"/>
@@ -112,7 +112,7 @@
         --    <xsl:value-of select="$product-version"/>
         --
         --    Database for application <xsl:value-of select="@name"/> version <xsl:value-of select="@version"/>
-        --    Generated for MS-SQL 2000+ using adl2mssql.xslt <xsl:value-of select="substring('$Revision: 1.16 $', 12)"/>
+        --    Generated for MS-SQL 2000+ using adl2mssql.xslt <xsl:value-of select="substring('$Revision: 1.17 $', 12)"/>
 	    --    THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT IT.
 		--
 		--    <xsl:value-of select="@revision"/>
@@ -130,10 +130,24 @@
         -------------------------------------------------------------------------------------------------
     <xsl:apply-templates select="adl:group"/>
 
-        -------------------------------------------------------------------------------------------------
-        --    primary tables, views and permissions
-        -------------------------------------------------------------------------------------------------
-    <xsl:apply-templates select="adl:entity" mode="table"/>
+	  -------------------------------------------------------------------------------------------------
+	  --	magic view for role membership, used in establishing security credentials
+	  -------------------------------------------------------------------------------------------------
+	  CREATE VIEW RoleMembership AS
+		 SELECT dbuser.name as "dbuser", 
+				dbrole.name as "dbrole"
+		   FROM sysusers AS dbuser, sysmembers, sysusers AS dbrole
+		  WHERE dbuser.uid = sysmembers.memberuid
+			AND dbrole.uid = sysmembers.groupuid
+	  GO
+			
+	  GRANT SELECT on RoleMembership to public
+	  GO
+
+	  -------------------------------------------------------------------------------------------------
+	  --    primary tables, views and permissions
+	  -------------------------------------------------------------------------------------------------
+	  <xsl:apply-templates select="adl:entity" mode="table"/>
 
         -------------------------------------------------------------------------------------------------
         --    link tables  
diff --git a/transforms/adl2views.xslt b/transforms/adl2views.xslt
index 5965604..ed9797a 100755
--- a/transforms/adl2views.xslt
+++ b/transforms/adl2views.xslt
@@ -15,8 +15,8 @@
     Transform ADL into velocity view templates
     
     $Author: sb $
-    $Revision: 1.26 $
-    $Date: 2009-02-06 17:48:58 $
+    $Revision: 1.27 $
+    $Date: 2009-02-19 15:29:27 $
 	-->
 	<!-- WARNING WARNING WARNING: Do NOT reformat this file! 
 		Whitespace (or lack of it) is significant! -->
@@ -124,7 +124,7 @@
 			Auto generated Velocity maybe-delete form for <xsl:value-of select="@name"/>,
 			generated from ADL.
 
-			Generated using adl2views.xslt <xsl:value-of select="substring( '$Revision: 1.26 $', 10)"/>
+			Generated using adl2views.xslt <xsl:value-of select="substring( '$Revision: 1.27 $', 10)"/>
 		</xsl:comment>
 		<xsl:call-template name="maybe-delete">
 			<xsl:with-param name="entity" select="."/>
@@ -161,7 +161,7 @@
 						Auto generated Velocity maybe-delete form for <xsl:value-of select="@name"/>,
 						generated from ADL.
 
-						Generated using adl2views.xslt <xsl:value-of select="substring( '$Revision: 1.26 $', 10)"/>
+						Generated using adl2views.xslt <xsl:value-of select="substring( '$Revision: 1.27 $', 10)"/>
 
 						<xsl:value-of select="/adl:application/@revision"/>
 					</xsl:comment>
@@ -244,7 +244,7 @@
 			Auto generated Velocity <xsl:value-of select="@name"/> form for <xsl:value-of select="ancestor::adl:entity/@name"/>,
 			generated from ADL.
 
-			Generated using adl2views.xslt <xsl:value-of select="substring( '$Revision: 1.26 $', 10)"/>
+			Generated using adl2views.xslt <xsl:value-of select="substring( '$Revision: 1.27 $', 10)"/>
 			Generation parameters were:
 			locale: <xsl:value-of select="$locale"/>
 			generate-site-navigation: <xsl:value-of select="$generate-site-navigation"/>
@@ -320,7 +320,7 @@
 					Auto generated Velocity form for <xsl:value-of select="ancestor::adl:entity/@name"/>,
 					generated from ADL.
 
-					Generated using adl2views.xsl <xsl:value-of select="substring( '$Revision: 1.26 $', 10)"/>
+					Generated using adl2views.xsl <xsl:value-of select="substring( '$Revision: 1.27 $', 10)"/>
 					Generation parameters were:
 					locale: <xsl:value-of select="$locale"/>
 					generate-site-navigation: <xsl:value-of select="$generate-site-navigation"/>
@@ -900,7 +900,7 @@
 			Auto generated Velocity list for <xsl:value-of select="@name"/>,
 			generated from ADL.
 
-			Generated using adl2views.xslt <xsl:value-of select="substring( '$Revision: 1.26 $', 10)"/>
+			Generated using adl2views.xslt <xsl:value-of select="substring( '$Revision: 1.27 $', 10)"/>
 			Generation parameters were:
 			locale: <xsl:value-of select="$locale"/>
 			generate-site-navigation: <xsl:value-of select="$generate-site-navigation"/>
@@ -963,7 +963,7 @@
 					  Auto generated Velocity list for <xsl:value-of select="ancestor::adl:entity/@name"/>,
 					  generated from ADL.
 
-					  Generated using adl2listview.xsl <xsl:value-of select="substring( '$Revision: 1.26 $', 10)"/>
+					  Generated using adl2listview.xsl <xsl:value-of select="substring( '$Revision: 1.27 $', 10)"/>
 					  Generation parameters were:
 					  locale: <xsl:value-of select="$locale"/>
 					  generate-site-navigation: <xsl:value-of select="$generate-site-navigation"/>
@@ -1391,8 +1391,11 @@
 			<!-- assumed to be an instance of adl:form -->
 		</xsl:param>
 		<script type='text/javascript' language='JavaScript1.2'>
-			var site-root = '$site-root';
-
+			#if ( $site-root)
+			site-root = '$site-root';
+			#else
+			site-root = '/';
+			#end
 			function performInitialisation()
 			{
 			<xsl:for-each select="$form/ancestor::adl:entity/adl:property[@type='link']">
@@ -1408,9 +1411,6 @@
 						we /don't/ set up a submit handler. -->
 				</xsl:choose>
 			</xsl:for-each>
-			<xsl:if test="$form/adl:fieldgroup">
-				switchtab( '<xsl:value-of select="$form/adl:fieldgroup[1]/@name"/>');
-			</xsl:if>
 			}
 			var validator = new Validation('<xsl:value-of select="$form/name"/>', {immediate : true, useTitles : true});
 
@@ -1540,6 +1540,12 @@
 				<xsl:otherwise>1</xsl:otherwise>
 			</xsl:choose>
 		</xsl:variable>
+		<xsl:variable name="required">
+			<xsl:choose>
+				<xsl:when test="$property/@required='true'">true</xsl:when>
+				<xsl:otherwise>false</xsl:otherwise>
+			</xsl:choose>
+		</xsl:variable>
 		<xsl:choose>
 			<xsl:when test="$property/adl:option">
 				<!-- emit a menu of options -->
@@ -1578,7 +1584,7 @@
 				<xsl:variable name="minimum" select="$definition/@minimum"/>
 				<xsl:choose>
 					<xsl:when test="$base-type='string'">
-						${<xsl:value-of select="concat( $property/ancestor::adl:entity/@name, 'FieldHelper', '.', $mode, '(')"/> "<xsl:value-of select="concat( 'instance.', $property/@name)"/>", "%{class='<xsl:value-of select="normalize-space($cssclass)"/>',title='<xsl:value-of select="normalize-space($if-missing)"/>',size='<xsl:value-of select="normalize-space($size)"/>',maxlength='<xsl:value-of select="normalize-space($maxlength)"/>',rows='<xsl:value-of select="normalize-space($rows)"/>',href='<xsl:value-of select="normalize-space($href)"/>'}")}
+						${<xsl:value-of select="concat( $property/ancestor::adl:entity/@name, 'FieldHelper', '.', $mode, '(')"/> "<xsl:value-of select="concat( 'instance.', $property/@name)"/>", "%{class='<xsl:value-of select="normalize-space($cssclass)"/>',required='<xsl:value-of select="normalize-space( $required)"/>',title='<xsl:value-of select="normalize-space($if-missing)"/>',size='<xsl:value-of select="normalize-space($size)"/>',maxlength='<xsl:value-of select="normalize-space($maxlength)"/>',rows='<xsl:value-of select="normalize-space($rows)"/>',href='<xsl:value-of select="normalize-space($href)"/>'}")}
 					</xsl:when>
 					<xsl:when test="string-length($definition/@minimum) &gt; 0 and string-length( $definition/@maximum) &gt; 0">
 						<xsl:call-template name="slider-widget">
@@ -1589,7 +1595,7 @@
 						${<xsl:value-of select="concat( $property/ancestor::adl:entity/@name, 'FieldHelper', '.', $mode, '(')"/> "<xsl:value-of select="concat( 'instance.', $property/@name)"/>", "%{class='<xsl:value-of select="concat('slider, ', normalize-space($cssclass))"/>',title='<xsl:value-of select="normalize-space($if-missing)"/>',size='<xsl:value-of select="normalize-space($size)"/>',maxlength='<xsl:value-of select="normalize-space($maxlength)"/>',rows='<xsl:value-of select="normalize-space($rows)"/>',href='<xsl:value-of select="normalize-space($href)"/>'}")}
 					</xsl:when>
 					<xsl:otherwise>
-						${<xsl:value-of select="concat( $property/ancestor::adl:entity/@name, 'FieldHelper', '.', $mode, '(')"/> "<xsl:value-of select="concat( 'instance.', $property/@name)"/>", "%{class='<xsl:value-of select="normalize-space($cssclass)"/>',title='<xsl:value-of select="normalize-space($if-missing)"/>',size='<xsl:value-of select="normalize-space($size)"/>',maxlength='<xsl:value-of select="normalize-space($maxlength)"/>',rows='<xsl:value-of select="normalize-space($rows)"/>',href='<xsl:value-of select="normalize-space($href)"/>'}")}
+						${<xsl:value-of select="concat( $property/ancestor::adl:entity/@name, 'FieldHelper', '.', $mode, '(')"/> "<xsl:value-of select="concat( 'instance.', $property/@name)"/>", "%{class='<xsl:value-of select="normalize-space($cssclass)"/>',required='<xsl:value-of select="normalize-space( $required)"/>',title='<xsl:value-of select="normalize-space($if-missing)"/>',size='<xsl:value-of select="normalize-space($size)"/>',maxlength='<xsl:value-of select="normalize-space($maxlength)"/>',rows='<xsl:value-of select="normalize-space($rows)"/>',href='<xsl:value-of select="normalize-space($href)"/>'}")}
 					</xsl:otherwise>
 				</xsl:choose>
 			</xsl:when>
@@ -1602,13 +1608,13 @@
 				</xsl:variable>
 				<!-- NOTE! NOTE! NOTE! Whitespace is significant - any linefeeds inside the #if ( ) clause cause the Velocity parser to break! -->
 				#if ( <xsl:for-each select="exsl:node-set( $readgroups)/*">${SecurityHelper.InGroup( "<xsl:value-of select="./@name"/>")} ||</xsl:for-each> false)
-				${<xsl:value-of select="concat( $property/ancestor::adl:entity/@name, 'FieldHelper', '.', $mode, '(')"/> "<xsl:value-of select="concat( 'instance.', $property/@name)"/>", "%{class='<xsl:value-of select="normalize-space($cssclass)"/>',title='<xsl:value-of select="normalize-space($if-missing)"/>',size='<xsl:value-of select="normalize-space($size)"/>',maxlength='<xsl:value-of select="normalize-space($maxlength)"/>',rows='<xsl:value-of select="normalize-space($rows)"/>',href='<xsl:value-of select="normalize-space($href)"/>'}")}
+				${<xsl:value-of select="concat( $property/ancestor::adl:entity/@name, 'FieldHelper', '.', $mode, '(')"/> "<xsl:value-of select="concat( 'instance.', $property/@name)"/>", "%{class='<xsl:value-of select="normalize-space($cssclass)"/>',required='<xsl:value-of select="normalize-space( $required)"/>',title='<xsl:value-of select="normalize-space($if-missing)"/>',size='<xsl:value-of select="normalize-space($size)"/>',maxlength='<xsl:value-of select="normalize-space($maxlength)"/>',rows='<xsl:value-of select="normalize-space($rows)"/>',href='<xsl:value-of select="normalize-space($href)"/>'}")}
 				#else
 				[Not authorised]
 				#end
 			</xsl:when>
 			<xsl:otherwise>
-				${<xsl:value-of select="concat( $property/ancestor::adl:entity/@name, 'FieldHelper', '.', $mode, '(')"/> "<xsl:value-of select="concat( 'instance.', $property/@name)"/>", "%{class='<xsl:value-of select="normalize-space($cssclass)"/>',title='<xsl:value-of select="normalize-space($if-missing)"/>',size='<xsl:value-of select="normalize-space($size)"/>',maxlength='<xsl:value-of select="normalize-space($maxlength)"/>',rows='<xsl:value-of select="normalize-space($rows)"/>',href='<xsl:value-of select="normalize-space($href)"/>'}")}
+				${<xsl:value-of select="concat( $property/ancestor::adl:entity/@name, 'FieldHelper', '.', $mode, '(')"/> "<xsl:value-of select="concat( 'instance.', $property/@name)"/>", "%{class='<xsl:value-of select="normalize-space($cssclass)"/>',required='<xsl:value-of select="normalize-space( $required)"/>',title='<xsl:value-of select="normalize-space($if-missing)"/>',size='<xsl:value-of select="normalize-space($size)"/>',maxlength='<xsl:value-of select="normalize-space($maxlength)"/>',rows='<xsl:value-of select="normalize-space($rows)"/>',href='<xsl:value-of select="normalize-space($href)"/>'}")}
 			</xsl:otherwise>				
 		</xsl:choose>
 	</xsl:template>