Added: db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-1.xsd URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-1.xsd?rev=1631308&view=auto ============================================================================== --- db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-1.xsd (added) +++ db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-1.xsd Mon Oct 13 07:55:38 2014 @@ -0,0 +1,1141 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<!-- + Torque XML database schema DTD + $Id: database-4-0.xsd 1629463 2014-10-05 02:11:26Z tfischer $ +--> + +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + targetNamespace="http://db.apache.org/torque/4.0/templates/database" + xmlns="http://db.apache.org/torque/4.0/templates/database" + elementFormDefault="qualified" + version="4.1"> + + <xs:annotation> + <xs:documentation xml:lang="en"> +The XML schema used by version 4.1 and greater of the Apache Software +Foundation Torque project( +<a href="http://db.apache.org/torque">http://db.apache.org/torque</a> ) +to model SQL database information. This model is used by various Torque +utilities for managing the SQL Server info and to build the Java objects +to access this data. + +The basic structure of a model is built using the database element +as the root. This will contain references to options, external (include) +models, new SQL Domain definitions, and tables. See the Torque project +home page for more details. + </xs:documentation> + </xs:annotation> + +<!-- ===================================== + database element definition + ===================================== --> + <xs:element name="database" type="databaseType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +The root element for defining a Torque database schema. + </xs:documentation> + </xs:annotation> + </xs:element> + + <xs:complexType name="databaseType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +The root type definition for a Torque database schema. + </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="option" type="optionType" minOccurs="0" + maxOccurs="unbounded" > + <xs:annotation> + <xs:documentation xml:lang="en"> +A set of key/value options to be passed to custom generator templates. + </xs:documentation> + </xs:annotation> + </xs:element> + + <xs:element name="include-schema" type="includeSchemaType" + minOccurs="0" maxOccurs="unbounded" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Include another schema file in this schema (as if it were a part of this +schema file). + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="external-schema" type="externalSchemaType" + minOccurs="0" maxOccurs="unbounded" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Reference another schema file from this schema (outbound connections only). + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="domain" type="domainType" minOccurs="0" + maxOccurs="unbounded" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Domains are used to define common attribute sets for columns. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="table" type="tableType" minOccurs="0" + maxOccurs="unbounded" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Defines a database table. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="view" type="viewType" minOccurs="0" + maxOccurs="unbounded" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Defines a database view. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="name" type="javaNameType" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en" > +The name used to identify this schema in the generated +Java objects and as the default JDBC connection pool to use. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="defaultJavaType" use="optional" + type="javaReturnType" default="primitive" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Defines if the record object property getter / setters will +use objects (e.g. Integer) or primitives (e.g. int), defaults +to primitive. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="defaultIdMethod" use="optional" type="idMethodType" + default="none" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Defines the defaultIdMethod to use with tables which do not have an idMethod +attribute defined. This attribute has 3 possible values, they are: + +- idbroker + Torque's software based id broker system +- native + The SQL Server's native autoincrement/identifier process +- none + Don't try to auto assign id numbers +- null + Use the value previously set or the default value. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + +<!-- ===================================== + option element definition + ===================================== --> + <xs:complexType name="optionType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +These tags allows a set of key/value options to be passed to custom generator +templates. + </xs:documentation> + </xs:annotation> + <xs:attribute name="key" type="xs:string" use="required" /> + <xs:attribute name="value" type="xs:string" use="required" /> + </xs:complexType> + +<!-- ===================================== + include-schema element definition + ===================================== --> + <xs:complexType name="includeSchemaType" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Include another schema file in this schema (as if it were a part of this +schema file). + </xs:documentation> + </xs:annotation> + <xs:attribute name="filename" type="xs:string" use="required" /> + </xs:complexType> + +<!-- ===================================== + external-schema element definition + ===================================== --> + <xs:complexType name="externalSchemaType" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Includes another schema file. + </xs:documentation> + </xs:annotation> + <xs:attribute name="filename" type="xs:string" use="required" /> + </xs:complexType> + +<!-- ===================================== + domain element definition + ===================================== --> + <xs:complexType name="domainType" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Domains are used to define attributes for columns. + </xs:documentation> + </xs:annotation> + <xs:attribute name="name" type="xs:string" use="required" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The name used to reference this set of column attributes. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="type" use="optional" type="sqlDataType" + default="VARCHAR" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The SQL Standard data type for the column + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="size" type="xs:decimal" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The size of the field. E.g. Varchar(size) or Numeric(Size). Note that +while this still supports the original torque use of using a +decimal number (5.2) to indicate the precision +and scale in one attribute. Use of the scale attribute is preferred. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="scale" type="xs:integer" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The scale of the field. E.g.decimal(size, scale) + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="default" type="xs:string" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The default column value + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="description" type="xs:string" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The description of this domain for documentation purposes. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + +<!-- ===================================== + table element definition + ===================================== --> + <xs:complexType name="tableType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +The table element and its relevant attributes. + </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="option" type="optionType" minOccurs="0" + maxOccurs="unbounded" /> + <xs:element name="column" type="columnType" maxOccurs="unbounded" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The column element and its relevant attributes + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:choice minOccurs="0" maxOccurs="unbounded" > + <xs:element name="foreign-key" type="foreignKeyType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +Define a foreign key constraint for this table. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="index" type="indexType" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Defines an index for this table. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="unique" type="uniqueType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +Define a unique value constraint + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="id-method-parameter" type="idMethodParameterType"> + </xs:element> + </xs:choice> + </xs:sequence> + <xs:attribute name="name" type="sqlQualifiedNameType" use="required" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The table name of the SQL table. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="interface" type="javaQualifiedNameType" + use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The interface attribute specifies an interface that should be referenced in +the implements section of the generated extension class. If this is a fully +qualified class name (i. e. the string contains dots), the interface will +simply be implemented by the extension object. If the interface is a simple +class name (without dots), an empty interface file will be generated in the +extension object package. When this attribute is used, all methods that +normally would return the extension object type will now return the interface +type. This feature allows to use Torque generated classes in the context of +other applications or APIs. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="peerInterface" type="javaQualifiedNameType" + use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The interface attribute specifies an interface that should be referenced in +the implements section of the generated peer class. If this is a fully +qualified class name (i. e. the string contains dots), the interface will +simply be implemented by the peer object. If the interface is a simple +class name (without dots), an empty interface file will be generated in the +peer package. This feature allows to use Torque generated peer classes +in the context of other applications or APIs. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="baseClass" type="javaQualifiedNameType" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en"> +The fully qualified class that the generated Java table +record objects will extend. This class does not have to extend +org.apache.torque.om.BaseObject. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="basePeer" type="javaQualifiedNameType" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The fully qualified class that the generated Java Peer objects will extend. +Unlike baseClass, basePeer should extend BasePeer at some point in the chain, +i.e. it needs to be the superclass. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="idMethod" use="optional" type="idMethodType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +Defines the id method to automatically generate ids for this table. +This attribute has 3 possible values, they are: + +- idbroker + Torque's software based id broker system +- native + The SQL Server's native autoincrement / identifier process +- none + Don't try to auto assign id numbers + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="abstract" use="optional" type="xs:boolean" + default="false" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Whether or not to generate the class as Abstract or not + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="javaName" type="javaNameType" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +This is the Java class name to use when generating the table. If +this is missing the Java name is generated from the name attribute. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="skipSql" use="optional" type="xs:boolean" + default="false" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Whether or not to skip SQL generation for this reference. Useful for using +Views or creating a "subset" of columns in an existing table. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="description" type="xs:string" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +A description of this table. Used for documentation and will be included in +the table generation SQL if the server type supports this. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + +<!-- ===================================== + column element definition + ===================================== --> + <xs:complexType name="columnType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +The column element and its relevant attributes + </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="option" type="optionType" minOccurs="0" + maxOccurs="unbounded" /> + <xs:element name="enum-value" type="enumValueType" minOccurs="0" + maxOccurs="unbounded" /> + <xs:element name="inheritance" type="inheritanceType" minOccurs="0" + maxOccurs="unbounded" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Define an inheritance mapping of records to class by a key column. See the +inheritance How To document. + </xs:documentation> + </xs:annotation> + </xs:element> + + </xs:sequence> + <xs:attribute name="name" type="sqlNameType" use="required" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The column name + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="type" use="optional" type="sqlDataType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +The SQL data type for the column. Is required unless a domain is used. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="size" type="xs:decimal" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The size of the field. E.g. Varchar(size) or Numeric(Size). Note that +while this still supports the original torque use of using a +decimal number (5.2) to indicate the precision +and scale in one attribute. Use of the scale attribute is preferred. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="scale" type="xs:integer" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The scale of the field. E.g.decimal(size, scale) + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="default" type="xs:string" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The default column value + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="useDatabaseDefaultValue" type="xs:boolean" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Whether to use the database default value if a new object is saved +and the attribute value is equal to the java default value. Default is false. +Has no effect on primitive boolean columns. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="primaryKey" use="optional" + type="xs:boolean" default="false" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Whether this column is part of the table's primary key. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="autoIncrement" use="optional" + type="xs:boolean" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Whether or not to auto-increment this field (true or false, defaults to false) + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="required" use="optional" type="xs:boolean" + default="false" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Whether a value is required in this column (NULL ALLOWED) (true or false, +defaults to false) + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="javaName" type="javaNameType" + use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The Java property name to use for this column in the record objects. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="javaType" use="optional" + type="javaReturnType" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Defines if the record object property getter / setters will +use objects (e.g. Integer) or primitives (e.g. int), defaults +to database attribute or primitive + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="domain" type="xs:string" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The domain reference name to set common settings. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="inheritance" type="inheritanceAttrType" use="optional" + default="false" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The inheritance method used (see inheritance documentation) + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="protected" use="optional" + type="xs:boolean" default="false" > + <xs:annotation> + <xs:documentation xml:lang="en"> +If true, the setters and getters for this property will be protected rather +than public. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="version" use="optional" + type="xs:boolean" default="false" > + <xs:annotation> + <xs:documentation xml:lang="en"> +If true, this column is used as a version number for optimistic locking. +I.e. for updates, Torque will check that the version number in the database +is equal to the version number of the supplied object +and it will automatically increase the version number of the updated row. +Setting version to true will only work for numeric columns and will produce +code that does not compile if applied to other column types. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="enumType" use="optional" type="xs:string"> + <xs:annotation> + <xs:documentation xml:lang="en"> +If this attribute has a value, the java type for the column is an enum. +The name of the enum type is contained in this attribute. It can be either +fully qualified or unqualified. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="description" type="xs:string" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The description of this domain for documentation purposes. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + +<!-- ===================================== + inheritance element definition + ===================================== --> + <xs:complexType name="inheritanceType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +Define an inheritance mapping of records to class by a key column. See the +inheritance How To document. + </xs:documentation> + </xs:annotation> + <xs:attribute name="key" type="xs:string" use="required" > + <xs:annotation> + <xs:documentation xml:lang="en"> +A value found in the column marked as the inheritance key column + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="class" type="javaNameType" use="required" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The class name for the object that will inherit the record values + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="extends" type="javaQualifiedNameType" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The class that the inheritor class will extend + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + +<!-- ===================================== + enumValue element definition + ===================================== --> + <xs:complexType name="enumValueType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +Defines a possible value for an enum. If any of these elements occurs +for a column, Torque will generate an enum for this column. + </xs:documentation> + </xs:annotation> + <xs:attribute name="value" type="xs:string" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en"> +The value for the enum. Must be unique. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="javaName" type="xs:string" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en"> +The java name for the enum. Must be unique and must not clash +with automatically determined javaNames for the same enum. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="description" type="xs:string" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en"> +A description for the enum value. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + +<!-- ===================================== + foreign-key element definition + ===================================== --> + <xs:complexType name="foreignKeyType" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Define a foreign key constraint for this table. + </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="option" type="optionType" minOccurs="0" + maxOccurs="unbounded" /> + <xs:element name="reference" type="referenceType" maxOccurs="unbounded" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Define a mapping between a local column containing a foreign key value and +the foreign table column. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="name" type="sqlNameType" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The name used to create the foreign key constraint. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="foreignTable" type="sqlQualifiedNameType" use="required" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The name of the table that contains the foreign key + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="onDelete" use="optional" type="cascadeType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +The action to take when the referenced value in foreignTable is deleted. +Note this is handled by the database server and not Torque code. Will not +work if the DB server does not support this. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="onUpdate" use="optional" type="cascadeType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +The action to take when the referenced value in foreignTable is updated. +Note this is handled by the database server and not Torque code. Will not +work if the DB server does not support this. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + +<!-- ===================================== + reference element definition + ===================================== --> + <xs:complexType name="referenceType" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Define a mapping between a local column containing a foreign key value and +the foreign table column. + </xs:documentation> + </xs:annotation> + <xs:attribute name="foreign" type="sqlNameType" use="required" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The column in the foreign table that contains the key. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="local" type="sqlNameType" use="required" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The column in this table that contains the foreign key. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + +<!-- ===================================== + index element definition + ===================================== --> + <xs:complexType name="indexType" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Defines an index for this table. + </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="option" type="optionType" minOccurs="0" + maxOccurs="unbounded" /> + <xs:element name="index-column" type="indexColumnType" + maxOccurs="unbounded" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Define a column to use in a table index. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="name" type="sqlNameType" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The name used in creating this index in the database. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + +<!-- ===================================== + reference element definition + ===================================== --> + <xs:complexType name="indexColumnType" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Define a column to use in a table index. + </xs:documentation> + </xs:annotation> + <xs:attribute name="name" type="sqlNameType" use="required" > + <xs:annotation> + <xs:documentation xml:lang="en"> +A column name to use in this index. Must exist in the table. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + +<!-- ===================================== + unique element definition + ===================================== --> + <xs:complexType name="uniqueType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +Define a unique value constraint + </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="option" type="optionType" minOccurs="0" + maxOccurs="unbounded" /> + <xs:element name="unique-column" type="uniqueColumnType" + maxOccurs="unbounded" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Specify a column to use in the unique constraint. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="name" type="sqlNameType" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The name to use in defining this constraint. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + +<!-- ===================================== + unique-column element definition + ===================================== --> + <xs:complexType name="uniqueColumnType" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Specify a column to use in the unique constraint. + </xs:documentation> + </xs:annotation> + <xs:attribute name="name" type="sqlNameType" use="required" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The name to use in defining this constraint. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + +<!-- ===================================== + id-method-parameter element definition + ===================================== --> + <xs:complexType name="idMethodParameterType"> + <xs:attribute name="name" type="xs:string" use="optional" + default="default" /> + <xs:attribute name="value" type="xs:string" + use="required" /> + </xs:complexType> + +<!-- ===================================== + view element definition + ===================================== --> + <xs:complexType name="viewType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +The view element and its relevant attributes. + </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="option" type="optionType" minOccurs="0" + maxOccurs="unbounded" /> + <xs:element name="column" type="viewColumnType" maxOccurs="unbounded" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The column element and its relevant attributes + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="name" type="sqlNameType" use="required" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The name of the SQL view. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="baseClass" type="javaQualifiedNameType" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en"> +The fully qualified class that the generated Java view +record objects will extend. This class does not have to extend +org.apache.torque.om.BaseObject. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="basePeer" type="javaQualifiedNameType" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The fully qualified class that the generated Java Peer objects will extend. +Unlike baseClass, basePeer should extend BasePeer at some point in the chain, +i.e. it needs to be the superclass. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="abstract" use="optional" type="xs:boolean" + default="false" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Whether or not to generate the class as Abstract or not + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="javaName" type="javaNameType" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +This is the Java class name to use when generating the view. If +this is missing the Java name is generated from the name attribute. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="sqlSuffix" type="xs:string" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The remainder of the sql for the view after column definitions. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="createSql" type="xs:string" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The complete SQL for creating the view. Overrides all other means +of generating the SQL for view creation. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="skipSql" use="optional" type="xs:boolean" + default="false" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Whether or not to skip SQL generation for this reference. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="description" type="xs:string" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +A description of this view. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + +<!-- ===================================== + view column element definition + ===================================== --> + <xs:complexType name="viewColumnType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +The column element and its relevant attributes + </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="option" type="optionType" minOccurs="0" + maxOccurs="unbounded" /> + <xs:element name="inheritance" type="inheritanceType" minOccurs="0" + maxOccurs="unbounded" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Define an inheritance mapping of records to class by a key column. See the +inheritance How To document. + </xs:documentation> + </xs:annotation> + </xs:element> + + </xs:sequence> + <xs:attribute name="name" type="sqlNameType" use="required" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The column name + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="type" use="required" type="sqlDataType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +The SQL Standard data type for the column + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="size" type="xs:decimal" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The size of the field. E.g. Varchar(size) or Numeric(Size). Note that +while this still supports the original torque use of using a +decimal number (5.2) to indicate the precision +and scale in one attribute. Use of the scale attribute is preferred. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="scale" type="xs:integer" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The scale of the field. E.g.decimal(size, scale) + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="javaName" type="javaNameType" + use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The Java property name to use for this column in the record objects. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="javaType" use="optional" + type="javaReturnType" > + <xs:annotation> + <xs:documentation xml:lang="en"> +Defines if the record object property getter / setters will +use objects (e.g. Integer) or primitives (e.g. int), defaults +to database attribute or primitive + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="domain" type="xs:string" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The domain reference name to set common settings. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="select" type="sqlQualifiedNameType" use="required" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The sql snippet which contains the value to select. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="protected" use="optional" + type="xs:boolean" default="false" > + <xs:annotation> + <xs:documentation xml:lang="en"> +If true, the setters and getters for this property will be protected rather +than public. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="description" type="xs:string" use="optional" > + <xs:annotation> + <xs:documentation xml:lang="en"> +The description of this column for documentation purposes. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> +<!-- ===================================== + Type definitions for attributes + ===================================== --> + + <xs:simpleType name="sqlDataType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +Standard SQL column data types. + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:NMTOKEN"> + <xs:enumeration value="BIT" /> + <xs:enumeration value="TINYINT" /> + <xs:enumeration value="SMALLINT" /> + <xs:enumeration value="INTEGER" /> + <xs:enumeration value="BIGINT" /> + <xs:enumeration value="FLOAT" /> + <xs:enumeration value="REAL" /> + <xs:enumeration value="NUMERIC" /> + <xs:enumeration value="DECIMAL" /> + <xs:enumeration value="CHAR" /> + <xs:enumeration value="VARCHAR" /> + <xs:enumeration value="LONGVARCHAR" /> + <xs:enumeration value="DATE" /> + <xs:enumeration value="TIME" /> + <xs:enumeration value="TIMESTAMP" /> + <xs:enumeration value="BINARY" /> + <xs:enumeration value="VARBINARY" /> + <xs:enumeration value="LONGVARBINARY" /> + <xs:enumeration value="NULL" /> + <xs:enumeration value="OTHER" /> + <xs:enumeration value="JAVA_OBJECT" /> + <xs:enumeration value="DISTINCT" /> + <xs:enumeration value="STRUCT" /> + <xs:enumeration value="ARRAY" /> + <xs:enumeration value="BLOB" /> + <xs:enumeration value="CLOB" /> + <xs:enumeration value="REF" /> + <xs:enumeration value="BOOLEANINT" /> + <xs:enumeration value="BOOLEANCHAR" /> + <xs:enumeration value="DOUBLE" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="idMethodType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +A schema type for methods to create ids automatically. + +idbroker = Torque's software based id broker system +native = The SQL Server's native method, depends on database used + (e.g. autoincrement for MySQL, sequence for postgresql...) +none = Don't try to auto assign id numbers + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:NMTOKEN"> + <xs:enumeration value="idbroker" /> + <xs:enumeration value="native" /> + <xs:enumeration value="none" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="javaReturnType"> + <xs:restriction base="xs:NMTOKEN"> + <xs:enumeration value="object" /> + <xs:enumeration value="primitive" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="cascadeType" > + <xs:restriction base="xs:NMTOKEN"> + <xs:enumeration value="cascade" /> + <xs:enumeration value="setnull" /> + <xs:enumeration value="restrict" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="inheritanceAttrType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="single" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="javaNameType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +Java identifiers, e.g. [A-Za-z_$]A-Za-z_$0-9]* + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <xs:simpleType name="javaQualifiedNameType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +Java fully qualified names (e.g. x.y.x) + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <xs:simpleType name="sqlNameType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +SQL Standard non-delimited identifiers. + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string" /> + </xs:simpleType> + + <xs:simpleType name="sqlQualifiedNameType"> + <xs:annotation> + <xs:documentation xml:lang="en"> +SQL Standard non-delimited identifiers. + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string" /> + </xs:simpleType> + +</xs:schema> \ No newline at end of file
Modified: db/torque/torque4/trunk/torque-templates/src/test/resources/org/apache/torque/templates/expected-datamodel.xml URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/test/resources/org/apache/torque/templates/expected-datamodel.xml?rev=1631308&r1=1631307&r2=1631308&view=diff ============================================================================== --- db/torque/torque4/trunk/torque-templates/src/test/resources/org/apache/torque/templates/expected-datamodel.xml (original) +++ db/torque/torque4/trunk/torque-templates/src/test/resources/org/apache/torque/templates/expected-datamodel.xml Mon Oct 13 07:55:38 2014 @@ -140,6 +140,19 @@ <td class="detailbackground detailborder detailnotnull"><center> X </center></td> <td class="detailbackground detailborder detaildescription">  </td> </tr> + <tr class="detailrow"> + + <td class="detailbackground detailborder detailname" id="aenum">enum + </td> + <td class="detailbackground detailborder detailtype">EnumEnum</td> + <td class="detailbackground detailborder detailsize"> 50 </td> + <td class="detailbackground detailborder detaildefault"> x</td> + <td class="detailbackground detailborder detailjavaname">Enum</td> + <td class="detailbackground detailborder detailpk"><center>   </center></td> + <td class="detailbackground detailborder detailfk"><center>   </center></td> + <td class="detailbackground detailborder detailnotnull"><center>   </center></td> + <td class="detailbackground detailborder detaildescription">  </td> + </tr> </table> </subsection> <subsection name="b"> Modified: db/torque/torque4/trunk/torque-templates/src/test/resources/org/apache/torque/templates/expected-schema.html URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/test/resources/org/apache/torque/templates/expected-schema.html?rev=1631308&r1=1631307&r2=1631308&view=diff ============================================================================== --- db/torque/torque4/trunk/torque-templates/src/test/resources/org/apache/torque/templates/expected-schema.html (original) +++ db/torque/torque4/trunk/torque-templates/src/test/resources/org/apache/torque/templates/expected-schema.html Mon Oct 13 07:55:38 2014 @@ -137,6 +137,19 @@ A table <td class="detailbackground detailborder detailnotnull"><center> X </center></td> <td class="detailbackground detailborder detaildescription"> </td> </tr> + <tr class="detailrow"> + + <td class="detailbackground detailborder detailname" id="aenum">enum + </td> + <td class="detailbackground detailborder detailtype">EnumEnum</td> + <td class="detailbackground detailborder detailsize"> 50 </td> + <td class="detailbackground detailborder detaildefault"> x</td> + <td class="detailbackground detailborder detailjavaname">Enum</td> + <td class="detailbackground detailborder detailpk"><center> </center></td> + <td class="detailbackground detailborder detailfk"><center> </center></td> + <td class="detailbackground detailborder detailnotnull"><center> </center></td> + <td class="detailbackground detailborder detaildescription"> </td> + </tr> </table> <a name="b"/> <h2>b</h2> Modified: db/torque/torque4/trunk/torque-templates/src/test/resources/org/apache/torque/templates/expected-schema.sql URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/test/resources/org/apache/torque/templates/expected-schema.sql?rev=1631308&r1=1631307&r2=1631308&view=diff ============================================================================== --- db/torque/torque4/trunk/torque-templates/src/test/resources/org/apache/torque/templates/expected-schema.sql (original) +++ db/torque/torque4/trunk/torque-templates/src/test/resources/org/apache/torque/templates/expected-schema.sql Mon Oct 13 07:55:38 2014 @@ -81,6 +81,7 @@ CREATE TABLE a ( a_id INTEGER NOT NULL AUTO_INCREMENT, name VARCHAR(50) default 'a_name' NOT NULL, + enum VARCHAR(50) default 'x', PRIMARY KEY(a_id), INDEX NAME_IDX(name) ); @@ -285,7 +286,8 @@ CREATE OR REPLACE VIEW a_b AS a.a_id AS a_id, a.name AS a_name, b.b_id AS b_id, - b.name AS b_name + b.name AS b_name, + a.enum AS enum from a join r_ab on a.a_id=r_ab.a_id join b on r_ab.b_id=b.b_id; Modified: db/torque/torque4/trunk/torque-templates/src/test/schema/schema.xml URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/test/schema/schema.xml?rev=1631308&r1=1631307&r2=1631308&view=diff ============================================================================== --- db/torque/torque4/trunk/torque-templates/src/test/schema/schema.xml (original) +++ db/torque/torque4/trunk/torque-templates/src/test/schema/schema.xml Mon Oct 13 07:55:38 2014 @@ -20,8 +20,8 @@ <database xmlns="http://db.apache.org/torque/4.0/templates/database" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://db.apache.org/torque/4.0/templates/database - http://db.apache.org/torque/torque-4.0/documentation/orm-reference/database-4-0-strict.xsd" + xsi:schemaLocation="http://db.apache.org/torque/4.1/templates/database + http://db.apache.org/torque/torque-4.1/documentation/orm-reference/database-4-1-strict.xsd" name="bookstore" defaultIdMethod="native"> <external-schema filename="ext-schema.xml" /> @@ -44,6 +44,15 @@ size="50" default="a_name" /> + <column + name="enum" + type="VARCHAR" + size="50" + default="x"> + <enum-value value="x"/> + <enum-value value="y"/> + <enum-value value="z"/> + </column> <index name="NAME_IDX"> <index-column name="name"/> </index> @@ -330,6 +339,7 @@ <column name="a_name" type="VARCHAR" select="a.name"/> <column name="b_id" type="INTEGER" select="b.b_id"/> <column name="b_name" type="VARCHAR" select="b.name"/> + <column name="enum" type="VARCHAR" enumName="a.b.SomeEnum" select="a.enum"/> </view> </database> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
