Mainly grammatical changes involving the replacement of type='serial' with generators
This commit is contained in:
parent
78a038a764
commit
d61f36c13d
|
@ -13,7 +13,7 @@
|
||||||
<!-- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
|
<!-- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
$Revision: 1.7 $
|
$Revision: 1.8 $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
|
<!-- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
|
||||||
|
@ -82,15 +82,8 @@
|
||||||
char(1) java.sql.Types.CHAR
|
char(1) java.sql.Types.CHAR
|
||||||
text: text or java.sql.Types.LONGVARCHAR
|
text: text or java.sql.Types.LONGVARCHAR
|
||||||
memo java.sql.Types.CLOB
|
memo java.sql.Types.CLOB
|
||||||
|
|
||||||
Also, a hack, which may not belong here:
|
|
||||||
|
|
||||||
serial: An integer whose value is automatically assigned by the database. Given
|
|
||||||
that Canonical ADL requires that every key must be specified, we
|
|
||||||
need a way of distinguishing those which are system generated from
|
|
||||||
those which aren't. This may not be the right way to do it!
|
|
||||||
-->
|
-->
|
||||||
<!ENTITY % SimpleDataTypes "%DefinableDataTypes;|boolean|text|serial" >
|
<!ENTITY % SimpleDataTypes "%DefinableDataTypes;|boolean|text" >
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
data types which are more complex than SimpleDataTypes...
|
data types which are more complex than SimpleDataTypes...
|
||||||
|
@ -128,6 +121,18 @@
|
||||||
"name CDATA #REQUIRED
|
"name CDATA #REQUIRED
|
||||||
properties (all|user-distict|listed) #REQUIRED" >
|
properties (all|user-distict|listed) #REQUIRED" >
|
||||||
|
|
||||||
|
<!-- Actions for generators (mainly for keyfields - see entity 'generator', below
|
||||||
|
assigned: In manually-maintained code, you contract to assign a value
|
||||||
|
to this property before it is persisted.
|
||||||
|
guid: The system will supply a unique GUid value to this field
|
||||||
|
before it is persisted.
|
||||||
|
mannual: You contract to supply a generatos class in manually maintained
|
||||||
|
code.
|
||||||
|
native: The database will supply a unique value to this field when it
|
||||||
|
is persisted; the value will be an integer. RECOMMENDED!
|
||||||
|
-->
|
||||||
|
<!ENTITY % GeneratorActions "assigned|guid|manual|native">
|
||||||
|
|
||||||
<!-- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
|
<!-- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
|
||||||
<!-- Elements -->
|
<!-- Elements -->
|
||||||
<!-- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
|
<!-- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
|
||||||
|
@ -276,7 +281,7 @@
|
||||||
committed to persistent store, the value which it holds before
|
committed to persistent store, the value which it holds before
|
||||||
it has been committed
|
it has been committed
|
||||||
-->
|
-->
|
||||||
<!ELEMENT property ( documentation?, permission*, option*, prompt*, help*, ifmissing*)>
|
<!ELEMENT property ( documentation?, generator?, permission*, option*, prompt*, help*, ifmissing*)>
|
||||||
|
|
||||||
<!ATTLIST property
|
<!ATTLIST property
|
||||||
name CDATA #REQUIRED
|
name CDATA #REQUIRED
|
||||||
|
@ -404,6 +409,36 @@ property[@type='entity']. TODO: Not complete, not yet strictly convinced it's th
|
||||||
column CDATA #IMPLIED
|
column CDATA #IMPLIED
|
||||||
unsaved-value CDATA #IMPLIED>
|
unsaved-value CDATA #IMPLIED>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
marks a property which is auto-generated by some part of the system.
|
||||||
|
This is based on the Hibernate construct, except that the Hibernate
|
||||||
|
implementation folds both its internal generators and custom generators
|
||||||
|
onto the same attribute. This separates them onto two attributes so we
|
||||||
|
can police values for Hibernate's 'builtin' generators.
|
||||||
|
|
||||||
|
action: one of the supported Hibernate builtin generators, or
|
||||||
|
'manual'. 'native' is strongly recommended in most instances
|
||||||
|
class: if action is 'manual', the name of a manually maintained
|
||||||
|
class conforming to the Hibernate IdentifierGenerator
|
||||||
|
interface, or its equivalent in other languages
|
||||||
|
-->
|
||||||
|
<!ELEMENT generator (documentation?, param*)>
|
||||||
|
<!ATTLIST generator
|
||||||
|
action (%GeneratorActions;) #REQUIRED
|
||||||
|
class CDATA #IMPLIED>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
A parameter passed to the generator. Again, based on the Hibernate
|
||||||
|
implementation.
|
||||||
|
|
||||||
|
name: the name of this parameter
|
||||||
|
-->
|
||||||
|
<!ELEMENT param (CDATA)>
|
||||||
|
<!ATTLIST param
|
||||||
|
name CDATA #REQUIRED>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
one of an explicit list of optional values a property may have
|
one of an explicit list of optional values a property may have
|
||||||
NOTE: whether options get encoded at application layer or at database layer
|
NOTE: whether options get encoded at application layer or at database layer
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
are generated.
|
are generated.
|
||||||
|
|
||||||
$Author: sb $
|
$Author: sb $
|
||||||
$Revision: 1.2 $
|
$Revision: 1.3 $
|
||||||
$Date: 2008-02-01 18:25:38 $
|
$Date: 2008-02-04 15:54:46 $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<xsl:stylesheet version="1.0"
|
<xsl:stylesheet version="1.0"
|
||||||
|
@ -47,7 +47,7 @@
|
||||||
* THIS FILE IS AUTOMATICALLY GENERATED AND SHOULD NOT
|
* THIS FILE IS AUTOMATICALLY GENERATED AND SHOULD NOT
|
||||||
* BE MANUALLY EDITED.
|
* BE MANUALLY EDITED.
|
||||||
*
|
*
|
||||||
* Generated using adl2canonical.xsl revision <xsl:value-of select="substring('$Revision: 1.2 $', 12)"/>
|
* Generated using adl2canonical.xsl revision <xsl:value-of select="substring('$Revision: 1.3 $', 12)"/>
|
||||||
*
|
*
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
</xsl:comment>
|
</xsl:comment>
|
||||||
|
@ -69,7 +69,7 @@
|
||||||
Since we've got the key tag, I think this should be disallowed -->
|
Since we've got the key tag, I think this should be disallowed -->
|
||||||
<xsl:template match="adl:entity[@natural-key]">
|
<xsl:template match="adl:entity[@natural-key]">
|
||||||
<xsl:message terminate="no">
|
<xsl:message terminate="no">
|
||||||
[In entity '<xsl:value-of select="@name"/>']: '@natural-key' is deprecated - use the 'key' sub element instead</xsl:message>
|
ADL WARNING: [In entity '<xsl:value-of select="@name"/>']: '@natural-key' is deprecated - use the 'key' sub element instead</xsl:message>
|
||||||
<entity>
|
<entity>
|
||||||
<xsl:variable name="nkey" select="@natural-key"/>
|
<xsl:variable name="nkey" select="@natural-key"/>
|
||||||
<xsl:apply-templates select="@*"/>
|
<xsl:apply-templates select="@*"/>
|
||||||
|
@ -120,7 +120,7 @@
|
||||||
<!-- check that it is unique, and abort hard if not... -->
|
<!-- check that it is unique, and abort hard if not... -->
|
||||||
<xsl:if test="descendant::adl:property[@name=$key]">
|
<xsl:if test="descendant::adl:property[@name=$key]">
|
||||||
<xsl:message terminate="yes">
|
<xsl:message terminate="yes">
|
||||||
Entity '<xsl:value-of select="@name"/>' has a property '<xsl:value-of select="$key"/>' which conflicts
|
ADL ERROR: Entity '<xsl:value-of select="@name"/>' has a property '<xsl:value-of select="$key"/>' which conflicts
|
||||||
with your chosen key naming convention <xsl:value-of select="$abstract-key-name-convention"/>. Either:
|
with your chosen key naming convention <xsl:value-of select="$abstract-key-name-convention"/>. Either:
|
||||||
(i) Make property '<xsl:value-of select="$key"/>' an explicit key by putting it in the <key> tag;
|
(i) Make property '<xsl:value-of select="$key"/>' an explicit key by putting it in the <key> tag;
|
||||||
(ii) Name property '<xsl:value-of select="$key"/>' something else; or
|
(ii) Name property '<xsl:value-of select="$key"/>' something else; or
|
||||||
|
@ -129,10 +129,11 @@
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
|
|
||||||
<!-- generate one property, the abstract primary key -->
|
<!-- generate one property, the abstract primary key -->
|
||||||
<property type="serial" distinct="system">
|
<property type="integer" distinct="system">
|
||||||
<xsl:attribute name="name">
|
<xsl:attribute name="name">
|
||||||
<xsl:value-of select="normalize-space( $key)"/>
|
<xsl:value-of select="normalize-space( $key)"/>
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
|
<generator action="native"/>
|
||||||
</property>
|
</property>
|
||||||
</key>
|
</key>
|
||||||
<xsl:apply-templates select="adl:property | adl:one-to-many | adl:many-to-many | adl:many-to-one"/>
|
<xsl:apply-templates select="adl:property | adl:one-to-many | adl:many-to-many | adl:many-to-one"/>
|
||||||
|
@ -270,22 +271,32 @@
|
||||||
</xsl:for-each>
|
</xsl:for-each>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="adl:typedef[ @type = 'string' and not( @size)]">
|
||||||
|
<xsl:message terminate="yes">
|
||||||
|
ADL ERROR: Type definitions of type 'string' must have a valid value for 'size'
|
||||||
|
Offending typedef: <xsl:value-of select="@name"/>
|
||||||
|
</xsl:message>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
<!-- Language constraints -->
|
<!-- Language constraints -->
|
||||||
<xsl:template match="property[ @type = 'string' and not( number( @size))]">
|
<xsl:template match="adl:property[ @type = 'string' and not( @size)]">
|
||||||
<xsl:message terminate="yes">
|
<xsl:message terminate="yes">
|
||||||
ADL ERROR: Properties of type 'string' must have a valid value for 'size'
|
ADL ERROR: Properties of type 'string' must have a valid value for 'size'
|
||||||
|
Offending property: <xsl:value-of select="@name"/> of entity <xsl:value-of select="ancestor::adl:entity/@name"/>
|
||||||
</xsl:message>
|
</xsl:message>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<xsl:template match="property[ @type = 'entity' and not( @entity)]">
|
<xsl:template match="adl:property[ @type = 'entity' and not( @entity)]">
|
||||||
<xsl:message terminate="yes">
|
<xsl:message terminate="yes">
|
||||||
ADL ERROR: Properties of type 'entity' must have a valid value for 'entity'
|
ADL ERROR: Properties of type 'entity' must have a valid value for 'entity'
|
||||||
|
Offending property: <xsl:value-of select="@name"/> of entity <xsl:value-of select="ancestor::adl:entity/@name"/>
|
||||||
</xsl:message>
|
</xsl:message>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<xsl:template match="property[ @type = 'defined' and not( @typedef)]">
|
<xsl:template match="adl:property[ @type = 'defined' and not( @typedef)]">
|
||||||
<xsl:message terminate="yes">
|
<xsl:message terminate="yes">
|
||||||
ADL ERROR: Properties of type 'defined' must have a valid value for 'typedef'
|
ADL ERROR: Properties of type 'defined' must have a valid value for 'typedef'
|
||||||
|
Offending property: <xsl:value-of select="@name"/> of entity <xsl:value-of select="ancestor::adl:entity/@name"/>
|
||||||
</xsl:message>
|
</xsl:message>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue