Author: tfischer
Date: Mon Oct 13 07:55:38 2014
New Revision: 1631308
URL: http://svn.apache.org/r1631308
Log:
TORQUE-331 - implement enum handling (testing bugfixing to be done)
TORQUE-308 - be backwards compatible with schema location
Added:
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/skipdecider/EnumSkipDecider.java
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/EnumValueAttributeName.java
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/enum.vm
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/enumClassJavadoc.vm
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/enumValue.vm
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-1-strict.xsd
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-1.xsd
Modified:
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/TemplateOptionName.java
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/TorqueSchemaAttributeName.java
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/TorqueSchemaElementName.java
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ColumnAttributeName.java
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMColumnTransformer.java
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/doc/html/conf/control.xml
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/doc/xdoc/conf/control.xml
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/idtable/conf/control.xml
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/conf/control.xml
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/conf/options.properties
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/outlets/dbObject.xml
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/imports.vm
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/buildColumnValues.vm
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/recordmapper/base/dbObjectFieldGetter.vm
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/recordmapper/base/recordMapperBase.vm
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/sql/conf/control.xml
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/sql/createdb/conf/control.xml
db/torque/torque4/trunk/torque-templates/src/test/resources/org/apache/torque/templates/expected-datamodel.xml
db/torque/torque4/trunk/torque-templates/src/test/resources/org/apache/torque/templates/expected-schema.html
db/torque/torque4/trunk/torque-templates/src/test/resources/org/apache/torque/templates/expected-schema.sql
db/torque/torque4/trunk/torque-templates/src/test/schema/schema.xml
Modified:
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/TemplateOptionName.java
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/TemplateOptionName.java?rev=1631308&r1=1631307&r2=1631308&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/TemplateOptionName.java
(original)
+++
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/TemplateOptionName.java
Mon Oct 13 07:55:38 2014
@@ -241,7 +241,13 @@ public enum TemplateOptionName implement
/**
* The visibility of the joinGetter methods.
*/
-
OM_JOIN_GETTER_VISIBILITY("torque.om.complexObjectModel.joinGetterVisibility");
+
OM_JOIN_GETTER_VISIBILITY("torque.om.complexObjectModel.joinGetterVisibility"),
+
+ /** The prefix for the name of enum types. */
+ OM_ENUM_NAME_PREFIX("torque.om.enumNamePrefix"),
+
+ /** The suffix for the name of enum types. */
+ OM_ENUM_NAME_SUFFIX("torque.om.enumNameSuffix");
/**
* The fully qualified name of the option.
Modified:
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/TorqueSchemaAttributeName.java
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/TorqueSchemaAttributeName.java?rev=1631308&r1=1631307&r2=1631308&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/TorqueSchemaAttributeName.java
(original)
+++
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/TorqueSchemaAttributeName.java
Mon Oct 13 07:55:38 2014
@@ -91,7 +91,9 @@ public enum TorqueSchemaAttributeName im
/** attribute skipSql */
SKIP_SQL("skipSql"),
/** attribute version */
- VERSION ("version");
+ VERSION ("version"),
+ /** attribute version */
+ ENUM_NAME("enumName");
/** The name of the attribute, not null. */
private String name;
@@ -101,7 +103,7 @@ public enum TorqueSchemaAttributeName im
*
* @param name the name of the attribute, not null.
*/
- private TorqueSchemaAttributeName(String name)
+ private TorqueSchemaAttributeName(final String name)
{
this.name = name;
}
Modified:
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/TorqueSchemaElementName.java
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/TorqueSchemaElementName.java?rev=1631308&r1=1631307&r2=1631308&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/TorqueSchemaElementName.java
(original)
+++
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/TorqueSchemaElementName.java
Mon Oct 13 07:55:38 2014
@@ -57,7 +57,9 @@ public enum TorqueSchemaElementName impl
/** element index. */
INDEX("index"),
/** element index-column. */
- INDEX_COLUMN("index-column");
+ INDEX_COLUMN("index-column"),
+ /** element enum-value. */
+ ENUM_VALUE("enum-value");
/**
* The name of the element, not null.
@@ -69,7 +71,7 @@ public enum TorqueSchemaElementName impl
*
* @param name the name of the element, not null.
*/
- private TorqueSchemaElementName(String name)
+ private TorqueSchemaElementName(final String name)
{
this.name = name;
}
Added:
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/skipdecider/EnumSkipDecider.java
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/skipdecider/EnumSkipDecider.java?rev=1631308&view=auto
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/skipdecider/EnumSkipDecider.java
(added)
+++
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/skipdecider/EnumSkipDecider.java
Mon Oct 13 07:55:38 2014
@@ -0,0 +1,44 @@
+package org.apache.torque.templates.skipdecider;
+
+/*
+ * 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.
+ */
+
+import org.apache.torque.generator.control.ControllerState;
+import org.apache.torque.generator.source.SourceElement;
+import org.apache.torque.generator.source.skipDecider.SkipDecider;
+import org.apache.torque.templates.transformer.om.ColumnAttributeName;
+
+/**
+ * A skip decider which returns true if the attribute "generateEnum"
+ * is set to "true" the current source element.
+ *
+ * @version $Id: InterfaceSkipDecider.java 1470235 2013-04-20 21:23:39Z
tfischer $
+ */
+public class EnumSkipDecider implements SkipDecider
+{
+ public boolean proceed(final ControllerState controllerState)
+ {
+ SourceElement sourceElement
+ = (SourceElement) controllerState.getModel();
+ String generateEnum
+ = (String) sourceElement.getAttribute(
+ ColumnAttributeName.GENERATE_ENUM);
+ return Boolean.parseBoolean(generateEnum);
+ }
+}
Modified:
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ColumnAttributeName.java
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ColumnAttributeName.java?rev=1631308&r1=1631307&r2=1631308&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ColumnAttributeName.java
(original)
+++
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ColumnAttributeName.java
Mon Oct 13 07:55:38 2014
@@ -27,19 +27,13 @@ import org.apache.torque.generator.sourc
*/
public enum ColumnAttributeName implements SourceAttributeName
{
- /**
- * Whether the column is a primitive column.
- */
+ /** Whether the column is a primitive column. */
PRIMITIVE_TYPE("primitive"),
- /**
- * Whether the column is a number column.
- */
+ /** Whether the column is a number column. */
NUMBER_TYPE("number"),
- /**
- * The name of constant for the column name in the peer class.
- */
+ /** The name of constant for the column name in the peer class. */
PEER_COLUMN_NAME("peerColumnName"),
/**
@@ -48,25 +42,32 @@ public enum ColumnAttributeName implemen
*/
QUALIFIED_COLUMN_NAME("qualifiedColumnName"),
- /**
- * The column index, 1 based. First column 1, second column 2 etc.
- */
+ /** The column index, 1 based. First column 1, second column 2 etc. */
POSITION("position"),
- /**
- * The object (non-primitive) type for a field.
- */
+ /** The object (non-primitive) type for a field. */
FIELD_OBJECT_TYPE("fieldObjectType"),
- /**
- * The getter to get the column from a result set.
- */
+ /** The getter to get the column from a result set. */
RESULT_SET_GETTER("resultSetGetter"),
- /**
- * An instance of the object for the type map.
- */
- SAMPLE_OBJECT("sampleObject");
+ /** An instance of the object for the type map. */
+ SAMPLE_OBJECT("sampleObject"),
+
+ /** The unqualified name of the enum type of the column. */
+ ENUM_CLASS_NAME("enumClassName"),
+
+ /** The package of the enum type of the column. */
+ ENUM_PACKAGE("enumPackage"),
+
+ /** The unqualified class name of the value contained in enum type of the
column. */
+ ENUM_VALUE_CLASS_NAME("enumValueClassName"),
+
+ /** Whether to generate an enum type for the column (nb: predefined enums
can be defined which need not be generated). */
+ GENERATE_ENUM("generateEnum"),
+
+ /** Whether this column is an enum. */
+ IS_ENUM("isEnum");
/** The name of the source element attribute, not null. */
private String name;
@@ -76,7 +77,7 @@ public enum ColumnAttributeName implemen
*
* @param name the name of the source element attribute, not null.
*/
- private ColumnAttributeName(String name)
+ private ColumnAttributeName(final String name)
{
this.name = name;
}
Added:
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/EnumValueAttributeName.java
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/EnumValueAttributeName.java?rev=1631308&view=auto
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/EnumValueAttributeName.java
(added)
+++
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/EnumValueAttributeName.java
Mon Oct 13 07:55:38 2014
@@ -0,0 +1,61 @@
+package org.apache.torque.templates.transformer.om;
+
+/*
+ * 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.
+ */
+
+import org.apache.torque.generator.source.SourceAttributeName;
+
+/**
+ * Contains the attributes for a enum-value source element which are not
+ * defined in the Torque schema.
+ */
+public enum EnumValueAttributeName implements SourceAttributeName
+{
+ /** The java value of the enum Attribute. */
+ JAVA_VALUE("javaValue");
+
+ /** The name of the source element attribute, not null. */
+ private String name;
+
+ /**
+ * Constructor.
+ *
+ * @param name the name of the source element attribute, not null.
+ */
+ private EnumValueAttributeName(final String name)
+ {
+ this.name = name;
+ }
+
+ /**
+ * Returns the name of the referenced source element attribute.
+ *
+ * @return the name of the referenced source element attribute.
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ @Override
+ public String toString()
+ {
+ return name;
+ }
+}
Modified:
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMColumnTransformer.java
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMColumnTransformer.java?rev=1631308&r1=1631307&r2=1631308&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMColumnTransformer.java
(original)
+++
db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMColumnTransformer.java
Mon Oct 13 07:55:38 2014
@@ -30,6 +30,7 @@ import java.util.TimeZone;
import org.apache.commons.lang.StringUtils;
import org.apache.torque.generator.control.ControllerState;
import org.apache.torque.generator.processor.string.Camelbacker;
+import org.apache.torque.generator.processor.string.ConstantNameCreator;
import org.apache.torque.generator.processor.string.WrapReservedJavaWords;
import org.apache.torque.generator.source.SourceElement;
import org.apache.torque.generator.source.transform.SourceTransformerException;
@@ -55,6 +56,9 @@ public class OMColumnTransformer
/** The camelbacker to create the java name from the column name. */
private static Camelbacker javaNameCamelbacker = new Camelbacker();
+ /** Creates constant names from values. */
+ private static ConstantNameCreator constantNameCreator = new
ConstantNameCreator();
+
/** The transformer for inheritance elements. */
private static OMInheritanceTransformer inheritanceTransformer
= new OMInheritanceTransformer();
@@ -107,6 +111,7 @@ public class OMColumnTransformer
checkElementName(columnElement);
checkColumnNameExists(columnElement);
setJavaTypeAttribute(columnElement);
+ setJavaNameAttribute(columnElement);
columnElement.setAttribute(
ColumnAttributeName.POSITION,
@@ -119,19 +124,15 @@ public class OMColumnTransformer
columnElement.setAttribute("schemaType", schemaType);
setDomainAttributes(columnElement, controllerState);
- JavaType fieldJavaType = getFieldJavaType(columnElement, schemaType);
- columnElement.setAttribute(
- JavaFieldAttributeName.FIELD_TYPE,
- fieldJavaType.getFullClassName());
+ String enumClassName = setEnumAttributes(columnElement,
controllerState);
+ JavaType fieldJavaType = setFieldJavaType(columnElement, schemaType,
enumClassName);
JavaType fieldJavaObjectType = TypeMap.getJavaObjectType(schemaType);
columnElement.setAttribute(
ColumnAttributeName.FIELD_OBJECT_TYPE,
fieldJavaObjectType.getFullClassName());
-
setPrimitiveTypeAttribute(columnElement, fieldJavaType);
setNumberTypeAttribute(columnElement, fieldJavaType);
- setJavaNameAttribute(columnElement);
setFieldNameAttribute(columnElement);
setPeerColumnNameAttribute(columnElement);
setQualifiedColumnNameAttribute(columnElement);
@@ -150,6 +151,12 @@ public class OMColumnTransformer
inheritanceElement,
controllerState);
}
+ for (SourceElement enumValueElement : columnElement.getChildren(
+ TorqueSchemaElementName.ENUM_VALUE.getName()))
+ {
+ setEnumValueJavaNameAttribute(enumValueElement);
+ setEnumValueJavaValueAttribute(enumValueElement, fieldJavaType);
+ }
}
/**
@@ -329,12 +336,14 @@ public class OMColumnTransformer
*
* @param columnElement the column element, not null.
* @param schemaType the schema type, not null.
+ * @param enumClassName the class name of the enum, or null if the column
is not an enum.
*
* @return the java type of the column
*/
- protected JavaType getFieldJavaType(
+ protected JavaType setFieldJavaType(
final SourceElement columnElement,
- final SchemaType schemaType)
+ final SchemaType schemaType,
+ final String enumClassName)
throws SourceTransformerException
{
JavaType result;
@@ -358,6 +367,15 @@ public class OMColumnTransformer
+ " in column "
+ columnName);
}
+ if (enumClassName != null)
+ {
+ columnElement.setAttribute(JavaFieldAttributeName.FIELD_TYPE,
enumClassName);
+
columnElement.setAttribute(ColumnAttributeName.ENUM_VALUE_CLASS_NAME,
result.getFullClassName());
+ }
+ else
+ {
+ columnElement.setAttribute(JavaFieldAttributeName.FIELD_TYPE,
result.getFullClassName());
+ }
return result;
}
@@ -656,6 +674,12 @@ public class OMColumnTransformer
{
fieldDefaultValue = getDefaultValueWithoutDefaultSet(javaType);
}
+ if (!"null".equals(fieldDefaultValue)
+ && Boolean.parseBoolean((String)
columnElement.getAttribute(ColumnAttributeName.IS_ENUM)))
+ {
+ fieldDefaultValue = (String)
columnElement.getAttribute(ColumnAttributeName.ENUM_CLASS_NAME)
+ + ".getByValue(" + fieldDefaultValue + ")";
+ }
columnElement.setAttribute(
JavaFieldAttributeName.DEFAULT_VALUE,
fieldDefaultValue);
@@ -1004,4 +1028,124 @@ public class OMColumnTransformer
sampleObject);
}
+ /**
+ * Sets the enumClassName, enumPackage and generateEnum Attributes
+ * if either enumValue child elements are present or the enumName
+ * attribute is set on the column.
+ * Afterwards, the enumClassName attribute contains the unqualified name
+ * of the enum, the enumPackage attribute contains the enum package,
+ * and the generateEnum attribute contains "true" if the enum needs
+ * to be generated.
+ *
+ * This requires that the javaName attribute is set on the column
+ * and that the dbObjectPackage element is set on the table.
+ *
+ * @param columnElement the column element to set the elements in, not
null.
+ * @param controllerState the controller state, not null.
+ *
+ * @return the class name of the enum, or null if the column is not an
enum column.
+ */
+ protected String setEnumAttributes(
+ final SourceElement columnElement,
+ final ControllerState controllerState)
+ {
+ String enumClassName = (String)
columnElement.getAttribute(TorqueSchemaAttributeName.ENUM_NAME);
+ String enumPackage;
+ boolean columnIsEnum = false;
+ // whether to generate an enum class. This is not the same as
columnIsEnum because
+ // we have the case of pre-defined enums (no enum-value attributes
given).
+ boolean generateEnum = true;
+ if (enumClassName != null)
+ {
+ columnIsEnum = true;
+ int lastIndexOfDot = enumClassName.lastIndexOf('.');
+ if (lastIndexOfDot != -1)
+ {
+ enumPackage = enumClassName.substring(0, lastIndexOfDot);
+ enumClassName = enumClassName.substring(lastIndexOfDot + 1);
+ }
+ else
+ {
+ enumPackage = (String) columnElement.getParent().getAttribute(
+ TableAttributeName.DB_OBJECT_PACKAGE);
+ }
+ if (columnElement.getChild(TorqueSchemaElementName.ENUM_VALUE) ==
null)
+ {
+ generateEnum = false;
+ }
+ }
+ else
+ {
+ if (columnElement.getChild(TorqueSchemaElementName.ENUM_VALUE) ==
null)
+ {
+ generateEnum = false;
+ }
+ else
+ {
+ columnIsEnum = true;
+ }
+ enumClassName =
controllerState.getStringOption(TemplateOptionName.OM_ENUM_NAME_PREFIX)
+ +
columnElement.getAttribute(TorqueSchemaAttributeName.JAVA_NAME)
+ +
controllerState.getStringOption(TemplateOptionName.OM_ENUM_NAME_SUFFIX);
+ enumPackage = (String) columnElement.getParent().getAttribute(
+ TableAttributeName.DB_OBJECT_PACKAGE);
+ }
+ columnElement.setAttribute(
+ ColumnAttributeName.ENUM_CLASS_NAME,
+ enumClassName);
+ columnElement.setAttribute(
+ ColumnAttributeName.ENUM_PACKAGE,
+ enumPackage);
+ columnElement.setAttribute(
+ ColumnAttributeName.GENERATE_ENUM,
+ Boolean.toString(generateEnum));
+ columnElement.setAttribute(
+ ColumnAttributeName.IS_ENUM,
+ Boolean.toString(columnIsEnum));
+
+ if (columnIsEnum)
+ {
+ return enumClassName;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ protected void setEnumValueJavaNameAttribute(
+ final SourceElement enumValueElement)
+ throws SourceTransformerException
+ {
+ if (enumValueElement.getAttribute(TorqueSchemaAttributeName.JAVA_NAME)
!= null)
+ {
+ return;
+ }
+ String value = (String)
enumValueElement.getAttribute(TorqueSchemaAttributeName.VALUE);
+ if (value == null)
+ {
+ throw new SourceTransformerException("value attribute must be set
on all enum-value elements in enum column "
+ + enumValueElement.getParent());
+ }
+ String javaName = constantNameCreator.process(value);
+ enumValueElement.setAttribute(TorqueSchemaAttributeName.JAVA_NAME,
javaName);
+ }
+
+ protected void setEnumValueJavaValueAttribute(
+ final SourceElement enumValueElement,
+ final JavaType columnJavaType)
+ throws SourceTransformerException
+ {
+ if (enumValueElement.getAttribute(EnumValueAttributeName.JAVA_VALUE)
!= null)
+ {
+ return;
+ }
+ SourceElement columnElement = enumValueElement.getParent();
+ String javaValue = getDefaultValueWithDefaultSet(
+ columnJavaType,
+ (String)
enumValueElement.getAttribute(TorqueSchemaAttributeName.VALUE),
+ false,
+ columnElement);
+ enumValueElement.setAttribute(EnumValueAttributeName.JAVA_VALUE,
javaValue);
+ }
}
Modified:
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/doc/html/conf/control.xml
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/doc/html/conf/control.xml?rev=1631308&r1=1631307&r2=1631308&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/doc/html/conf/control.xml
(original)
+++
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/doc/html/conf/control.xml
Mon Oct 13 07:55:38 2014
@@ -23,14 +23,28 @@
xsi:schemaLocation="http://db.apache.org/torque/4.0/generator/configuration
http://db.apache.org/torque/4.0/generator/configuration.xsd"
xmlns="http://db.apache.org/torque/4.0/generator/configuration">
+
+ <options xsi:type="propertiesOptions"
path="../../../om/conf/options.properties"/>
<options xsi:type="propertiesOptions" path="options.properties"/>
<entityReference
+ systemId="http://db.apache.org/torque/4.0/templates/database.xsd"
+ resource="../../../xsd/database-4-0.xsd" />
+ <entityReference
+ systemId="http://db.apache.org/torque/4.0/templates/database-strict.xsd"
+ resource="../../../xsd/database-4-0-strict.xsd" />
+ <entityReference
systemId="http://db.apache.org/torque/torque-4.0/documentation/orm-reference/database-4-0.xsd"
resource="../../../xsd/database-4-0.xsd" />
<entityReference
systemId="http://db.apache.org/torque/torque-4.0/documentation/orm-reference/database-4-0-strict.xsd"
resource="../../../xsd/database-4-0-strict.xsd" />
+ <entityReference
+
systemId="http://db.apache.org/torque/torque-4.1/documentation/orm-reference/database-4-1.xsd"
+ resource="../../../xsd/database-4-1.xsd" />
+ <entityReference
+
systemId="http://db.apache.org/torque/torque-4.1/documentation/orm-reference/database-4-1-strict.xsd"
+ resource="../../../xsd/database-4-1-strict.xsd" />
<!-- Documentation css -->
<output name="css" file="datamodel.css">
Modified:
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/doc/xdoc/conf/control.xml
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/doc/xdoc/conf/control.xml?rev=1631308&r1=1631307&r2=1631308&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/doc/xdoc/conf/control.xml
(original)
+++
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/doc/xdoc/conf/control.xml
Mon Oct 13 07:55:38 2014
@@ -23,14 +23,28 @@
xsi:schemaLocation="http://db.apache.org/torque/4.0/generator/configuration
http://db.apache.org/torque/4.0/generator/configuration.xsd"
xmlns="http://db.apache.org/torque/4.0/generator/configuration">
+
+ <options xsi:type="propertiesOptions"
path="../../../om/conf/options.properties"/>
<options xsi:type="propertiesOptions" path="options.properties"/>
<entityReference
+ systemId="http://db.apache.org/torque/4.0/templates/database.xsd"
+ resource="../../../xsd/database-4-0.xsd" />
+ <entityReference
+ systemId="http://db.apache.org/torque/4.0/templates/database-strict.xsd"
+ resource="../../../xsd/database-4-0-strict.xsd" />
+ <entityReference
systemId="http://db.apache.org/torque/torque-4.0/documentation/orm-reference/database-4-0.xsd"
resource="../../../xsd/database-4-0.xsd" />
<entityReference
systemId="http://db.apache.org/torque/torque-4.0/documentation/orm-reference/database-4-0-strict.xsd"
resource="../../../xsd/database-4-0-strict.xsd" />
+ <entityReference
+
systemId="http://db.apache.org/torque/torque-4.1/documentation/orm-reference/database-4-1.xsd"
+ resource="../../../xsd/database-4-1.xsd" />
+ <entityReference
+
systemId="http://db.apache.org/torque/torque-4.1/documentation/orm-reference/database-4-1-strict.xsd"
+ resource="../../../xsd/database-4-1-strict.xsd" />
<!-- Documentation xdoc -->
<output name="torque.doc.xdoc.xdoc" file="datamodel.xml">
Modified:
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/idtable/conf/control.xml
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/idtable/conf/control.xml?rev=1631308&r1=1631307&r2=1631308&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/idtable/conf/control.xml
(original)
+++
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/idtable/conf/control.xml
Mon Oct 13 07:55:38 2014
@@ -26,11 +26,23 @@
<options xsi:type="propertiesOptions" path="options.properties"/>
<entityReference
+ systemId="http://db.apache.org/torque/4.0/templates/database.xsd"
+ resource="../../xsd/database-4-0.xsd" />
+ <entityReference
+ systemId="http://db.apache.org/torque/4.0/templates/database-strict.xsd"
+ resource="../../xsd/database-4-0-strict.xsd" />
+ <entityReference
systemId="http://db.apache.org/torque/torque-4.0/documentation/orm-reference/database-4-0.xsd"
resource="../../xsd/database-4-0.xsd" />
<entityReference
systemId="http://db.apache.org/torque/torque-4.0/documentation/orm-reference/database-4-0-strict.xsd"
resource="../../xsd/database-4-0-strict.xsd" />
+ <entityReference
+
systemId="http://db.apache.org/torque/torque-4.1/documentation/orm-reference/database-4-1.xsd"
+ resource="../../xsd/database-4-1.xsd" />
+ <entityReference
+
systemId="http://db.apache.org/torque/torque-4.1/documentation/orm-reference/database-4-1-strict.xsd"
+ resource="../../xsd/database-4-1-strict.xsd" />
<output name="torque.sql.idtable.idtable">
<filenameOutlet
Modified:
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/conf/control.xml
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/conf/control.xml?rev=1631308&r1=1631307&r2=1631308&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/conf/control.xml
(original)
+++
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/conf/control.xml
Mon Oct 13 07:55:38 2014
@@ -26,11 +26,23 @@
<options xsi:type="propertiesOptions" path="options.properties"/>
<entityReference
+ systemId="http://db.apache.org/torque/4.0/templates/database.xsd"
+ resource="../../xsd/database-4-0.xsd" />
+ <entityReference
+ systemId="http://db.apache.org/torque/4.0/templates/database-strict.xsd"
+ resource="../../xsd/database-4-0-strict.xsd" />
+ <entityReference
systemId="http://db.apache.org/torque/torque-4.0/documentation/orm-reference/database-4-0.xsd"
resource="../../xsd/database-4-0.xsd" />
<entityReference
systemId="http://db.apache.org/torque/torque-4.0/documentation/orm-reference/database-4-0-strict.xsd"
resource="../../xsd/database-4-0-strict.xsd" />
+ <entityReference
+
systemId="http://db.apache.org/torque/torque-4.1/documentation/orm-reference/database-4-1.xsd"
+ resource="../../xsd/database-4-1.xsd" />
+ <entityReference
+
systemId="http://db.apache.org/torque/torque-4.1/documentation/orm-reference/database-4-1-strict.xsd"
+ resource="../../xsd/database-4-1-strict.xsd" />
<output name="torque.om.dbObject" existingTargetStrategy="skip"
outputDirKey="modifiable">
<filenameOutlet
@@ -198,6 +210,64 @@
<postprocessor
class="org.apache.torque.generator.processor.string.RemoveUnusedImportsProcessor"
/>
</output>
+ <output name="torque.om.enum">
+ <filenameOutlet
+ xsi:type="javaOutlet"
+ class="org.apache.torque.generator.outlet.java.JavaFilenameOutlet">
+ <mergepoint name="package">
+ <action
+ xsi:type="sourceElementAttributeAction"
+ element="."
+ attribute="enumPackage"
+ acceptNotSet="false"/>
+ </mergepoint>
+ <mergepoint name="classname">
+ <action
+ xsi:type="sourceElementAttributeAction"
+ element="."
+ attribute="enumClassName"
+ acceptNotSet="false"/>
+ </mergepoint>
+ </filenameOutlet>
+ <source xsi:type="fileSource" elements="all-tables/table/column"
+
skipDecider="org.apache.torque.templates.skipdecider.EnumSkipDecider">
+ <transformer
class="org.apache.torque.templates.transformer.om.OMTransformer"/>
+ <include>*schema.xml</include>
+ <exclude>id-table-schema.xml</exclude>
+ </source>
+ <outlet name="torque.om.dbObject.enum"/>
+ <postprocessor
class="org.apache.torque.generator.processor.string.RemoveUnusedImportsProcessor"
/>
+ </output>
+
+ <output name="torque.om.enumForView">
+ <filenameOutlet
+ xsi:type="javaOutlet"
+ class="org.apache.torque.generator.outlet.java.JavaFilenameOutlet">
+ <mergepoint name="package">
+ <action
+ xsi:type="sourceElementAttributeAction"
+ element="."
+ attribute="enumPackage"
+ acceptNotSet="false"/>
+ </mergepoint>
+ <mergepoint name="classname">
+ <action
+ xsi:type="sourceElementAttributeAction"
+ element="."
+ attribute="enumClassName"
+ acceptNotSet="false"/>
+ </mergepoint>
+ </filenameOutlet>
+ <source xsi:type="fileSource" elements="all-views/view/column"
+
skipDecider="org.apache.torque.templates.skipdecider.EnumSkipDecider">
+ <transformer
class="org.apache.torque.templates.transformer.om.OMTransformer"/>
+ <include>*schema.xml</include>
+ <exclude>id-table-schema.xml</exclude>
+ </source>
+ <outlet name="torque.om.dbObject.enum"/>
+ <postprocessor
class="org.apache.torque.generator.processor.string.RemoveUnusedImportsProcessor"
/>
+ </output>
+
<output name="torque.om.interface" existingTargetStrategy="skip"
outputDirKey="modifiable">
<filenameOutlet
xsi:type="javaOutlet"
Modified:
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/conf/options.properties
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/conf/options.properties?rev=1631308&r1=1631307&r2=1631308&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/conf/options.properties
(original)
+++
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/conf/options.properties
Mon Oct 13 07:55:38 2014
@@ -288,3 +288,9 @@ torque.om.package.mapInitPackageSuffix =
# Default column type if the column type is not set for a column
torque.om.column.defaultType = VARCHAR
+
+# The prefix for the name of enum types.
+torque.om.enumNamePrefix =
+# The suffix for the name of enum types.
+torque.om.enumNameSuffix = Enum
+
Modified:
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/outlets/dbObject.xml
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/outlets/dbObject.xml?rev=1631308&r1=1631307&r2=1631308&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/outlets/dbObject.xml
(original)
+++
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/outlets/dbObject.xml
Mon Oct 13 07:55:38 2014
@@ -484,4 +484,28 @@
xsi:type="velocityOutlet"
path="dbObject/base/toString.vm">
</outlet>
+
+ <outlet name="torque.om.dbObject.enum"
+ xsi:type="velocityOutlet"
+ path="dbObject/base/enum.vm">
+ <mergepoint name="classJavadoc">
+ <action xsi:type="applyAction"
outlet="torque.om.dbObject.enumClassJavadoc"/>
+ </mergepoint>
+ <mergepoint name="values">
+ <action xsi:type="traverseAllAction"
+ element="enum-value"
+ outlet="torque.om.dbObject.enumValue"/>
+ </mergepoint>
+ <mergepoint name="extensions"/>
+ </outlet>
+
+ <outlet name="torque.om.dbObject.enumClassJavadoc"
+ xsi:type="velocityOutlet"
+ path="dbObject/base/enumClassJavadoc.vm">
+ </outlet>
+
+ <outlet name="torque.om.dbObject.enumValue"
+ xsi:type="velocityOutlet"
+ path="dbObject/base/enumValue.vm">
+ </outlet>
</outlets>
\ No newline at end of file
Added:
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/enum.vm
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/enum.vm?rev=1631308&view=auto
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/enum.vm
(added)
+++
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/enum.vm
Mon Oct 13 07:55:38 2014
@@ -0,0 +1,85 @@
+## 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.
+##
+######
+##
+## version $Id: dbObject.vm 1331196 2012-04-27 02:56:12Z tfischer $
+##
+## This template creates source code for a column enum.
+## The template expects as input a "column" element from the torque schema
+## which was processed by the OMTransformer.
+##
+package $enumPackage;
+
+$torqueGen.mergepoint("classJavadoc")##
+public enum $enumClassName
+{
+$torqueGen.mergepoint("values")##
+
+ /** The database value represented by the enum value. */
+ private ${enumValueClassName} value;
+
+ /**
+ * Constructor.
+ *
+ * @param value The database value represented by the enum value.
+ */
+ private ${enumClassName}(${enumValueClassName} value)
+ {
+ this.value = value;
+ }
+
+ /**
+ * Returns the database value represented by the enum value.
+ *
+ * @return the the database value represented by the enum value.
+ */
+ public ${enumValueClassName} getValue()
+ {
+ return value;
+ }
+
+ /**
+ * Returns the ${enumClassName} for the database value.
+ *
+ * @param arg the database value to get the ${enumClassName} for, or null.
+ *
+ * @return the ${enumClassName} represented by the database value; null
only if arg was null.
+ */
+ public static ${enumClassName} getByValue(${enumValueClassName} arg)
+ {
+#if ($primitive != "true")
+ if (arg == null)
+ {
+ return null;
+ }
+#end
+ for (${enumClassName} candidate : values())
+ {
+#if ($primitive == "true")
+ if (arg == candidate.getValue())
+#else
+ if (arg.equals(candidate.getValue()))
+#end
+ {
+ return candidate;
+ }
+ }
+ throw new IllegalArgumentException("Value " + arg + " is not defined
in enum ${enumClassName}");
+ }
+$torqueGen.mergepoint("extensions")##
+}
Added:
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/enumClassJavadoc.vm
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/enumClassJavadoc.vm?rev=1631308&view=auto
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/enumClassJavadoc.vm
(added)
+++
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/enumClassJavadoc.vm
Mon Oct 13 07:55:38 2014
@@ -0,0 +1,39 @@
+## 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.
+##
+######
+##
+## version $Id: classJavadoc.vm 1331196 2012-04-27 02:56:12Z tfischer $
+##
+## Creates the class javadoc for a column enum object.
+## This template expects as input a "column" element from the torque schema
+## which was processed by the OMTransformer.
+##
+/**
+#if ($description)
+ * $description
+ *
+#end
+ * This enum contains the possible values for the column
+ *
${torqueGen.getParent().getAttribute("name")}.${torqueGen.getSourceElement().getAttribute("name")}.
+#if ($torqueGen.booleanOption("torque.om.addTimeStamp"))
+ *
+ * This class was autogenerated by Torque on:
+ *
+ * [${torqueGen.now()}]
+#end
+ */
Added:
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/enumValue.vm
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/enumValue.vm?rev=1631308&view=auto
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/enumValue.vm
(added)
+++
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/enumValue.vm
Mon Oct 13 07:55:38 2014
@@ -0,0 +1,28 @@
+## 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.
+##
+######
+##
+## version $Id: dbObject.vm 1331196 2012-04-27 02:56:12Z tfischer $
+##
+## This template creates source code for a column enum.
+## The template expects as input a "column" element from the torque schema
+## which was processed by the OMTransformer.
+##
+ /** Represents the database value ${value}. */
+
${javaName}(${javaValue})#if(${torqueGen.getSourceElement().hasFollowingSibling()}),#else;#end
+
Modified:
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/imports.vm
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/imports.vm?rev=1631308&r1=1631307&r2=1631308&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/imports.vm
(original)
+++
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/imports.vm
Mon Oct 13 07:55:38 2014
@@ -60,16 +60,12 @@ import org.apache.torque.util.Transactio
#end
import org.apache.commons.lang.ObjectUtils;
-
-#if ($torqueGen.booleanOption("torque.om.complexObjectModel"))
-#foreach ($col in $table.Columns)
- #if ($col.isForeignKey())
- #set ( $tblFK = $table.Database.getTable($col.RelatedTableName) )
- #if ($tblFK.Interface && $tblFK.Interface.indexOf('.') != -1)
-import $tblFK.Interface;
+#foreach ($columnElement in
$torqueGen.getSourceElement().getChildren("column"))
+ #set ($colEnumPackage = $columnElement.getAttribute("enumPackage"))
+ #set ($colEnumClassName = $columnElement.getAttribute("enumClassName"))
+ #if ($columnElement.getAttribute("isEnum") == "true" && $colEnumPackage !=
$baseDbObjectPackage)
+import ${colEnumPackage}.${colEnumClassName};
#end
- #end
-#end
#end
#if ($torqueGen.booleanOption("torque.om.generateBeans"))
$torqueGen.mergepoint("objectBeanImports")
Modified:
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/buildColumnValues.vm
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/buildColumnValues.vm?rev=1631308&r1=1631307&r2=1631308&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/buildColumnValues.vm
(original)
+++
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/buildColumnValues.vm
Mon Oct 13 07:55:38 2014
@@ -50,6 +50,7 @@
#set ( $columnSchemaType = $columnElement.getAttribute("schemaType") )
#set ( $columnFieldName = $columnElement.getAttribute("field") )
#set ( $columnFieldType = $columnElement.getAttribute("fieldType") )
+ #set ( $columnIsEnum = $columnElement.getAttribute("isEnum") )
#set ( $primitive = $columnElement.getAttribute("primitive") )
#set ( $defaultValue = $columnElement.getAttribute("defaultValue") )
#set ( $useDatabaseDefaultValue =
$columnElement.getAttribute("useDatabaseDefaultValue") == "true")
@@ -105,6 +106,12 @@
columnValues.put(
${peerClassName}.$peerColumnName,
new JdbcTypedValue($columnFieldName, Types.INTEGER));
+ #elseif ($columnIsEnum == "true")
+ columnValues.put(
+ ${peerClassName}.$peerColumnName,
+ new JdbcTypedValue(
+ ${field}.${getter}().getValue(),
+ ${columnSchemaType.getJdbcType()}));
#else
columnValues.put(
${peerClassName}.$peerColumnName,
@@ -179,7 +186,13 @@
columnValues.put(
${peerClassName}.$peerColumnName,
new JdbcTypedValue($columnFieldName, Types.INTEGER));
- #else
+ #elseif ($columnIsEnum == "true")
+ columnValues.put(
+ ${peerClassName}.$peerColumnName,
+ new JdbcTypedValue(
+ ${field}.${getter}().getValue(),
+ ${columnSchemaType.getJdbcType()}));
+ #else
columnValues.put(
${peerClassName}.$peerColumnName,
new JdbcTypedValue(
Modified:
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/recordmapper/base/dbObjectFieldGetter.vm
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/recordmapper/base/dbObjectFieldGetter.vm?rev=1631308&r1=1631307&r2=1631308&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/recordmapper/base/dbObjectFieldGetter.vm
(original)
+++
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/recordmapper/base/dbObjectFieldGetter.vm
Mon Oct 13 07:55:38 2014
@@ -84,9 +84,17 @@
}
#else
#if ($primitive == "true" || $fieldType == "String")
+ #if ($isEnum == "true")
+ return
${fieldType}.getByValue(resultSet.${resultSetGetter}(columnIndex));
+ #else
return resultSet.${resultSetGetter}(columnIndex);
+ #end
#else
+ #if ($isEnum == "true")
+ ${fieldType} value =
${fieldType}.getByValue(resultSet.${resultSetGetter}(columnIndex));
+ #else
${fieldType} value = resultSet.${resultSetGetter}(columnIndex);
+ #end
if (resultSet.wasNull())
{
value = null;
Modified:
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/recordmapper/base/recordMapperBase.vm
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/recordmapper/base/recordMapperBase.vm?rev=1631308&r1=1631307&r2=1631308&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/recordmapper/base/recordMapperBase.vm
(original)
+++
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/recordmapper/base/recordMapperBase.vm
Mon Oct 13 07:55:38 2014
@@ -40,6 +40,13 @@ import org.apache.torque.TorqueException
import org.apache.torque.criteria.Criteria;
import org.apache.torque.om.mapper.RecordMapper;
+#foreach ($columnElement in
$torqueGen.getSourceElement().getChildren("column"))
+ #set ($colEnumPackage = $columnElement.getAttribute("enumPackage"))
+ #set ($colEnumClassName = $columnElement.getAttribute("enumClassName"))
+ #if ($columnElement.getAttribute("isEnum") == "true" && $colEnumPackage !=
$baseRecordMapperPackage)
+import ${colEnumPackage}.${colEnumClassName};
+ #end
+#end
#if (${baseRecordMapperPackage} != $dbObjectPackage)
import ${dbObjectPackage}.${dbObjectClassName};
#end
Modified:
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/sql/conf/control.xml
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/sql/conf/control.xml?rev=1631308&r1=1631307&r2=1631308&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/sql/conf/control.xml
(original)
+++
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/sql/conf/control.xml
Mon Oct 13 07:55:38 2014
@@ -27,11 +27,23 @@
<options xsi:type="propertiesOptions" path="options.properties"/>
<entityReference
+ systemId="http://db.apache.org/torque/4.0/templates/database.xsd"
+ resource="../../xsd/database-4-0.xsd" />
+ <entityReference
+ systemId="http://db.apache.org/torque/4.0/templates/database-strict.xsd"
+ resource="../../xsd/database-4-0-strict.xsd" />
+ <entityReference
systemId="http://db.apache.org/torque/torque-4.0/documentation/orm-reference/database-4-0.xsd"
resource="../../xsd/database-4-0.xsd" />
<entityReference
systemId="http://db.apache.org/torque/torque-4.0/documentation/orm-reference/database-4-0-strict.xsd"
resource="../../xsd/database-4-0-strict.xsd" />
+ <entityReference
+
systemId="http://db.apache.org/torque/torque-4.1/documentation/orm-reference/database-4-1.xsd"
+ resource="../../xsd/database-4-1.xsd" />
+ <entityReference
+
systemId="http://db.apache.org/torque/torque-4.1/documentation/orm-reference/database-4-1-strict.xsd"
+ resource="../../xsd/database-4-1-strict.xsd" />
<output name="torque.sql.ddl" >
<filenameOutlet
Modified:
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/sql/createdb/conf/control.xml
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/sql/createdb/conf/control.xml?rev=1631308&r1=1631307&r2=1631308&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/sql/createdb/conf/control.xml
(original)
+++
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/sql/createdb/conf/control.xml
Mon Oct 13 07:55:38 2014
@@ -27,11 +27,23 @@
<options xsi:type="propertiesOptions" path="options.properties"/>
<entityReference
+ systemId="http://db.apache.org/torque/4.0/templates/database.xsd"
+ resource="../../../xsd/database-4-0.xsd" />
+ <entityReference
+ systemId="http://db.apache.org/torque/4.0/templates/database-strict.xsd"
+ resource="../../../xsd/database-4-0-strict.xsd" />
+ <entityReference
systemId="http://db.apache.org/torque/torque-4.0/documentation/orm-reference/database-4-0.xsd"
resource="../../../xsd/database-4-0.xsd" />
<entityReference
systemId="http://db.apache.org/torque/torque-4.0/documentation/orm-reference/database-4-0-strict.xsd"
resource="../../../xsd/database-4-0-strict.xsd" />
+ <entityReference
+
systemId="http://db.apache.org/torque/torque-4.1/documentation/orm-reference/database-4-1.xsd"
+ resource="../../../xsd/database-4-1.xsd" />
+ <entityReference
+
systemId="http://db.apache.org/torque/torque-4.1/documentation/orm-reference/database-4-1-strict.xsd"
+ resource="../../../xsd/database-4-1-strict.xsd" />
<output name="torque.sql.createdb">
<filenameOutlet
Added:
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-1-strict.xsd
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-1-strict.xsd?rev=1631308&view=auto
==============================================================================
---
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-1-strict.xsd
(added)
+++
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-1-strict.xsd
Mon Oct 13 07:55:38 2014
@@ -0,0 +1,90 @@
+<?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-strict.xsd 1622915 2014-09-06 19:21:17Z 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 restricts the available characters in java names and sql names
+as compared to the standard database.xsd
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:redefine
schemaLocation="http://db.apache.org/torque/torque-4.0/documentation/orm-reference/database-4-1.xsd">
+ <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="javaNameType">
+ <xs:pattern value="[A-Za-z_$][A-Za-z_$0-9]*" />
+ </xs:restriction>
+ </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="javaQualifiedNameType">
+ <xs:pattern
+ value="([A-Za-z_$][A-Za-z_$0-9]*[.])*[A-Za-z_$][A-Za-z_$0-9]*"
/>
+ </xs:restriction>
+ </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="sqlNameType">
+ <xs:pattern value="[A-Za-z$#][A-Za-z_$#0-9]*" />
+ </xs:restriction>
+ </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="sqlQualifiedNameType">
+ <xs:pattern
value="[A-Za-z$#][A-Za-z_$#0-9]*(\.[A-Za-z$#][A-Za-z_$#0-9]*)?" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:redefine>
+
+</xs:schema>
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]