diff --git a/.cvsignore b/.cvsignore new file mode 100755 index 0000000..2e9693e --- /dev/null +++ b/.cvsignore @@ -0,0 +1,2 @@ +obj +bin \ No newline at end of file diff --git a/schemas/adl-0-1-0.xsd b/schemas/adl-0-1-0.xsd new file mode 100755 index 0000000..cc59244 --- /dev/null +++ b/schemas/adl-0-1-0.xsd @@ -0,0 +1,734 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/schemas/adl-0.dtd b/schemas/adl-0.dtd index 2d60a30..d71ce98 100755 --- a/schemas/adl-0.dtd +++ b/schemas/adl-0.dtd @@ -1,28 +1,28 @@ - - - - - - - - - - - + + + + + + + + + + + - + - -%XHTML; +%XHTML; --> @@ -262,7 +262,7 @@ that we can allow HTML block level entities within content elements --> should HTML markup within a documentation element be allowed? If so, are there restrictions? --> - + @@ -646,7 +646,7 @@ property[@type='entity']. TODO: Not complete, not yet strictly convinced it's th content to place in the top of the body of the generated document; this is %Flow; which is any HTML block or inline level element. --> - + @@ -654,7 +654,7 @@ property[@type='entity']. TODO: Not complete, not yet strictly convinced it's th content to place at the foot of the body of the generated document; this is %Flow; which is any HTML block or inline level element. --> - + diff --git a/schemas/adl-0.xsd b/schemas/adl-0.xsd index cf9ef7c..ff738a4 100755 --- a/schemas/adl-0.xsd +++ b/schemas/adl-0.xsd @@ -4,39 +4,39 @@ xmlns:adl='http://www.cygnets.co.uk/schemas/adl-0.xsd' xmlns:html='http://www.w3.org/1999/xhtml'> - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - + + + + + - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + diff --git a/transforms/adl2adl.xslt b/transforms/adl2adl.xslt deleted file mode 100755 index 785cf34..0000000 --- a/transforms/adl2adl.xslt +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - *************************************************************************** - * - * ©2007 Cygnet Solutions Ltd - * - * THIS FILE IS AUTOMATICALLY GENERATED AND SHOULD NOT - * BE MANUALLY EDITED. - * - * Generated using adl2adl.xsl revision - * - *************************************************************************** - - - - - - - - - - - Class "" has an 'Id' field, but no key. This is not allowed. - - - - - - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/transforms/adl2canonical.xslt b/transforms/adl2canonical.xslt new file mode 100755 index 0000000..a04e00a --- /dev/null +++ b/transforms/adl2canonical.xslt @@ -0,0 +1,427 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *************************************************************************** + * + * + * ©2007 Cygnet Solutions Ltd + * + * THIS FILE IS AUTOMATICALLY GENERATED AND SHOULD NOT + * BE MANUALLY EDITED. + * + * Generated using adl2canonical.xslt + * + *************************************************************************** + + + + + + + + + + + + + + entity already has a key - not generating one + + + + + + + + + + + + + + + ADL WARNING: [In entity '']: '@natural-key' is deprecated - use the 'key' sub element instead + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + entity has no key - generating one + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ADL ERROR: Entity '' has a property '' which conflicts + with your chosen key naming convention . Either: + (i) Make property '' an explicit key by putting it in the <key> tag; + (ii) Name property '' something else; or + (iii) Choose a different key naming convention. + + + + + + + + + + + Auto-generated abstract primary key + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ADL ERROR: Type definitions of type 'string' must have a valid value for 'size' + Offending typedef: + + + + + + + ADL ERROR: Properties of type 'string' must have a valid value for 'size' + Offending property: of entity + + + + + + ADL ERROR: Properties of type 'entity' must have a valid value for 'entity' + Offending property: of entity + + + + + + ADL ERROR: Properties of type 'defined' must have a valid value for 'typedef' + Offending property: of entity + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ADL: ERROR: A group may not be its own parent; offending group + + + + + + + + + + + + ADL: ERROR: Group specified ( does not exist. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/transforms/adl2controllerclasses.xslt b/transforms/adl2controllerclasses.xslt index 5c00124..2487895 100755 --- a/transforms/adl2controllerclasses.xslt +++ b/transforms/adl2controllerclasses.xslt @@ -8,497 +8,1161 @@ Transform ADL into (partial) controller classes - $Author: af $ - $Revision: 1.5 $ - $Date: 2008-02-28 14:56:05 $ + $Author: sb $ + $Revision: 1.6 $ + $Date: 2008-05-29 16:39:08 $ --> - - - + - - + - + + + + - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - -/* ---- [ cut here: next file 'Controller.auto.cs'] ---------------- */ - + + /* ---- [ cut here: next file '.auto.cs'] ---------------- */ //------------------------------------------------------------------ // -// Application Description Framework -// Controller.auto.cs +// +// // // (c) 2007 Cygnet Solutions Ltd // -// Controller for auto-generated forms for editing s -// Automatically generated from application description using -// adl2controllerclass.xsl version +// Automatically generated abstract super class for controllers for the +// application; generated using +// adl2controllerclasses.xslt version // // This file is automatically generated; DO NOT EDIT IT. // //------------------------------------------------------------------ using System; +using System.Data; using System.Collections.Generic; -using Castle.MonoRail.Framework.Helpers; -using Cygnet.Web.Helpers; -using Cygnet.Web.Controllers; -using System.Web.Security; using NHibernate; using NHibernate.Expression; -using Castle.MonoRail.Framework; -using Cygnet.Entities; -using Cygnet.Exceptions; -using Iesi.Collections.Generic; -using ; +using Cygnet.Web.Controllers; +using ; namespace { - /// <summary> - /// Automatically generated partial controller class following 'thin controller' - /// strategy, for entity . Note that part of this - /// class may be defined in a separate file called - /// Controller.manual.cs, q.v. - /// - /// DO NOT EDIT THIS FILE! - /// </summary> - [ - Helper(typeof(ShuffleWidgetHelper), "ShuffleWidgetHelper"), - ] - public partial class Controller : BaseController { - - /// <summary> - /// Store the record represented by the parameters passed in an HTTP service - /// Without Id -> it's new, I create a new persistent object; - /// With Id -> it's existing, I update the existing persistent object. - /// NOTE: Should only be called from a handler for method 'POST', never 'GET'. - /// </summary> - private void Store() - { - ISession hibernator = NHibernateHelper.GetCurrentSession(); - List<string> messages = new List<string>(); + /// <summary> + /// Automatically generated abstract super class for controllers for the + /// application + /// + /// DO NOT EDIT THIS FILE! + /// </summary> + public abstract partial class : BaseController { + + /// <summary> + /// Return a list of all instances of for use in menus, etc; + /// </summary> + protected IList<> ( ISession hibernator) { + return hibernator.CreateCriteria(typeof()) + + .AddOrder( ) + + .SetCacheable( true) + .SetCacheRegion( "") + .List<>(); + } - record; - - - - string id = Form[""]; - - if ( String.IsNullOrEmpty( id)) { - /* it's new, create persistent object */ - record = new (); - - /* perform any domain knowledge behaviour on the new record - * after instantiation */ - record.AfterCreationHook( hibernator); - messages.Add( "Created new "); - - } else { - /* it's existing, retrieve it */ - record = - hibernator.CreateCriteria(typeof()) - .Add(Expression.Eq("", Int32.Parse(id))) - .UniqueResult<>(); - - if ( record != null) - throw new Exception( String.Format( "No record of type with key value {0} found", id)); - - } - - try { - /* actually update the record */ - BindObjectInstance( record, ParamStore.Form, "instance"); - - - /* for properties of type 'entity', it should not be necessary to do anything - * special - BindObjectInstance /should/ do it all. Unfortunately it sometimes - * doesn't, and I haven't yet characterised why not. TODO: Fix this! */ - record. = - hibernator.CreateCriteria(typeof()) - .Add(Expression.Eq(" - - ", Int32.Parse(Form[""]))) - .UniqueResult<>(); - - - - /* 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! */ - - string[] = Form.GetValues( ""); - - if ( != null) - { - /* update the linking table for my ; first smash the old values */ - if ( != null) { - .Clear(); - } else { - = new HashedSet<>(); - } - - /* then reinstate the values from the indexes passed */ - foreach ( string index in ) - { - - - - - - .Add( - hibernator.CreateCriteria(typeof()) - .Add(Expression.Eq(, Int32.Parse(index))) - .UniqueResult<>()); - } - } - - - - /* with a list we cannot just smash the old values! Instead we need to check - * each one and exclude it if no longer required */ - if ( Form.GetValues( "") != null) - { - string[] = Form.GetValues( ""); - - /* updating child records; first remove any not on the submitted list */ - foreach ( item in record.){ - String itemId = item.KeyString; - bool found = false; - - foreach ( string index in ){ - - if ( index.Equals( itemId)){ - found = true; - } - } - - if ( ! found){ - record..Remove( item); - } - } - - /* then add any on the included list which are not already members */ - foreach ( string index in ){ - - - - - - item = - hibernator.CreateCriteria(typeof()) - .Add(Expression.Eq("", Int32.Parse(index))) - .UniqueResult<>(); - - if ( ! record..Contains( item)){ - record..Add( item); - } - } - } - - - /* perform any domain knowledge behaviour on the record prior to updating */ - record.BeforeUpdateHook( hibernator); - - /* write the record to the database, in order to guarantee we have a valid key */ - hibernator.Save(record); - hibernator.Flush(); - - /* perform any domain knowledge behaviour on the record after updating */ - record.AfterUpdateHook( hibernator); - - messages.Add( "Record saved successfully"); - - }catch ( DataSuitabilityException dse){ - AddError( dse.Message); - - }catch ( ApplicationException axe){ - AddError( axe.Message); - } - - PropertyBag["messages"] = messages; - PropertyBag["instance"] = record; - - - - - RenderViewWithFailover(""); - } - - /// <summary> - /// Actually delete the selected record - /// </summary> - [AccessibleThrough(Verb.Get)] - public void Delete() { - ISession hibernator = NHibernateHelper.GetCurrentSession(); - string id = Params[""]; - string reallydelete = Params["reallydelete"]; - - if ( "true".Equals( reallydelete)){ - record = - hibernator.CreateCriteria(typeof()) - .Add(Expression.Eq("", Int32.Parse(id))) - .UniqueResult<>(); - - if ( record != null){ - record.BeforeDeleteHook( hibernator); - - hibernator.Delete( - hibernator.CreateCriteria(typeof()) - .Add(Expression.Eq("", Int32.Parse(id))) - .UniqueResult<>()); - - hibernator.Flush(); - - }else{ - throw new ApplicationException( "No such record?"); - } - } - - - InternalShowList(); - - - RedirectToUrl( FormsAuthentication.DefaultUrl); - - - } - - - - - - - /// <summary> - /// list all instances of this entity to allow the user to select one for editing - /// this method invokes the default list view - which is probably what you want unless - /// you've a special reason for doing something different - /// </summary> - public void InternalShowList(){ - InternalShowList( ""); - } - - /// <summary> - /// list all instances of this entity to allow the user to select one for editing - /// </summary> - /// <param name="view">The name of the list view to show</param> - public void InternalShowList( String view){ - ISession hibernator = NHibernateHelper.GetCurrentSession(); - IList<> instances = - hibernator.CreateCriteria(typeof()) - - .List<>(); - - PropertyBag["instances"] = - PaginationHelper.CreatePagination( Context, instances, 25); - - RenderViewWithFailover(view); - } - - } + + } } - + - - if ( Form[ "" ] == null) { - AddError( - - - - "You must supply a value for " - ); - } + + - + + Not generating controller for entity , + as it has no forms, pages or lists. + + + - + /* ---- [ cut here: next file 'Controller.auto.cs'] ---------------- */ - - - - - "" - +//------------------------------------------------------------------ +// +// +// Controller.auto.cs +// +// (c) 2007 Cygnet Solutions Ltd +// +// Controller for auto-generated forms for editing s +// Automatically generated from application description using +// adl2controllerclasses.xslt version +// +// This file is automatically generated; DO NOT EDIT IT. +// +//------------------------------------------------------------------ - - - - - - - /// <summary> - /// Handle the submission of the form named - /// </summary> - [AccessibleThrough(Verb.Post)] - public void ( ) - { - string command = Form[ "command"]; - - if ( command == null) - { - throw new Exception( "No command?"); - } - else - - if ( command.Equals( "")) - { - /* NOTE: You must write an implementation of this verb in a - manually maintained partial class file for this class */ - (); - } - else +using System; +using System.Data; +using System.Collections.Generic; +using System.Configuration; +using System.Web; +using System.Web.Security; +using System.Web.UI; +using System.Web.UI.WebControls; +using System.Web.UI.WebControls.WebParts; +using System.Web.UI.HtmlControls; +using Castle.MonoRail.Framework.Helpers; +using Cygnet.Exceptions; +using Cygnet.Web.Helpers; +using Cygnet.Web.Controllers; +using Cygnet.Web.SmartControls; +using NHibernate; +using NHibernate.Expression; +using Castle.MonoRail.Framework; +using Iesi.Collections.Generic; +using ; + +namespace { + + /// <summary> + /// Automatically generated partial controller class following 'thin controller' + /// strategy, for entity . Note that part of this + /// class may be defined in a separate file called + /// Controller.manual.cs, q.v. + /// + /// DO NOT EDIT THIS FILE! + /// </summary> + [ + + Layout(""), + + + Rescue(""), + + ControllerDetails("", Area = ""), + Helper(typeof(), "") + ] + public partial class : { + + /* The SmartFormHelper stuff in generated controller classes does not yet work. There is some + * hope that in future it will offer definite benefits and in the mean time it is doing no harm. + * However if you are looking for bugs look elsewhere - this is not currently used */ + protected class : SmartFormHelper { + public () { + + + + + + /* Entity is foreign..? */ + + Register<>( "", + new TypeMenuControl<>( "","")); + + + Register<>( "", EntityMenuControl<>.Instance); + + - if ( command.Equals( "delete")) - { - ISession hibernator = NHibernateHelper.GetCurrentSession(); - string id = Form[""]; + } + } - PropertyBag["instance"] = - hibernator.CreateCriteria(typeof()) - .Add(Expression.Eq("", Int32.Parse(id))) - .UniqueResult<>(); + + /// <summary> + /// Temporary hack to sort a problem with uninitialised messages + /// </summary> + public void fixupMessages() { + ISession hibernator = + NHibernateHelper.GetCurrentSession( Session[ NHibernateHelper.USERTOKEN], + Session[NHibernateHelper.PASSTOKEN]); + ICollection<> instances = + hibernator.CreateCriteria( typeof( )) + .List<>(); + + foreach ( instance in instances) { + + if ( == null || == 0 ){ + = new Message(); + hibernator.Save( ); + } + + hibernator.Save( instance); + } + hibernator.Flush(); + + list(); + + } + + + + + /// <summary> + /// Store the record represented by the parameters passed in an HTTP service + /// Without Id -> it's new, I create a new persistent object; + /// With Id -> it's existing, I update the existing persistent object. + /// NOTE: Should only be called from a handler for method 'POST', never 'GET'. + /// </summary> + private void Store() + { + ISession hibernator = + NHibernateHelper.GetCurrentSession( Session[ NHibernateHelper.USERTOKEN], + Session[NHibernateHelper.PASSTOKEN]); + List<string> messages = new List<string>(); + /* A 'newborn' instance can be updated even if the current user doesn't have + * update permissions, seeing that we use an update operation to set the + * field values and save the entity. */ + Boolean isnewborn = false; + + /* the instance (record) of type we're dealing with */ + record = null; + + try { + + /* a criteria object to use in distinctness checks */ + ICriteria matchCriteria = null; + + + record = FetchRecord( hibernator); + + + + if ( HasNoErrors()) { + if ( record == null) { + /* it seems to be new, create persistent object - if the user is permitted to */ + AssertUserCanCreate(); + + try { + record = new ( + + + + + + + Int32.Parse( Form[""]) + + + + + + + + + hibernator.CreateCriteria( typeof( )) + .Add(Expression.Eq( "", + Int32.Parse( Form[ ""]) + Form[ ""] + )) + .UniqueResult<>() + Form[""] + + + + , + + ); + } + catch ( FormatException) { + /* failed to parse a number - not wholly unexpected, since it's most likely + * that an empty string was passed in */ + record = new (); + } + catch ( NullReferenceException) { + /* again, probably more normal than otherwise */ + record = new (); + } + messages.Add( "New record created"); + isnewborn = true; + } + + if ( record != null) { + /* a transaction to ensure our database operations are atomic */ + ITransaction tx = null; + + if ( ! isnewborn) { + /* isnewborn cannot be true unless we've already checked user can create + * so no need to do it again here */ + AssertUserCanUpdate(); + } - RenderViewWithFailover( "maybedelete.vm"); - } - else if ( command.Equals( "store")) - { - Store(); - } - else - { - throw new Exception( String.Format("Unrecognised command '{0}'", command)); - } - } + try { + /* begin our atomic transaction */ + tx = hibernator.BeginTransaction(); + + /* actually update the record */ + BindObjectInstance( record, ParamStore.Form, "instance"); + + + /* there is at least one slot whose value is an internationalised message; + * if these have yet to be initialised they must be handled specially */ + Locale locale = GetBestLocaleForUser(); + + if ( ! String.IsNullOrEmpty( Form[""])){ + /* there's an uninitialised message for this slot */ + Message mess = record.; + if ( mess == null) { + mess = new Message(); + } + hibernator.Save( mess); + + Translation trans = mess.GetTranslationObject( locale, hibernator); + if ( trans == null) { + trans = new Translation( mess, locale); + } + trans.MessageText = Form[""]; + record. = mess; + hibernator.Save( trans); + } + + + + /* for properties of type 'entity', it should not be necessary to do anything + * special - BindObjectInstance /should/ do it all. Unfortunately it sometimes + * doesn't, and I haven't yet characterised why not. */ + + + + if ( ! String.IsNullOrEmpty( Form[""])) + { + record. = + + + ; + } + + + + ADL: ERROR: Could not fix up value of , because no + entity was found called + + + + + + + /* 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! */ + + string[] = Form.GetValues( ""); + + if ( != null) + { + /* update the linking table for my ; first smash the old values */ + if ( != null) + { + .Clear(); + } + else + { + = new HashedSet<>(); + } - /// <summary> - /// Show the form named , with no content - /// </summary> - [AccessibleThrough(Verb.Get)] - public void ( ) - { - ISession hibernator = NHibernateHelper.GetCurrentSession(); - - - - RenderViewWithFailover(""); - } + /* then reinstate the values from the indexes passed */ + foreach ( string index in ) + { + .Add( + hibernator.CreateCriteria(typeof()) + .Add(Expression.Eq("Id", index)) + .UniqueResult<.>()); + } + } + - /// <summary> - /// Show the form named , containing the indicated record - /// </summary> - /// <param name="Id">the key value of the record to show</param> - [AccessibleThrough(Verb.Get)] - public void ( Int32 Id) - { - ISession hibernator = NHibernateHelper.GetCurrentSession(); - record = - hibernator.CreateCriteria(typeof()) - .Add(Expression.Eq("Id", Id)) - .UniqueResult<>(); + + /* with a list we cannot just smash the old values! Instead we need to check + * each one and exclude it if no longer required */ + if ( Form.GetValues( "") != null) + { + string[] = Form.GetValues( ""); - PropertyBag["instance"] = record; + /* updating child records; first remove any not on the submitted list */ + foreach ( item in record.) + { + String itemId = item.KeyString; + bool found = false; - - - - RenderViewWithFailover(""); - } + foreach ( string index in ) + { + if ( index.Equals( itemId)) + { + found = true; + break; + } + } /* foreach ( string index... */ + + if ( ! found) + { + record..Remove( item); + } + } /* foreach ( item ... */ + + /* then add any on the included list which are not already members */ + foreach ( string index in ) + { + + item = + hibernator.CreateCriteria(typeof()) + .Add(Expression.Eq("Id", index)) + .UniqueResult<.>(); + + if ( ! record..Contains( item)) + { + record..Add( item); + } + } /* foreach ( string index... */ + } /* if ( Form.GetValues( "") != null) */ + + + /* write the record to the database, in order to guarantee we have a valid key */ + hibernator.Save(record); + hibernator.Flush(); + tx.Commit(); + + messages.Add( ""); + } /* try actually commit */ + catch ( Exception any) { + tx.Rollback(); + messages.Add( ""); + throw any; + } + } /* if ( record != null) */ + else { + throw new ApplicationException( String.Format( " + + ")); + } + } /* if ( HasNoErrors()) */ + } /* try */ + catch ( DataSuitabilityException dse) + { + AddError( dse); + } + catch ( ApplicationException axe) + { + AddError( axe.Message); + } + + if ( ! HasNoErrors()) + { + /* the session may be polluted; create a new session */ + NHibernateHelper.CloseSession(); + hibernator = NHibernateHelper.GetCurrentSession( + Session[ NHibernateHelper.USERTOKEN], + Session[NHibernateHelper.PASSTOKEN]); + + record = FetchRecord( hibernator); + } /* if ( ! HasNoErrors()) */ + + TypedPropertyBag = new { + + + + + username = Session[ NHibernateHelper.USERTOKEN], + + messages = messages, + instance = record }; + + RenderViewWithFailover("", + ""); + } + + + + + /// <summary> + /// Actually delete the selected record + /// </summary> + [AccessibleThrough(Verb.Post)] + public void Delete() + { + AssertUserCanDelete(); + ISession hibernator = + NHibernateHelper.GetCurrentSession( Session[ NHibernateHelper.USERTOKEN], + Session[NHibernateHelper.PASSTOKEN]); + + if ( "true".Equals( Params["reallydelete"])) + { + record = FetchRecord( hibernator); + + if ( record != null) + { + hibernator.Delete( record); + hibernator.Flush(); + } + else + { + throw new ApplicationException( "No such record?"); + } + } + + + Redirect( ""); + + + Redirect( FormsAuthentication.DefaultUrl); + + + } + + + + + + + /// <summary> + /// list all instances of this entity to allow the user to select one for editing + /// this method invokes the default list view - which is probably what you want unless + /// you've a special reason for doing something different + /// </summary> + public void InternalShowList() + { + InternalShowList( ""); + } + + /// <summary> + /// list all instances of this entity to allow the user to select one for editing + /// </summary> + /// <param name="view">The name of the list view to show</param> + public void InternalShowList( String view) + { + AssertUserCanRead(); + ISession hibernator = + NHibernateHelper.GetCurrentSession( Session[ NHibernateHelper.USERTOKEN], + Session[NHibernateHelper.PASSTOKEN]); + + ICriteria search = + hibernator.CreateCriteria(typeof()); + + + + + + + + + + + + + if ( ! String.IsNullOrEmpty( Params[ ""])) { + search.Add( Expression.Eq( "", Int32.Parse( Params[""]))); + } + + + if ( ! String.IsNullOrEmpty( Params[ ""])) { + search.Add( Expression.Eq( "", Int32.Parse( Params[""]))); + } + + + if ( ! String.IsNullOrEmpty( Params[ ""])) { + search.Add( Expression.Eq( "", Int32.Parse( Params[""]))); + } + + + + if ( ! String.IsNullOrEmpty( Params[ ""])) { + search.Add( Expression.Like( "", "%"+Params[""]+"%")); + } + + + + + + search.AddOrder(); + + + IList<> instances = search.List<>(); + + + PropertyBag["username"] = Session[ NHibernateHelper.USERTOKEN]; + + PropertyBag["instances"] = + PaginationHelper.CreatePagination( this, instances, 25); + + RenderViewWithFailover(view + ".vm", view + ".auto.vm"); + } + + + /// <summary> + /// Fetch the record represented by the values in the current Form + /// </summary> + protected FetchRecord(ISession hibernator) { + /* the instance (record) of type we're dealing with */ + record = null; + /* whether we have valid values for all the key fields */ + bool allkeys = true; + + /* check whether values for all key slots have been passed in; if so, we're probably dealing with an + * existing record */ + + if ( String.IsNullOrEmpty( Form[""])) { + allkeys = false; + } else if ( "".Equals( Form[""])) { + /* nasty artefact of NVelocity forms - default 'null value' is dollar followed by fieldname */ + allkeys = false; + } + + + if ( allkeys){ + /* it's (probably) existing, retrieve it */ + record = hibernator.CreateCriteria(typeof()) + + + + + + + .Add( Expression.Eq( "", + + Int32.Parse( Form[ ""]) + + + + + + + + + + hibernator.CreateCriteria( typeof( )) + .Add(Expression.Eq( "", + + Int32.Parse( Form[ ""]) + + + Form[ ""] + + )) + .UniqueResult<>() + + + Form[ ""] + + )) + + .UniqueResult<>(); + } + + return record; + } + } +} + /* ---- [ cut here: next file 'junk'] ------------------------- */ + + + + + if ( String.IsNullOrEmpty( Form[ "" ])) + { + AddError( + + + + + " + + " + + ); + } + + + + + + + + + + "" + + + + /// <summary> + /// Handle the submission of the form named + /// </summary> + [AccessibleThrough(Verb.Post)] + public void ( ) { + string command = Form[ "command"]; + + if ( command == null) { + throw new Exception( ""); + } + else + + if ( command.Equals( "")) + { + /* NOTE: You must write an implementation of this verb in a + * manually maintained partial class file for this class */ + (); + } + else + + if ( command.Equals( "delete")) + { + ISession hibernator = + NHibernateHelper.GetCurrentSession( Session[ NHibernateHelper.USERTOKEN], + Session[NHibernateHelper.PASSTOKEN]); + + record = FetchRecord( hibernator); + + TypedPropertyBag = new { + + username = Session[ NHibernateHelper.USERTOKEN], + + instance = record }; + + RenderViewWithFailover( "maybedelete.vm", "maybedelete.auto.vm"); + } + else if ( command.Equals( "store")) + { + Store(); + } + else + { + throw new Exception( String.Format(" + + ", command)); + } + } + + /// <summary> + /// Show the form named , with no content + /// </summary> + [AccessibleThrough(Verb.Get)] + public void ( ) + { + AssertUserCanRead(); + + /* we don't actually instantiate this local variable; it exists to that + * TypedPropertyBag can do introspection to infer property types */ + record = null; + + ISession hibernator = + NHibernateHelper.GetCurrentSession( Session[ NHibernateHelper.USERTOKEN], + Session[NHibernateHelper.PASSTOKEN]); + + TypedPropertyBag = new { + + username = Session[ NHibernateHelper.USERTOKEN], + + + + + instance = record + }; + + RenderViewWithFailover("", + ""); + } + + + + + /// <summary> + /// Show the form named , containing the indicated record. As + /// the primary key of the record is itself an entity, we need to first fetch that entity + /// </summary> + + + + /// <param name="">the key value of the key value of the record to show</param> + + + /// <param name="">the key value of the record to show</param> + + + + [AccessibleThrough(Verb.Get)] + public void ( + + + + + + + + + + + + + + + , + ) { + ISession hibernator = + NHibernateHelper.GetCurrentSession( Session[ NHibernateHelper.USERTOKEN], + Session[NHibernateHelper.PASSTOKEN]); + this.( + + + + hibernator.CreateCriteria(typeof()) + .Add( Expression.Eq( "", )) + .UniqueResult<>() + + + + + + , + ); + } + + + /// <summary> + /// Show the form named , containing the indicated record + /// </summary> + + /// <param name="">the key value of the record to show</param> + + [AccessibleThrough(Verb.Get)] + public void ( + + + + + , + ) + { + ISession hibernator = + NHibernateHelper.GetCurrentSession( Session[ NHibernateHelper.USERTOKEN], + Session[NHibernateHelper.PASSTOKEN]); + record = + hibernator.CreateCriteria(typeof()) + + .Add(Expression.Eq("", )) + + .UniqueResult<>(); + + TypedPropertyBag = new { + + username = Session[ NHibernateHelper.USERTOKEN], + + + + + instance = record }; + + RenderViewWithFailover("", ""); + } - - /// <summary> - /// list all instances of this entity to allow the user to select one - /// this method invokes the named view. - /// </summary> - public void () - { - InternalShowList( ""); - } + + /// <summary> + /// list all instances of this entity to allow the user to select one + /// this method invokes the named view. + /// </summary> + public void () + { + InternalShowList( ""); + } - - - - /* produce a list of to populate the menu for */ - - - + + /* */ + - - - /* produce a list of to populate the LHS of the shuffle for */ - - - - - - /* produce a list of to populate the multi-select for */ - - - - + + + + + + + + + + + + + + + + /* should be distinct: check that it is */ + matchCriteria = + hibernator.CreateCriteria(typeof()); + + matchCriteria.Add(Expression.Eq("", + Form[""] + Int32.Parse( Form[""]) + + + + + + + + + ADL: ERROR: don't yet know how to do distinctness checks for properties + with base type + + + )); + + if ( record != null) { + /* i.e. we do have values for each of our key fields... */ + + + + + + + matchCriteria.Add(Expression.Not(Expression.Eq("", + + + + + + + + Int32.Parse( Form[""]) + Form[""] + ))); + + } + + if ( matchCriteria.List<>().Count > 0) + { + AddError( + String.Format("There is already a {0} with the {1} '{2}'", + "", "", Form[""])); + } + + + + + + + + + + + + + + + + + /* form menus */ + + + + + + /* produce a list of to populate the select for */ + + + + + + /* produce a list of to populate the LHS of the shuffle for */ + + + + + + /* produce a list of to populate the multi-select for */ + + + + + + + + + + + + + + + /* there's no way I can find of producing a set of just those entities + * we'll need menus for. So we set up variables for all the menus we might + * need, and then only instantiate those we do need. */ + + + + + + + + + + /* produce a list of to populate the LHS of the shuffle for */ + + + + + + /* produce a list of to populate the multi-select for */ + + + + + + + + - - - - PropertyBag[""] = - hibernator.CreateCriteria(typeof()) - - .List<>(); + + + = + ( NHibernateHelper.GetCurrentSession()), - - - - - - Cannot find entity "". - - - Entity "" does not have a single-property primary key. - - - - + + + + + ADL: ERROR: No entity passed to template primary-key-csharp-type + + + + + ADL: WARNING: entity '' has no primary key. + You will have to manually edit + + + + + + + + + + + + + + ADL: ERROR: No key for entity: + + + + + + ADL: WARNING: Entity has a composite primary key. + You will need to manually edit + + + + + + + + + ADL: WARNING: Entity has no primary key. + You will need to manually edit + + + + + + + + + + + + + + + true + true + true + true + true + true + false + + + + + + + + + + + + ADL: ERROR: property passed to fetch-property-instance whose type is not 'entity' + + + hibernator.CreateCriteria(typeof()) + + .Add(Expression.Eq("", + + + + + + + + Int32.Parse( Form[""]) + Form[""] + )) + + .UniqueResult<>() + + + \ No newline at end of file diff --git a/transforms/adl2entityclasses.xslt b/transforms/adl2entityclasses.xslt index 1a37d23..4372f26 100755 --- a/transforms/adl2entityclasses.xslt +++ b/transforms/adl2entityclasses.xslt @@ -1,6 +1,6 @@ - - - - + - - + - - - - + + - - - + + - - + + - - - + + + -/* ---- [ cut here: next file '.auto.cs'] ---------------- */ + + + + + /* ---- [ cut here: next file '.auto.cs'] ---------------- */ + //------------------------------------------------------------- // - // Application Description Framework + // // .auto.cs // // (c)2007 Cygnet Solutions Ltd // // Automatically generated from application description using - // adl2entityclass.xsl version + // adl2entityclass.xsl revision // // This file is automatically generated; DO NOT EDIT IT. // //------------------------------------------------------------- namespace { - using System; - using System.Collections.Generic; - using System.Text; - using System.Text.RegularExpressions; - using Cygnet.Entities; - using Cygnet.Exceptions; - using Iesi.Collections.Generic; + using System; + using System.Configuration; + using System.Collections; + using System.Collections.Generic; + using System.Text; + using System.Text.RegularExpressions; + using Cygnet.Exceptions; + using Cygnet.Entities; + using Iesi.Collections.Generic; + + /// <summary> + /// + /// </summary> + /// <remarks> + /// Automatically generated from description of entity + /// using adl2entityclass.xsl revision . + /// Note that manually maintained parts of this class may be defined in + /// a separate file called .manual.cs, q.v. + /// + /// DO NOT EDIT THIS FILE! + /// </remarks> + public partial class : Entity + { + /// <summary> + /// Auto-generated no-args constructor; does nothing (but probably should + /// ensure ID slot is initialised correctly) + /// </summary> + public () : base(){ + + } - /// <summary> - /// Automatically generated from description of entity - /// using adl2entityclass.xsl. Note that manually maintained parts of this - /// class may be defined in a separate file called .cs, q.v. - /// - /// DO NOT EDIT THIS FILE! - /// </summary> - public partial class : Entity - { - /// <summary> - /// Auto-generated no-args constructor; does nothing (but probably should - /// ensure ID slot is initialised correctly) - /// </summary> - public () : base(){ - - } - /// <summary> - /// Auto-generated overridden property for the Key slot, maps onto - /// </summary> - public override string KeyString { - get { - - return null; // No primary key; return null. + + /* natural primary key exists - not generating abstract key */ - - return .ToString(); // Single key. + + /* primary key exists - not generating abstract key */ + + /// <summary> + /// Auto-generated constructor; initialises each of the slots within + /// the primary key and also all one-to-many and many-to-many slots + /// </summary> + public ( + + + + + + + , + ){ + + + + + this. = ; + + } + - StringBuilder result = new StringBuilder(); - + + ADL: ERROR: Entity '' has no key. Was the + canonicalise stage missed in the build process? + + + + /// <summary> + /// Auto-generated overridden property for the Key slot, maps onto + /// </summary> + public override string KeyString { + get { + StringBuilder result = new StringBuilder(); + result.Append(.KeyString); - result.Append('|'); + result.Append('|'); + return result.ToString(); + } + } + + /// <summary> + /// A user readable distinct identifying string + /// </summary> + public override string UserIdentifier + { + get { + StringBuilder result = new StringBuilder(); + + + + + + if ( != null) + result.Append( ); + + + + if ( != null) + result.Append( ); + + + + if ( != null) + result.Append(.ToString( "d")); + + + + if ( != null) + result.Append(.ToString( "t")); + + + if ( != null) + result.Append(); + + + + + + result.Append( ", "); + + + + + + result.AppendFormat( "#{0}", KeyString); + + + return result.ToString(); - - - } - } + } + } + + /// <summary> + /// If I should not be deleted, return a message explaining why I should not be deleted; else null. + /// </summary> + /// <returns>a message explaining why I should not be deleted; else null</returns> + public override string NoDeleteReason { + get { + string result = null; + + StringBuilder bob = new StringBuilder(); + + + + + + + + + + + if ( != null && .Count > 0) { + bob.AppendFormat("Cannot delete this as it has {0} dependent ; ", .Count); + } - /// <summary> - /// A user readable distinct identifying string - /// </summary> - public override string UserIdentifier { - get { - StringBuilder result = new StringBuilder(); - - - - result.Append(.UserIdentifier); - - result.Append( ", "); - + + - - - result.AppendFormat( "#{0}", ); - - - - return result.ToString(); + if (bob.Length > 0) { + result = bob.ToString(); + } + + return result; + } + } + + } } - - - } - } - + /* ---- [ cut here: next file 'junk'] ------------------------- */ - - - - - - , - - - - - - - + + /* NOTE: property '' is marked as being abstract; it must + * be supported by manually maintained code */ + + + // auto generating iv/property pair for slot with name + - - // auto generating iv/property pair for slot with name - - - - - true - - - - - + + + + - - + + + + + + - - ICollection<> - - - ICollection<> - - - - - - - - - + + + + + + + + + + + ? - + = "" @@ -213,178 +293,166 @@ + = null + = false + = 0 + = 0.0M + = 0.0 + = null - - - - - + + + + + + + + - private Regex Validator = new Regex( ""); + private Regex Validator = new Regex( ""); - private ; + private ; - public virtual - { - get { return ; } - set { - - if ( value == null) - { - throw new DataRequiredException( - - - - - "The value for may not be set to null" + /// <summary> + /// + + + + Auto generated property for field + : + /// + /// </summary> + public virtual + { + get { + + if ( == null) { + = new HashedSet<>(); + } + + + return ; + } + set { + + if ( value == null) + { + throw new DataRequiredException( + + + + + "The value for may not be set to null" + + + ); + } + + + + + + + + + + + + + if ( value > ) + { + throw new DataRangeException( "The maximum permitted value for is "); + } + + + if ( value < ) + { + throw new DataRangeException( "The minimum permitted value for is "); + } + + + if ( value != null && ! Validator.IsMatch( value)) + { + throw new DataFormatException( string.Format( "The value supplied ({0}) does not match the format required by ", value)); + } + + + + if ( value != null && value.Length > ) + { + value = value.Substring( 0, ); + } + + = value; + } + } + + + /* generate primitive value getter/setter for key property of type entity (experimental) */ + + + + + + private + = false + = 0 + = 0.0M + = 0.0 + = null + [unknown? ] - - ); - } - - - - - - - - - - - - - - if ( value > ) - { - throw new DataRangeException( "The maximum permitted value for is "); + ; + + public virtual { + get { return ; } + set { = value; } } - - - if ( value < ) - { - throw new DataRangeException( "The minimum permitted value for is "); - } - - - if ( value != null && ! Validator.IsMatch( value)) - { - throw new DataFormatException( string.Format( "The value supplied ({0}) does not match the format required by ", value)); - } - - - if ( value != null && value.Length > ) - { - value = value.Substring( 0, ); - } - - = value; - } - } - - // auto generating for one-to-one with name - private _; - - public virtual - { - get { return _; } - set { _ = value; } - } - - - - - // auto generating for set with name , having many-to-many child - private ICollection<> ; - - public virtual ICollection<> - { - get { return ; } - set { = value; } - } - - - - - // auto generating for set with name , having one-to-many child - private ICollection<> ; - - public virtual ICollection<> - { - get { return ; } - set { = value; } - } - - - - - - - - - - - - - - - - - ? - - - - - - - - - true - - - - - - + + + /* */ - + - + "" - - - - - - - = new HashedSet<>(); - - - - - - - - = new HashedSet<>(); - - - - - - + + + + + + + = new Message(); + + + + + + + + + + + + = new HashedSet<>(); + + + + + + \ No newline at end of file diff --git a/transforms/adl2hibernate.xslt b/transforms/adl2hibernate.xslt index 31c2e9f..d13b0ca 100755 --- a/transforms/adl2hibernate.xslt +++ b/transforms/adl2hibernate.xslt @@ -1,216 +1,591 @@ - - - - - + + + + + - - - - - *************************************************************************** - * - * ©2007 Cygnet Solutions Ltd - * - * THIS FILE IS AUTOMATICALLY GENERATED AND SHOULD NOT - * BE MANUALLY EDITED. - * - * Generated using adl2hibernate-mapping.xsl revision - * - *************************************************************************** - - - - + + - - - - - - - + - - - - - Class '' has no properties in its key - + + + + + + + + + + + ABCDEFGHIJKLMNOPQRSTUVWXYZ + abcdefghijklmnopqrstuvwxyz + + + ADD EXCEPT PERCENT + ALL EXEC PLAN + ALTER EXECUTE PRECISION + AND EXISTS PRIMARY + ANY EXIT PRINT + AS FETCH PROC + ASC FILE PROCEDURE + AUTHORIZATION FILLFACTOR PUBLIC + BACKUP FOR RAISERROR + BEGIN FOREIGN READ + BETWEEN FREETEXT READTEXT + BREAK FREETEXTTABLE RECONFIGURE + BROWSE FROM REFERENCES + BULK FULL REPLICATION + BY FUNCTION RESTORE + CASCADE GOTO RESTRICT + CASE GRANT RETURN + CHECK GROUP REVOKE + CHECKPOINT HAVING RIGHT + CLOSE HOLDLOCK ROLLBACK + CLUSTERED IDENTITY ROWCOUNT + COALESCE IDENTITY_INSERT ROWGUIDCOL + COLLATE IDENTITYCOL RULE + COLUMN IF SAVE + COMMIT IN SCHEMA + COMPUTE INDEX SELECT + CONSTRAINT INNER SESSION_USER + CONTAINS INSERT SET + CONTAINSTABLE INTERSECT SETUSER + CONTINUE INTO SHUTDOWN + CONVERT IS SOME + CREATE JOIN STATISTICS + CROSS KEY SYSTEM_USER + CURRENT KILL TABLE + CURRENT_DATE LEFT TEXTSIZE + CURRENT_TIME LIKE THEN + CURRENT_TIMESTAMP LINENO TO + CURRENT_USER LOAD TOP + CURSOR NATIONAL TRAN + DATABASE NOCHECK TRANSACTION + DBCC NONCLUSTERED TRIGGER + DEALLOCATE NOT TRUNCATE + DECLARE NULL TSEQUAL + DEFAULT NULLIF UNION + DELETE OF UNIQUE + DENY OFF UPDATE + DESC OFFSETS UPDATETEXT + DISK ON USE + DISTINCT OPEN USER + DISTRIBUTED OPENDATASOURCE VALUES + DOUBLE OPENQUERY VARYING + DROP OPENROWSET VIEW + DUMMY OPENXML WAITFOR + DUMP OPTION WHEN + ELSE OR WHERE + END ORDER WHILE + ERRLVL OUTER WITH + ESCAPE OVER WRITETEXT + + + + + + + + + + + + + *************************************************************************** + * + * + * .auto.hbm.xml + * + * ©2007 Cygnet Solutions Ltd + * + * THIS FILE IS AUTOMATICALLY GENERATED AND SHOULD NOT + * BE MANUALLY EDITED. + * + * Generated using adl2hibernate.xslt revision + * + *************************************************************************** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TODO: remember you need to deal with this in manually maintained code + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - () - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + - - - true - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Error! Found type "" but cannot find 'dotnet' or 'hibernate' attributes. - - - Error! Type "" not found. - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + 0 + + + + + + + + -1 + + + 1 + + + + + + + - - + \ No newline at end of file diff --git a/transforms/adl2mssql.xslt b/transforms/adl2mssql.xslt index ed6242c..ef1c9c8 100755 --- a/transforms/adl2mssql.xslt +++ b/transforms/adl2mssql.xslt @@ -1,236 +1,362 @@ - + - - - + + + + + + + + + + + ABCDEFGHIJKLMNOPQRSTUVWXYZ + abcdefghijklmnopqrstuvwxyz + + + ADD EXCEPT PERCENT + ALL EXEC PLAN + ALTER EXECUTE PRECISION + AND EXISTS PRIMARY + ANY EXIT PRINT + AS FETCH PROC + ASC FILE PROCEDURE + AUTHORIZATION FILLFACTOR PUBLIC + BACKUP FOR RAISERROR + BEGIN FOREIGN READ + BETWEEN FREETEXT READTEXT + BREAK FREETEXTTABLE RECONFIGURE + BROWSE FROM REFERENCES + BULK FULL REPLICATION + BY FUNCTION RESTORE + CASCADE GOTO RESTRICT + CASE GRANT RETURN + CHECK GROUP REVOKE + CHECKPOINT HAVING RIGHT + CLOSE HOLDLOCK ROLLBACK + CLUSTERED IDENTITY ROWCOUNT + COALESCE IDENTITY_INSERT ROWGUIDCOL + COLLATE IDENTITYCOL RULE + COLUMN IF SAVE + COMMIT IN SCHEMA + COMPUTE INDEX SELECT + CONSTRAINT INNER SESSION_USER + CONTAINS INSERT SET + CONTAINSTABLE INTERSECT SETUSER + CONTINUE INTO SHUTDOWN + CONVERT IS SOME + CREATE JOIN STATISTICS + CROSS KEY SYSTEM_USER + CURRENT KILL TABLE + CURRENT_DATE LEFT TEXTSIZE + CURRENT_TIME LIKE THEN + CURRENT_TIMESTAMP LINENO TO + CURRENT_USER LOAD TOP + CURSOR NATIONAL TRAN + DATABASE NOCHECK TRANSACTION + DBCC NONCLUSTERED TRIGGER + DEALLOCATE NOT TRUNCATE + DECLARE NULL TSEQUAL + DEFAULT NULLIF UNION + DELETE OF UNIQUE + DENY OFF UPDATE + DESC OFFSETS UPDATETEXT + DISK ON USE + DISTINCT OPEN USER + DISTRIBUTED OPENDATASOURCE VALUES + DOUBLE OPENQUERY VARYING + DROP OPENROWSET VIEW + DUMMY OPENXML WAITFOR + DUMP OPTION WHEN + ELSE OR WHERE + END ORDER WHILE + ERRLVL OUTER WITH + ESCAPE OVER WRITETEXT + + + + + ------------------------------------------------------------------------------------------------- -- + -- + -- -- Database for application version - -- Generated for MS-SQL 2000+ using adl2mssql.xsl $Revision: 1.1 $ + -- Generated for MS-SQL 2000+ using adl2mssql.xslt -- -- Code generator (c) 2007 Cygnet Solutions Ltd -- ------------------------------------------------------------------------------------------------- + + use ; + + ------------------------------------------------------------------------------------------------- -- authentication roles ------------------------------------------------------------------------------------------------- - + ------------------------------------------------------------------------------------------------- - -- tables, views and permissions + -- primary tables, views and permissions ------------------------------------------------------------------------------------------------- - - - + ------------------------------------------------------------------------------------------------- - -- referential integrity constraints + -- link tables ------------------------------------------------------------------------------------------------- - - - - - - - - - + + + ------------------------------------------------------------------------------------------------- + -- primary referential integrity constraints + ------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------- -- end of file ------------------------------------------------------------------------------------------------- - + - + execute sp_addrole @rolename = '' GO - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - ALTER TABLE "" - ADD FOREIGN KEY ( "") - REFERENCES "" ON DELETE NO ACTION + + ALTER TABLE "" + ADD FOREIGN KEY ( "") + REFERENCES "" ON DELETE GO - + - - - - - ------------------------------------------------------------------------------------------------- - -- primary table - ------------------------------------------------------------------------------------------------- - CREATE TABLE "" - ( - - Id INT IDENTITY( 1, 1) PRIMARY KEY - ) - - GO - - ---- permissions ------------------------------------------------------------------------------ - - - + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + CASCADE + CASCADE + CASCADE + NO ACTION + + + + + - - + + + + + + + + + + + ------------------------------------------------------------------------------------------------- - -- convenience view VW_DL_ for default list + -- primary table ------------------------------------------------------------------------------------------------- - - CREATE VIEW "VW_DL_" AS - SELECT ""."Id", - - - - - - - AS - ""."" - - - , - - - - FROM "" , "" AS "" - - - - - WHERE - AND - ""."" = ""."Id" - - + CREATE TABLE "" + ( + + + , + + + ) + GO ---- permissions ------------------------------------------------------------------------------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ""." + + + + + + + + + + ""."" + ' ' + - - - - - - - - - - - - GRANT SELECT ON "" TO - - GO - GRANT INSERT ON "" TO - - GO - GRANT SELECT, INSERT ON "" TO - - GO - GRANT SELECT, INSERT, UPDATE ON "" TO - - GO - GRANT SELECT, INSERT, UPDATE, DELETE ON "" TO - - GO - REVOKE ALL ON "" FROM - - GO + - - - - - - - - - - REVOKE ALL ON "VW_DL_" FROM - - GO - REVOKE ALL ON "VW_DL_" FROM - - GO - GRANT SELECT ON "VW_DL_" TO - - GO - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + GRANT SELECT ON "" TO + + + GRANT INSERT ON "" TO + + + GRANT SELECT, INSERT ON "" TO + + + GRANT SELECT, INSERT, UPDATE ON "" TO + + + GRANT SELECT, INSERT, UPDATE, DELETE ON "" TO + + + REVOKE ALL ON "" FROM + + + + GO + + + + + + - false + false true false - + + -- Problems with responsibility for generating link tables: + -- @entity = + -- $nearside = + -- $farside = + -- farlink = + -- comparison = '' + -- my responsibility = + - + - + - -- Responsibility = '' - ------------------------------------------------------------------------------------------------- - -- link table joining with - ------------------------------------------------------------------------------------------------- - CREATE TABLE "" - ( - "Id" INT NOT NULL, - "Id" INT NOT NULL, - ) + ------------------------------------------------------------------------------------------------- + -- link table joining with + ------------------------------------------------------------------------------------------------- + CREATE TABLE "" + ( + "" + + NOT NULL, + "" + + NOT NULL + ) - GO + GO - ---- permissions ------------------------------------------------------------------------------ - - - - + ---- permissions ------------------------------------------------------------------------------ + + + + + + GRANT SELECT,INSERT,UPDATE,DELETE ON TO + + + GRANT SELECT,INSERT,UPDATE,DELETE ON TO + + + GRANT SELECT,INSERT,UPDATE,DELETE ON TO + + + GRANT SELECT,INSERT,UPDATE,DELETE ON TO + + + REVOKE ALL ON FROM + + + REVOKE ALL ON FROM + + + GRANT SELECT ON TO + + + GO - - - - ---- referential integrity -------------------------------------------------------------------- + + ---- referential integrity -------------------------------------------------------------------- + + + + + + + + + + + + - ALTER TABLE "" - ADD FOREIGN KEY ( "Id") - REFERENCES "" ON DELETE NO ACTION - - GO - - ALTER TABLE "" - ADD FOREIGN KEY ( "Id") - REFERENCES "" ON DELETE NO ACTION - - GO - + + + + + + + + + + + + - ALTER TABLE "" - ADD FOREIGN KEY ( "Id") - REFERENCES "" ON DELETE CASCADE - - GO - - ALTER TABLE "" - ADD FOREIGN KEY ( "Id") - REFERENCES "" ON DELETE CASCADE - - GO - - + + + + + + + + + + + + - - - + - -- Suppressing generation of , as it is not my responsibility + -- Suppressing generation of , as it is not my responsibility - - - -- Suppressing output of property , - -- as it is the 'one' end of a one-to-many relationship + + + -- Suppressing output of property , + -- as it is the 'one' end of a one-to-many relationship - - - "" INT + IDENTITY( 1, 1) + + + + + + + + + + + + + + + + + + + + + + + + "" NOT NULL DEFAULT + + + + '' + + + + + + + + + + + + + + + + + + "" DEFAULT NOT NULL, - - - - - - - "" - VARCHAR( ) - INT - DOUBLE PRECISION - - DEFAULT NOT NULL, - - - - - - -- SQL Server doesn't have proper booleans! - "" BIT - DEFAULT 1 - DEFAULT 0 - NOT NULL, - - - - - - "" VARCHAR( ) DEFAULT '' NOT NULL, - - - - - "" DATETIME DEFAULT - NOT NULL, - - - - - - "" INT DEFAULT NOT NULL, - + test="@required='true'"> NOT NULL - - - "" DOUBLE PRECISION DEFAULT NOT NULL, - + + + + + + + + + + + + + + + + + + + + + + + + - - - "" DEFAULT NOT NULL, - + + + + + + + + + + + + ADL: WARNING: entity '' has a compound primary key; + adl2mssql is not yet clever enough to generate appropriate code + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ADL: ERROR: property '' refers to + entity '', but this entity has no key. + + + + + + + ADL: ERROR: property '' refers to + entity '', but no such entity exists. + + + + + DATETIME + DATETIME + + VARCHAR( ) + TEXT + BIT + TIMESTAMP + INT + DOUBLE PRECISION + DECIMAL + [sql:unknown? []] + + diff --git a/transforms/adl2psql.xslt b/transforms/adl2psql.xslt index fc2707b..7044b31 100755 --- a/transforms/adl2psql.xslt +++ b/transforms/adl2psql.xslt @@ -7,13 +7,18 @@ - + - + + + + + + - + ------------------------------------------------------------------------------------------------- -- -- Database for application version - -- Generated for PostgreSQL [7|8] using adl2psql.xsl $Revision: 1.1 $ + -- Generated for PostgreSQL [7|8] using adl2psql.xsl $Revision: 1.2 $ -- - -- Code generator (c) 2006 Simon Brooke [sb@cygnets.co.uk] + -- Code generator (c) 2006 Simon Brooke [simon@weft.co.uk] -- http://www.weft.co.uk/library/jacquard/ -- ------------------------------------------------------------------------------------------------- @@ -84,7 +89,7 @@ - ALTER TABLE ADD CONSTRAINT ri__ + ALTER TABLE ADD CONSTRAINT ri_ FOREIGN KEY ( ) REFERENCES ON DELETE NO ACTION; @@ -122,9 +127,9 @@ ------------------------------------------------------------------------------------------------- - -- convenience view lv_ for lists + -- convenience view lv for lists ------------------------------------------------------------------------------------------------- - CREATE VIEW lv_ AS + CREATE VIEW lv AS SELECT diff --git a/transforms/adl2views.xslt b/transforms/adl2views.xslt index 7144373..feade61 100755 --- a/transforms/adl2views.xslt +++ b/transforms/adl2views.xslt @@ -1,1127 +1,1589 @@ - - - - + $Author: sb $ + $Revision: 1.3 $ + $Date: 2008-05-29 16:39:38 $ + --> + - - + - - + - + + - - + + + + + + + + + + + + + - - - - - [ cut here: next file 'tail.txt' ] - - + + - - - - - - [ cut here: next file '' ] - - - - - #set( $title = " $instance.UserIdentifier") - - - - - Auto generated Velocity maybe-delete form for , - generated from ADL. + + + + - Generated using adl2views.xsl - - ${Ajax.InstallScripts()} - ${FormHelper.InstallScripts()} - ${Validation.InstallScripts()} - ${Scriptaculous.InstallScripts()} - - - -
+ + + + + + + + [ cut here: next file 'tail.txt' ] + + + + + + + + Layout is + + + + + + + + + + + + + + + + + + [none] + + + + + + + [ cut here: next file '' ] + + + + + + #set( $title = " $instance.UserIdentifier") + + + + Auto generated Velocity maybe-delete form for , + generated from ADL. + + Generated using adl2views.xslt + + + + + + + + + + + + + + [none] + + + + + + + + [ cut here: next file '' ] + + + + + + + #set( $title = " $instance.UserIdentifier") + + $!title + + + Auto generated Velocity maybe-delete form for , + generated from ADL. + + Generated using adl2views.xslt + + + + + + + + + + + + + + + + + + - - - ${FormHelper.HiddenField( "instance.")} + + + + + + + + + + + - - ${FormHelper.HiddenField( "instance.Id")} + + + + + + + + - - - - - - -
- Really delete? - - - - -
- - - - -
- - - - - - - - - an - an - an - an - an - a - - - - - [ cut here: next file '.auto.vm' ] - - - - - #if ( $instance) - #set( $title = " $instance.UserIdentifier") - #else - #set( $title = "Add a new ") - #end - - - - - Auto generated Velocity form for , - generated from ADL. - - Generated using adl2views.xsl - - ${Ajax.InstallScripts()} - ${FormHelper.InstallScripts()} - ${Validation.InstallScripts()} - ${Scriptaculous.InstallScripts()} - ${ShuffleWidgetHelper.InstallScripts()} - - - - - - - -
- #if ( $Flash.errors) -
-

Errors were encountered

- -
    - #foreach ($error in $Flash.errors) -
  • - $error -
  • - #end -
-
- #end - #if ( $messages.Count == 0) - - #else -
- #foreach ( $message in $messages) -

- $message -

- #end -
- #end -
- - - - - - - - - - - - - - - - - - - - - - ${FormHelper.HiddenField( "instance.")} - - - - - - ${FormHelper.HiddenField( "instance.Id")} - - - - - - -
- - - - - - - - - - - - - - - - - - -
- To save this record - - -
- To delete this record - - -
-
- -
- - - -
- - -
- - - - - - - display: none - - - - - - -

- - - -

-
- - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Add a new - - - - - - - - - - - - - - - - - - - - - - - #foreach( $item in $instance.) - #if ( $velocityCount % 2 == 0) - #set( $oddity = "even") - #else - #set( $oddity = "odd") - #end - - - - - - - #if ( $item.) - $item..UserIdentifier - #end - - - - - #if ( $item. == '') - - - - #end - - - - $!item. - - - - - - - - - - Edit! - - - - #end - - - - - - - - - - - - - - - - - - - - #foreach( $instance in $instances) - #if ( $velocityCount % 2 == 0) - #set( $oddity = "even") - #else - #set( $oddity = "odd") - #end - - - - $!instance. - - - - - - - - Edit! - - - - #end - - - - - - - - actionDangerous - actionSafe - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - even - odd - - - - - - - Computed field ''? TODO: Not yet implememented - - - - - - - - - - - - - - - ${FormHelper.LabelFor( "instance.", " - - ")} - - +
- - + + - - - -
- ${ShuffleWidgetHelper.UnselectedOptions( "", , $instance.)} -
+ + - - - - - + - ${ShuffleWidgetHelper.SelectedOptions( "", $instance.)} -
- - - - - + +
- - - - - - even - odd - - - - - - -
+ +
+ + + + + + [ cut here: next file '.auto.vm' ] + + + + - - + + + + +
+ + #if ( $errors) + #if ( $errors.Count != 0) +
    + #foreach($e in $errors) + #if($e.Message) +
  • $t.Error($e)
  • + #else +
  • $t.Enc($e)
  • + #end + #end +
+ #end + #end +
+ + #if( $messages) + #if ( $messages.Count != 0) +
    + #foreach ( $message in $messages) +
  • $message
  • + #end +
+ #end + #end +
+
+ + + + + + + + + + + + + + + + + + #if ( $instance) + ${FormHelper.HiddenField( "instance.")} + #end + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + +
+ #if ( $instance) + #if ( $instance.NoDeleteReason) + [ $instance.NoDeleteReason ] + #else + + #end + #end + + #if ( $instance) + #if ( $instance.NoDeleteReason) + + #else + + #end + #end +
+
+ +
+
+ + +
+ + + + + + + display: none + + + + + + +

+ + + + + + +

+
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auxlist for with listed fields + + + + + + + + auxlist with computed fields + + + + + + + + + + + + + + actionDangerous + actionSafe + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + even + odd + + + + + + + + Computed field ()? TODO: Not yet implememented + + + + + + + + + + + + + + ${FormHelper.LabelFor( "instance.", " + + + ")} + + + #if( $instance) + #if( ) + + $FormHelper.HiddenField( "instance.") + #else + + + + + + #end + #else + + + + + + #end + + + + + + - - - - - - - - - You must provide a value for - Enter a value for - - - - - - - - ${FormHelper.LabelFor( "instance.", " - - - - - - - ")} - - - ${FormHelper.TextArea( "instance.", "%{rows='8' cols='60' title=''}")} - - - - - - even - odd - - - - - - - + + + + + + + + + ${FormHelper.LabelFor( "instance.", " + + + ")} + + + + + + + + + + + +
+ ${ShuffleWidgetHelper.UnselectedOptions( "", , $instance.)} + + + + + + + + ${ShuffleWidgetHelper.SelectedOptions( "", $instance.)} +
+ + + + + +
+ + + + + + even + odd + + + + + + +
- - - - - - - - - - - - You must provide a value for - - - The value for must be - - - The value for must be an instance of - - - The value for must be - - - - - - - - - - - - - edit - - - - - - - - ${FormHelper.LabelFor( "instance.", " - - ")} - - - - - [You are not authorised to see this data] - - - - - - - - - - - - - - - - - #if ( $instance) - ${FormHelper.Select( "instance.", $instance., , "%{firstoption='[unset]' firstoptionvalue='-1' text='UserIdentifier' value='' title=''}" )} - #else - ${FormHelper.Select( "instance.", $, , "%{firstoption='[unset]' firstoptionvalue='-1' text='UserIdentifier' value='' title=''}" )} - #end - - - - ${FormHelper.Select( "instance.", $instance., , "%{multiple='multiple' size='8' text='UserIdentifier' value='' title=''}" )} - - - - - - - - - - - - - - - - - - - - - - - - - required - - validate-digits - validate-number - validate-number - date validate-date - - - - - - - - - - - - 60 - - - - - - - $!instance. - - - - - - -
- - - -
- - - -
-
- - - - -
-
- -
- -
- - - - - - - ${FormHelper.CheckboxField( "instance.")} - - - required date validate-date - ${FormHelper.TextField( "instance.", "%{class='' size='10' maxlength='10'}")} - - - - required - validate-digits - validate-number - validate-number - - - - - - - - 8 - 8 - 8 - 60 - - - ${FormHelper.TextField( "instance.", "%{class='' title='' size='' maxlength=''}")} - -
- - - - - -
- - - - - - - + + + + + + [ cut here: next file '.auto.vm' ] + + + + + + + + + - - - - - + Auto generated Velocity list for , + generated from ADL. - - - - - [ cut here: next file '.auto.vm' ] - - - - - - People - - es - - - ies - - - s - - - - - - #set( $title = "") - - - Auto generated Velocity list for , - generated from ADL. + Generated using adl2views.xslt + - Generated using adl2listview.xsl - - ${Ajax.InstallScripts()} - ${FormHelper.InstallScripts()} - ${Validation.InstallScripts()} - ${Scriptaculous.InstallScripts()} - - + #capturefor( title) + + #end + #capturefor( headextras) + + #end + + + + + + - -
- - -
- - Showing $instances.FirstItem - $instances.LastItem of $instances.TotalItems - - - #if($instances.HasFirst) $PaginationHelper.CreatePageLink( 1, "<<" ) #end - #if(!$instances.HasFirst) << #end - - - #if($instances.HasPrevious) $PaginationHelper.CreatePageLink( $instances.PreviousIndex, "<" ) #end - #if(!$instances.HasPrevious) < #end - - - #if($instances.HasNext) $PaginationHelper.CreatePageLink( $instances.NextIndex, ">" ) #end - #if(!$instances.HasNext) > #end - - - #if($instances.HasLast) $PaginationHelper.CreatePageLink( $instances.LastIndex, ">>" ) #end - #if(!$instances.HasLast) >> #end - - - - - - - - Add a new - - - - -
-
- - - - - - - - - - #foreach( $instance in $instances) - #if ( $velocityCount % 2 == 0) - #set( $oddity = "even") - #else - #set( $oddity = "odd") - #end - - - - - - - #end - - - - - - - - - #foreach( $instance in $instances) - #if ( $velocityCount % 2 == 0) - #set( $oddity = "even") - #else - #set( $oddity = "odd") - #end - - - - - - - #end - - -
- - - - - - - - - - - -
- $!instance. - - - - - - Edit! - -
- - - - - - - - - -
- $!instance. - - - - - - Edit! - -
-
- - - -
+ + + + + + [ cut here: next file '.auto.vm' ] + + + + + + + + + + #set( $title = "") + $!title + + + + Auto generated Velocity list for , + generated from ADL. - - - + Generated using adl2listview.xsl + + + + + + + + + + + + + + + + + +
+
+ + Showing $instances.FirstItem - $instances.LastItem of $instances.TotalItems + + + #if($instances.HasFirst) $PaginationHelper.CreatePageLink( 1, "<<" ) #end + #if(!$instances.HasFirst) << #end + + + #if($instances.HasPrevious) $PaginationHelper.CreatePageLink( $instances.PreviousIndex, "<" ) #end + #if(!$instances.HasPrevious) < #end + + + #if($instances.HasNext) $PaginationHelper.CreatePageLink( $instances.NextIndex, ">" ) #end + #if(!$instances.HasNext) > #end + + + #if($instances.HasLast) $PaginationHelper.CreatePageLink( $instances.LastIndex, ">>" ) #end + #if(!$instances.HasLast) >> #end + + + + + + + + + + + + + +
+
+ + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + #foreach( in ) + #if ( $velocityCount % 2 == 0) + #set( $oddity = "even") + #else + #set( $oddity = "odd") + #end + + + + + + + + + + + + ? + & + + + + + + + + + + + + + + + + + + #end +
+ + + + + + + -
+ + + + + + #if ( ) + .ToString( 'd') + #end + + + #if ( ) + $t.Msg( ) + #end + + + #if( ) + + #end + + + + + + + + + + + ! + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + #foreach( in ) + #if ( $velocityCount % 2 == 0) + #set( $oddity = "even") + #else + #set( $oddity = "odd") + #end + + + + + + + + + + ? + & + + + + + + + + + + + + + + + + + + #end +
+ + + + + + + -
+ + + #if ( ) + .ToString( 'd') + #end + + + #if ( ) + $t.Msg( ) + #end + + + #if( ) + + #end + + + + + + + + + + + ! + +
+
+ + + + + + + + + ${ScriptsHelper.InstallScript( "ShuffleWidget")} + + ${Ajax.InstallScripts()} + ${FormHelper.InstallScripts()} + ${Validation.InstallScripts()} + ${Scriptaculous.InstallScripts()} + ${DateTimeHelper.InstallScripts()} + + ${ScriptsHelper.InstallScript( "Sitewide")} + ${ScriptsHelper.InstallScript( "Behaviour")} + ${ScriptsHelper.InstallScript( "Epoch")} + ${ScriptsHelper.InstallScript( "Panes")} + + + + foobar! + + + + + + + + + - - + + + + - + + + - - + + + + - + + + + + + - - + + + + - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + none + + + + + + + + + + + + + + + + + + + + + diff --git a/transforms/base-type-include.xslt b/transforms/base-type-include.xslt new file mode 100755 index 0000000..0e1bbba --- /dev/null +++ b/transforms/base-type-include.xslt @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + integer + integer + + + + + + + + + + + + + + + + + + + + + + + 4294967296 + 8 + 8 + 10 + 10 + 8 + + + + + + + + + + diff --git a/transforms/csharp-type-include.xslt b/transforms/csharp-type-include.xslt new file mode 100755 index 0000000..f2090ae --- /dev/null +++ b/transforms/csharp-type-include.xslt @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + ADL: ERROR: could not find C# base type of property + + + + + + + + + + + + + + + + + + + + + + + + Message + + ICollection<> + + + ICollection<> + + DateTime + DateTime + String + String + Boolean + DateTime + int + double + Decimal + + + + + + + + + + + [unknown?] + + + + diff --git a/transforms/datadescriber.xslt b/transforms/datadescriber.xslt index 8b1d8dd..6e1e826 100755 --- a/transforms/datadescriber.xslt +++ b/transforms/datadescriber.xslt @@ -1,7 +1,7 @@ - + - + @@ -12,7 +12,7 @@ Data definition for the application version - +

diff --git a/transforms/hibernate2adl.xslt b/transforms/hibernate2adl.xslt deleted file mode 100755 index fc72870..0000000 --- a/transforms/hibernate2adl.xslt +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
- - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - - - - - true - false - - - - - - - - - - - date - real - string - string - boolean - timestamp - integer - - - - [unknown!] - - - - - - - - - - - - - - - - - - - entity - - - - - - - - - true - - - - - true - false - - - - - - - - - - - - - link - - - - - - - - - - - - - - list - - - - - - - - - -
\ No newline at end of file diff --git a/transforms/i18n-en-GB-include.xslt b/transforms/i18n-en-GB-include.xslt new file mode 100755 index 0000000..741d671 --- /dev/null +++ b/transforms/i18n-en-GB-include.xslt @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + People + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/transforms/localise-transform.xslt b/transforms/localise-transform.xslt new file mode 100755 index 0000000..8c8ac45 --- /dev/null +++ b/transforms/localise-transform.xslt @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/transforms/types.xml b/transforms/types.xml deleted file mode 100755 index 8d24576..0000000 --- a/transforms/types.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/transforms/types.xslt b/transforms/types.xslt deleted file mode 100755 index a9d752a..0000000 --- a/transforms/types.xslt +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cannot find type "". - - - - - - - - - \ No newline at end of file