You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by tf...@apache.org on 2010/02/16 18:16:02 UTC
svn commit: r910600 [19/29] - in /db/torque/torque4/trunk:
maven-torque-gf-plugin/ maven-torque-gf-plugin/src/
maven-torque-gf-plugin/src/main/ maven-torque-gf-plugin/src/main/java/
maven-torque-gf-plugin/src/main/java/org/ maven-torque-gf-plugin/src/m...
Added: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/platform/PlatformSapdbImpl.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/platform/PlatformSapdbImpl.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/platform/PlatformSapdbImpl.java (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/platform/PlatformSapdbImpl.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,107 @@
+package org.apache.torque.templates.platform;
+
+/*
+ * 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.templates.typemapping.SqlType;
+import org.apache.torque.templates.typemapping.SchemaType;
+
+/**
+ * SAP DB Platform implementation.
+ *
+ * @author <a href="mailto:mpoeschl@marmot.at">Martin Poeschl</a>
+ * @version $Id: PlatformSapdbImpl.java 473814 2006-11-11 22:30:30 +0000 (Sat, 11 Nov 2006) tv $
+ */
+public class PlatformSapdbImpl extends PlatformDefaultImpl
+{
+ /**
+ * Default constructor.
+ */
+ public PlatformSapdbImpl()
+ {
+ super();
+ initialize();
+ }
+
+ /**
+ * Initializes db specific domain mapping.
+ */
+ private void initialize()
+ {
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.BIT,
+ new SqlType("FIXED", "1", "0"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.TINYINT,
+ new SqlType("CHAR BYTE"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.BIGINT,
+ new SqlType("FIXED", "38", "0"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.DOUBLE,
+ new SqlType("DOUBLE PRECISION"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.NUMERIC,
+ new SqlType("DECIMAL"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.LONGVARCHAR,
+ new SqlType("LONG VARCHAR"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.BINARY,
+ new SqlType("CHAR(254) BYTE"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.VARBINARY,
+ new SqlType("LONG BYTE"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.LONGVARBINARY,
+ new SqlType("LONG BYTE"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.JAVA_OBJECT,
+ new SqlType("LONG BYTE"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.BLOB,
+ new SqlType("LONG BYTE"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.CLOB,
+ new SqlType("LONG UNICODE"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.BOOLEANINT,
+ new SqlType("SMALLINT"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.BOOLEANCHAR,
+ new SqlType("CHAR"));
+ }
+
+ /**
+ * @see Platform#getNativeIdMethod()
+ */
+ public String getNativeIdMethod()
+ {
+ return Platform.SEQUENCE;
+ }
+
+ /**
+ * @see Platform#getAutoIncrement()
+ */
+ public String getAutoIncrement()
+ {
+ return "DEFAULT SERIAL";
+ }
+
+}
Added: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/platform/PlatformSybaseImpl.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/platform/PlatformSybaseImpl.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/platform/PlatformSybaseImpl.java (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/platform/PlatformSybaseImpl.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,94 @@
+package org.apache.torque.templates.platform;
+
+/*
+ * 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.templates.typemapping.SqlType;
+import org.apache.torque.templates.typemapping.SchemaType;
+
+/**
+ * Sybase Platform implementation.
+ *
+ * @author <a href="mailto:mpoeschl@marmot.at">Martin Poeschl</a>
+ * @version $Id: PlatformSybaseImpl.java 591651 2007-11-03 16:48:23Z tfischer $
+ */
+public class PlatformSybaseImpl extends PlatformDefaultImpl
+{
+ /**
+ * Default constructor.
+ */
+ public PlatformSybaseImpl()
+ {
+ super();
+ initialize();
+ }
+
+ /**
+ * Initializes db specific domain mapping.
+ */
+ private void initialize()
+ {
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.INTEGER,
+ new SqlType("INT"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.BOOLEANINT,
+ new SqlType("INT"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.DOUBLE,
+ new SqlType("FLOAT"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.LONGVARCHAR,
+ new SqlType("TEXT"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.DATE,
+ new SqlType("DATETIME"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.TIMESTAMP,
+ new SqlType("DATETIME"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.VARBINARY,
+ new SqlType("IMAGE"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.LONGVARBINARY,
+ new SqlType("IMAGE"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.BLOB,
+ new SqlType("IMAGE"));
+ setSchemaTypeToSqlTypeMapping(
+ SchemaType.CLOB,
+ new SqlType("TEXT"));
+ }
+
+ /**
+ * @see Platform#getMaxColumnNameLength()
+ */
+ public int getMaxColumnNameLength()
+ {
+ return 30;
+ }
+
+ /**
+ * @see Platform#getNullString(boolean)
+ */
+ public String getNullString(boolean notNull)
+ {
+ return (notNull ? "NOT NULL" : "NULL");
+ }
+}
Added: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/platform/package.html
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/platform/package.html?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/platform/package.html (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/platform/package.html Tue Feb 16 17:15:43 2010
@@ -0,0 +1,45 @@
+<!--
+ 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.
+-->
+<html>
+<head>
+<title>Platform package</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</head>
+
+<body bgcolor="#FFFFFF">
+This package contains classes that provide compatibility to a range of RDBM platforms.
+<p>
+The <code>Platform</code> interface provides callbacks that allow to get
+RDBMS Platform specific information whereever neccessary.
+
+<p>
+The class <code>PlatformDefaultImpl</code> implements <code>Platform</code> and
+provides default implementations of all methods.
+
+<p>
+For each supported Platform <code>Xxx</code> there is a class <code>PlatformXxxImpl</code>
+which extends <code>PlatformDefaultImpl</code> and may override the methods of the
+baseclass.
+
+<p>
+The factory class <code>PlatformFactory</code> can be used to create <code>Platform</code>
+instances.
+
+</body>
+</html>
Added: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/sourcefilter/BeanSourceFilter.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/sourcefilter/BeanSourceFilter.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/sourcefilter/BeanSourceFilter.java (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/sourcefilter/BeanSourceFilter.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,39 @@
+package org.apache.torque.templates.sourcefilter;
+
+/*
+ * 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.gf.control.ControllerState;
+import org.apache.torque.gf.source.filter.SourceFilter;
+import org.apache.torque.templates.TemplateOptionName;
+
+/**
+ * A source filter which returns true if the option
+ * "torque.om.generateBeans" is true.
+ *
+ * @version $Id: $
+ */
+public class BeanSourceFilter implements SourceFilter
+{
+ public boolean proceed(ControllerState controllerState)
+ {
+ return controllerState.getBooleanOption(
+ TemplateOptionName.GENERATE_BEANS);
+ }
+}
Added: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/sourcefilter/InterfaceSourceFilter.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/sourcefilter/InterfaceSourceFilter.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/sourcefilter/InterfaceSourceFilter.java (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/sourcefilter/InterfaceSourceFilter.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,49 @@
+package org.apache.torque.templates.sourcefilter;
+
+/*
+ * 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.gf.control.ControllerState;
+import org.apache.torque.gf.source.SourceElement;
+import org.apache.torque.gf.source.filter.SourceFilter;
+import org.apache.torque.templates.TorqueSchemaAttributeName;
+
+/**
+ * A source filter which returns true if the attribute "interface"
+ * is set on the current source element and if the name does not contain
+ * a dot.
+ *
+ * @version $Id: $
+ */
+public class InterfaceSourceFilter implements SourceFilter
+{
+ public boolean proceed(ControllerState controllerState)
+ {
+ SourceElement sourceElement = controllerState.getSourceElement();
+ String interfaceName
+ = (String) sourceElement.getAttribute(
+ TorqueSchemaAttributeName.INTERFACE.getName());
+ if (interfaceName == null)
+ {
+ return false;
+ }
+ boolean containsDot = interfaceName.indexOf('.') != -1;
+ return !containsDot;
+ }
+}
Added: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/sourcefilter/ManagerSourceFilter.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/sourcefilter/ManagerSourceFilter.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/sourcefilter/ManagerSourceFilter.java (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/sourcefilter/ManagerSourceFilter.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,46 @@
+package org.apache.torque.templates.sourcefilter;
+
+/*
+ * 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 java.util.List;
+
+import org.apache.torque.gf.control.ControllerState;
+import org.apache.torque.gf.source.SourceElement;
+import org.apache.torque.gf.source.filter.SourceFilter;
+import org.apache.torque.templates.TemplateOptionName;
+import org.apache.torque.templates.TorqueSchemaElementName;
+import org.apache.torque.templates.transformer.om.TableChildElementName;
+
+public class ManagerSourceFilter implements SourceFilter
+{
+ public boolean proceed(ControllerState controllerState)
+ {
+ if (!controllerState.getBooleanOption(
+ TemplateOptionName.OM_USE_MANAGERS))
+ {
+ return false;
+ }
+ SourceElement sourceElement = controllerState.getSourceElement();
+ List<SourceElement> primaryKeyColumns
+ = sourceElement.getChild(TableChildElementName.PRIMARY_KEYS)
+ .getChildren(TorqueSchemaElementName.COLUMN);
+ return !primaryKeyColumns.isEmpty();
+ }
+}
Added: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/sourcefilter/MapInitSourceFilter.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/sourcefilter/MapInitSourceFilter.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/sourcefilter/MapInitSourceFilter.java (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/sourcefilter/MapInitSourceFilter.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,39 @@
+package org.apache.torque.templates.sourcefilter;
+
+/*
+ * 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.gf.control.ControllerState;
+import org.apache.torque.gf.source.filter.SourceFilter;
+import org.apache.torque.templates.TemplateOptionName;
+
+/**
+ * A source filter which returns true if the option
+ * "torque.om.generateMapInit" is true.
+ *
+ * @version $Id: $
+ */
+public class MapInitSourceFilter implements SourceFilter
+{
+ public boolean proceed(ControllerState controllerState)
+ {
+ return controllerState.getBooleanOption(
+ TemplateOptionName.OM_GENERATE_MAP_INIT);
+ }
+}
Added: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/CollectAttributeSetTrueTransformer.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/CollectAttributeSetTrueTransformer.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/CollectAttributeSetTrueTransformer.java (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/CollectAttributeSetTrueTransformer.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,98 @@
+package org.apache.torque.templates.transformer;
+
+/*
+ * 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 java.util.ArrayList;
+import java.util.List;
+
+import org.apache.torque.gf.control.ControllerState;
+import org.apache.torque.gf.source.RichSourceElementImpl;
+import org.apache.torque.gf.source.SourceAttributeName;
+import org.apache.torque.gf.source.SourceElement;
+import org.apache.torque.gf.source.SourceElementName;
+
+/**
+ * Collects the children which have a certain attribute set to true
+ * in another child element.
+ *
+ * So the source elements are
+ * rootElement
+ * ${childrenToProcessName}
+ * ...
+ * ${childrenToProcessName}
+ * ...
+ * ...
+ *
+ * and the outcome is
+ *
+ * rootElement
+ * ${childrenToProcessName}
+ * ...
+ * ${childrenToProcessName}
+ * ...
+ * ...
+ * ${targetElementName}
+ * ${childrenToProcessName}
+ * ...
+ * ...
+ */
+public class CollectAttributeSetTrueTransformer
+{
+ /**
+ * Processes the transformation.
+ *
+ * @param rootElement the root of the transformation.
+ * @param controllerState the controller state, not null.
+ * @param childrenToProcessName the name of the child elements
+ * to check.
+ * @param attributeToCheckName the attribute in the child which is checked
+ * for the value "true"
+ * @param targetElementName the child element which collects the hits.
+ */
+ public void transform(
+ SourceElement rootElement,
+ ControllerState controllerState,
+ SourceElementName childrenToProcessName,
+ SourceAttributeName attributeToCheckName,
+ SourceElementName targetElementName)
+ {
+ List<SourceElement> hits
+ = new ArrayList<SourceElement>();
+ for (SourceElement column : rootElement.getChildren(
+ childrenToProcessName))
+ {
+ String attributeToCheck
+ = (String) column.getAttribute(attributeToCheckName);
+ if (Boolean.parseBoolean(attributeToCheck))
+ {
+ hits.add(column);
+ }
+ }
+
+ SourceElement targetElement
+ = new RichSourceElementImpl(targetElementName);
+ rootElement.addChild(targetElement);
+
+ for (SourceElement hit : hits)
+ {
+ targetElement.addChild(hit);
+ }
+ }
+}
Added: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/SchemaTypeHelper.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/SchemaTypeHelper.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/SchemaTypeHelper.java (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/SchemaTypeHelper.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,111 @@
+package org.apache.torque.templates.transformer;
+
+/*
+ * 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.gf.control.ControllerState;
+import org.apache.torque.gf.source.SourceElement;
+import org.apache.torque.gf.source.transform.SourceTransformerException;
+import org.apache.torque.templates.TemplateOptionName;
+import org.apache.torque.templates.TorqueSchemaAttributeName;
+import org.apache.torque.templates.platform.Platform;
+import org.apache.torque.templates.platform.PlatformFactory;
+import org.apache.torque.templates.typemapping.SchemaType;
+import org.apache.torque.templates.typemapping.SqlType;
+
+/**
+ * Helper class for retrieving the schema type of a column.
+ *
+ * $Id: $
+ */
+public class SchemaTypeHelper
+{
+ /**
+ * Determines the schema type of a column.
+ *
+ * @param columnElement the source element which defines the column
+ * for which the schema type should be determined; not null.
+ * @param controllerState the controller state, not null.
+ *
+ * @return the schema type of the column, not null.
+ *
+ * @throws SourceTransformerException if the name attribute is not set
+ * in the column or if the type refers to an unknown type.
+ */
+ public static SchemaType getSchemaType(
+ SourceElement columnElement,
+ ControllerState controllerState)
+ throws SourceTransformerException
+ {
+ String columnNameFromSchema
+ = (String) columnElement.getAttribute(
+ TorqueSchemaAttributeName.NAME);
+ if (columnNameFromSchema == null)
+ {
+ throw new SourceTransformerException("The attribute "
+ + TorqueSchemaAttributeName.NAME.getName()
+ + " on element "
+ + columnElement.getName()
+ + " is null");
+ }
+ SchemaType schemaType = null;
+ String schemaTypeString = (String) columnElement.getAttribute(
+ TorqueSchemaAttributeName.TYPE.getName());
+ // TODO: should there be a default type ? If not, throw an exception.
+ if (schemaTypeString == null)
+ {
+ schemaTypeString = controllerState.getStringOption(
+ TemplateOptionName.DEFAULT_TYPE);
+ }
+ schemaType = SchemaType.valueOf(schemaTypeString);
+ if (schemaType == null)
+ {
+ throw new SourceTransformerException("Unknown type "
+ + schemaTypeString
+ + " in Column "
+ + columnNameFromSchema);
+ }
+ return schemaType;
+ }
+
+ /**
+ * Returns the SQL type for a schema type and the specified target database.
+ *
+ * @param schemaType the schema type for which the domain should be
+ * determined, not null.
+ * @param controllerState the controller state, not null.
+ *
+ * @return the domain for the schema type, or null if no domain
+ * exists for the schema type.
+ */
+ public static SqlType getSqlType(
+ SchemaType schemaType,
+ ControllerState controllerState,
+ String size,
+ String scale,
+ String defaultValue)
+ {
+ Platform platform = PlatformFactory.getPlatformFor(
+ controllerState.getStringOption(TemplateOptionName.DATABASE));
+ SqlType platformSqlType = platform.getSqlTypeForSchemaType(schemaType);
+ SqlType result
+ = new SqlType(platformSqlType, size, scale, defaultValue);
+ return result;
+ }
+}
Added: 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=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ColumnAttributeName.java (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ColumnAttributeName.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,73 @@
+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.gf.source.SourceAttributeName;
+
+/**
+ * Contains the attributes for a column source element which are not
+ * defined in the Torque schema.
+ */
+public enum ColumnAttributeName implements SourceAttributeName
+{
+ /**
+ * Whether the column is a primitive column.
+ */
+ PRIMITIVE_TYPE("primitive"),
+
+ /**
+ * Whether the column is a number column.
+ */
+ NUMBER_TYPE("number"),
+ PEER_COLUMN_NAME("peerColumnName"),
+ QUALIFIED_COLUMN_NAME("qualifiedColumnName"),
+ POSITION("position"),
+ VILLAGE_METHOD("villageMethod"),
+ SAMPLE_OBJECT("sampleObject");
+
+ /** 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 ColumnAttributeName(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;
+ }
+}
Added: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ColumnChildElementName.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ColumnChildElementName.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ColumnChildElementName.java (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ColumnChildElementName.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,71 @@
+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.gf.source.SourceElementName;
+
+/**
+ * Contains the child elements for a column source element which are not
+ * defined in the Torque schema. These elements might be created
+ * in the transformation
+ */
+public enum ColumnChildElementName implements SourceElementName
+{
+ /**
+ * The element containing the column which is referenced by the parent
+ * column element in a foreign-key relation.
+ */
+ REFERENCED_COLUMN("referenced-column"),
+
+ /**
+ * The element containing the column which references the parent
+ * column element in a foreign-key relation.
+ */
+ REFERENCING_COLUMN("referencing-column");
+
+ /** The name of the source element, not null. */
+ private String name;
+
+ /**
+ * Constructor.
+ *
+ * @param name the name of the source element, not null.
+ */
+ private ColumnChildElementName(String name)
+ {
+ this.name = name;
+ }
+
+ /**
+ * Returns the name of the referenced source element.
+ *
+ * @return the name of the referenced source element.
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ @Override
+ public String toString()
+ {
+ return name;
+ }
+}
Added: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/DatabaseAttributeName.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/DatabaseAttributeName.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/DatabaseAttributeName.java (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/DatabaseAttributeName.java Tue Feb 16 17:15:43 2010
@@ -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.gf.source.SourceAttributeName;
+
+/**
+ * Contains the attributes for a database source element which are not
+ * defined in the Torque schema.
+ */
+public enum DatabaseAttributeName implements SourceAttributeName
+{
+ /** The name of the mapInit class to generate. */
+ MAP_INIT_CLASS_NAME("mapInitClassName");
+
+ /** 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 DatabaseAttributeName(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;
+ }
+}
Added: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/FieldHelper.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/FieldHelper.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/FieldHelper.java (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/FieldHelper.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,113 @@
+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.commons.lang.StringUtils;
+import org.apache.torque.gf.control.ControllerState;
+import org.apache.torque.templates.TemplateOptionName;
+import org.apache.torque.templates.typemapping.JavaType;
+
+/**
+ * Generates method names from field names.
+ *
+ * $Id: $
+ */
+final class FieldHelper
+{
+ /**
+ * Private constructor for utility class.
+ */
+ private FieldHelper()
+ {
+ }
+
+ /**
+ * Returns the name of the getter method for a field.
+ * "get" is used as prefix, except if the option
+ * <code>USE_IS_FOR_GETTERS_OPTION_NAME</code> is set to true and
+ * the field type is "boolean", in which case "is" is used as prefix.
+ *
+ * @param fieldName the name of the field, not null.
+ * @param fieldType the type of the field, not null.
+ * @param controllerState the current controller state, not null.
+ *
+ * @return the getter method name, not null.
+ */
+ public static String getGetterName(
+ String fieldName,
+ String fieldType,
+ ControllerState controllerState)
+ {
+ String getterName;
+ if (controllerState.getBooleanOption(
+ TemplateOptionName.OM_USE_IS_FOR_BOOLEAN_GETTERS)
+ && JavaType.BOOLEAN_PRIMITIVE.getClassName().equals(fieldType))
+ {
+ getterName = "is" + StringUtils.capitalize(fieldName);
+ }
+ else
+ {
+ getterName = "get" + StringUtils.capitalize(fieldName);
+ }
+ return getterName;
+ }
+
+ /**
+ * Returns the name of the setter method for a field.
+ * Uses "set" as prefix.
+ *
+ * @param fieldName the name of the field, not null.
+ *
+ * @return the setter method name, not null.
+ */
+ public static String getSetterName(String fieldName)
+ {
+ String setterName = "set" + StringUtils.capitalize(fieldName);
+ return setterName;
+ }
+
+ /**
+ * Returns the name of the adder method for a field.
+ * Uses "add" as prefix.
+ *
+ * @param fieldName the name of the field, not null.
+ *
+ * @return the adder method name, not null.
+ */
+ public static String getAdderName(String fieldName)
+ {
+ String setterName = "add" + StringUtils.capitalize(fieldName);
+ return setterName;
+ }
+
+ /**
+ * Returns the name of the initializer method for a field.
+ * Uses "init" as prefix and "s" as suffix.
+ *
+ * @param fieldName the name of the field, not null.
+ *
+ * @return the initializer method name, not null.
+ */
+ public static String getInitializerName(String fieldName)
+ {
+ String setterName = "init" + StringUtils.capitalize(fieldName) + "s";
+ return setterName;
+ }
+}
Added: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/FindHelper.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/FindHelper.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/FindHelper.java (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/FindHelper.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,137 @@
+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 java.util.ArrayList;
+import java.util.List;
+
+import org.apache.torque.gf.source.SourceElement;
+import org.apache.torque.templates.TorqueSchemaAttributeName;
+import org.apache.torque.templates.TorqueSchemaElementName;
+
+/**
+ * Utility class containing methods to find certain elements
+ * in the source tree.
+ *
+ * $Id: $
+ */
+final class FindHelper
+{
+ /**
+ * Private constructor for utility class.
+ */
+ private FindHelper()
+ {
+ }
+
+ /**
+ * Finds a table in the database by name.
+ *
+ * @param database the database Source element, not null.
+ * @param tableName the table name, not null.
+ *
+ * @return the column's source element, or null if no matching table
+ * exists.
+ */
+ public static SourceElement findTable(
+ SourceElement database,
+ String tableName)
+ {
+ if (!TorqueSchemaElementName.DATABASE.getName().equals(
+ database.getName()))
+ {
+ throw new IllegalArgumentException("Wrong source element "
+ + database.getName());
+ }
+ for (SourceElement table : database.getChildren(
+ TorqueSchemaElementName.TABLE))
+ {
+ if (tableName.equals(table.getAttribute(
+ TorqueSchemaAttributeName.NAME)))
+ {
+ return table;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Finds a column in a table by name.
+ *
+ * @param table the table Source element, not null.
+ * @param columnName the column name, not null.
+ *
+ * @return the column's source element, or null if no matching column
+ * exists.
+ */
+ public static SourceElement findColumn(
+ SourceElement table,
+ String columnName)
+ {
+ if (!TorqueSchemaElementName.TABLE.getName().equals(
+ table.getName()))
+ {
+ throw new IllegalArgumentException("Wrong source element "
+ + table.getName());
+ }
+ for (SourceElement column : table.getChildren(
+ TorqueSchemaElementName.COLUMN))
+ {
+ if (column.getAttribute(TorqueSchemaAttributeName.NAME)
+ .equals(columnName))
+ {
+ return column;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Finds all foreign key in one table that reference a certain other table.
+ *
+ * @param table the table containing the foreign keys to search, not null.
+ * @param tableName the name of the foreign table in the foreign Key.
+ *
+ * @return the foreign keys referencing the given table name.
+ */
+ public static List<SourceElement> findForeignKeyByReferencedTable(
+ SourceElement table,
+ String tableName)
+ {
+ List<SourceElement> result = new ArrayList<SourceElement>();
+ if (!TorqueSchemaElementName.TABLE.getName().equals(
+ table.getName()))
+ {
+ throw new IllegalArgumentException("Wrong source element "
+ + table.getName());
+ }
+ for (SourceElement foreignKey : table.getChildren(
+ TorqueSchemaElementName.FOREIGN_KEY))
+ {
+ if (foreignKey.getAttribute(
+ TorqueSchemaAttributeName.FOREIGN_TABLE)
+ .equals(tableName))
+ {
+ result.add(foreignKey);
+ }
+ }
+ return result;
+ }
+}
Added: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ForeignKeyChildAttributeName.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ForeignKeyChildAttributeName.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ForeignKeyChildAttributeName.java (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ForeignKeyChildAttributeName.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,92 @@
+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.gf.source.SourceAttributeName;
+
+/**
+ * Contains the attribute names of the child elements for a foreign-key
+ * source element which are not defined in the Torque schema.
+ * These elements might be created in the transformation.
+ */
+public enum ForeignKeyChildAttributeName implements SourceAttributeName
+{
+ /**
+ * The name of the getter method in the database object
+ * which joins the other table.
+ */
+ FOREIGN_FIELD_JOIN_GETTER("joinGetter"),
+
+ /**
+ * The name of the getter method in the database object
+ * which joins all the other tables except the referenced table.
+ * TODO: is this used at all ?
+ */
+ FOREIGN_FIELD_JOIN_ALL_EXCEPT_GETTER("joinAllExceptGetter"),
+
+ /**
+ * The name of the peer class method which joins the other table.
+ */
+ PEER_JOIN_SELECT_METHOD("peerJoinSelectMethod"),
+
+ /**
+ * The name of the peer class method which joins all the other tables
+ * except the referenced table.
+ */
+ PEER_JOIN_ALL_EXCEPT_SELECT_METHOD("peerJoinAllExceptSelectMethod"),
+
+ /**
+ * The name of the cache field for the criteria with which the last
+ * collection was accessed.
+ */
+ FOREIGN_COLUMN_CRITERIA_CACHE_FIELD("criteriaCacheField"),
+
+ BEAN_GETTER("beanGetter"),
+ BEAN_SETTER("beanSetter");
+
+ /** The name of the source element, not null. */
+ private String name;
+
+ /**
+ * Constructor.
+ *
+ * @param name the name of the source element, not null.
+ */
+ private ForeignKeyChildAttributeName(String name)
+ {
+ this.name = name;
+ }
+
+ /**
+ * Returns the name of the referenced source element.
+ *
+ * @return the name of the referenced source element.
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ @Override
+ public String toString()
+ {
+ return name;
+ }
+}
Added: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ForeignKeyChildElementName.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ForeignKeyChildElementName.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ForeignKeyChildElementName.java (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/ForeignKeyChildElementName.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,83 @@
+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.gf.source.SourceElementName;
+
+/**
+ * Contains the child elements for a foreign-key source element which are not
+ * defined in the Torque schema. These elements might be created
+ * in the transformation.
+ */
+public enum ForeignKeyChildElementName implements SourceElementName
+{
+ /**
+ * The child element containing information about the field in the local
+ * database object containing the referenced foreign database object.
+ */
+ LOCAL_FIELD("local-field"),
+
+ /**
+ * The child element containing information about the field in the foreign
+ * database object containing the referenced local database object.
+ */
+ FOREIGN_FIELD("foreign-field"),
+
+ /**
+ * The child element containing information about the field in the local
+ * bean containing the referenced foreign bean.
+ */
+ LOCAL_FIELD_IN_BEAN("local-field-in-bean"),
+
+ /**
+ * The child element containing information about the field in the foreign
+ * bean containing the referenced local beans.
+ */
+ FOREIGN_FIELD_IN_BEAN("foreign-field-in-bean");
+
+ /** The name of the source element, not null. */
+ private String name;
+
+ /**
+ * Constructor.
+ *
+ * @param name the name of the source element, not null.
+ */
+ private ForeignKeyChildElementName(String name)
+ {
+ this.name = name;
+ }
+
+ /**
+ * Returns the name of the referenced source element.
+ *
+ * @return the name of the referenced source element.
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ @Override
+ public String toString()
+ {
+ return name;
+ }
+}
Added: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/JavaFieldAttributeName.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/JavaFieldAttributeName.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/JavaFieldAttributeName.java (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/JavaFieldAttributeName.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,149 @@
+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.gf.source.SourceAttributeName;
+
+/**
+ * Defines the standard attributes for a source element representing
+ * a java field (i.e instance variable of a class).
+ */
+public enum JavaFieldAttributeName implements SourceAttributeName
+{
+ /**
+ * The name of the field
+ **/
+ FIELD_NAME("field"),
+
+ /**
+ * The type of the field
+ */
+ FIELD_TYPE("fieldType"),
+
+ /**
+ * The access modifier (e.g. "public" ...) for the field.
+ * Default is "private"
+ **/
+ FIELD_ACCESS_MODIFIER("fieldAccessModifier"),
+
+ /**
+ * In case the field is a collection:
+ * The type of the objects contained in the collection.
+ */
+ FIELD_CONTAINED_TYPE("fieldContainedType"),
+
+ /**
+ * The method name of the getter for the field.
+ */
+ SETTER_NAME("setter"),
+
+ /**
+ * The method name of the setter for the field.
+ */
+ GETTER_NAME("getter"),
+
+ /**
+ * In case the field must be initialized on first access,
+ * this contains the name of the init method.
+ */
+ INITIALIZER_NAME("initializer"),
+
+ /**
+ * In case the type cannot be instantiated (e.g. is an interface like List),
+ * this provides the type of the object the field is initialized with.
+ */
+ INITIALIZER_TYPE("initializerType"),
+
+ /**
+ * In case the field is a collection:
+ * The name of the method used to add one object to the collection.
+ */
+ ADDER_NAME("adder"),
+
+ /**
+ * The access modifier (e.g. "public" ...) for the getter method
+ **/
+ GETTER_ACCESS_MODIFIER("getterAccessModifer"),
+
+ /**
+ * The access modifier (e.g. "public" ...) for the setter method
+ **/
+ SETTER_ACCESS_MODIFIER("setterAccessModifer"),
+
+ /**
+ * The throws clause (excluding "throws " itself) for the getter method.
+ **/
+ GETTER_THROWS("getterThrows"),
+
+ /**
+ * The throws clause (excluding "throws " itself) for the setter method.
+ **/
+ SETTER_THROWS("setterThrows"),
+
+ /**
+ * The throws clause (excluding "throws " itself) for the initializer method.
+ **/
+ INITIALIZER_THROWS("initializerThrows"),
+
+ /**
+ * The throws clause (excluding "throws " itself) for the adder method.
+ **/
+ ADDER_THROWS("adderThrows"),
+
+ /**
+ * The default value for the field.
+ * This is the value the field is initialized with.
+ */
+ DEFAULT_VALUE("defaultValue"),
+
+ /**
+ * The description of the field.
+ */
+ DESCRIPTION("description");
+
+ /** 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 JavaFieldAttributeName(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;
+ }
+}
Added: 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=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMColumnTransformer.java (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMColumnTransformer.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,637 @@
+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.commons.lang.StringUtils;
+import org.apache.torque.gf.control.ControllerState;
+import org.apache.torque.gf.processor.string.Camelbacker;
+import org.apache.torque.gf.source.SourceElement;
+import org.apache.torque.gf.source.transform.SourceTransformerException;
+import org.apache.torque.templates.TorqueSchemaAttributeName;
+import org.apache.torque.templates.TorqueSchemaElementName;
+import org.apache.torque.templates.TorqueSchemaJavaType;
+import org.apache.torque.templates.transformer.SchemaTypeHelper;
+import org.apache.torque.templates.typemapping.JavaType;
+import org.apache.torque.templates.typemapping.SchemaType;
+import org.apache.torque.templates.typemapping.TypeMap;
+import org.apache.torque.templates.typemapping.VillageMethod;
+
+/**
+ * Sets the class names and packages for the OM model.
+ */
+public class OMColumnTransformer
+{
+ private static Camelbacker camelbacker = new Camelbacker();
+
+ private static OMInheritanceTransformer inheritanceTransformer
+ = new OMInheritanceTransformer();
+
+ public void transform(
+ SourceElement columnElement,
+ ControllerState controllerState,
+ int columnPosition)
+ throws SourceTransformerException
+ {
+ checkElementName(columnElement);
+ checkColumnNameExists(columnElement);
+
+ columnElement.setAttribute(
+ ColumnAttributeName.POSITION,
+ columnPosition);
+ setAttributeDefaultValues(columnElement);
+
+ SchemaType schemaType = SchemaTypeHelper.getSchemaType(
+ columnElement,
+ controllerState);
+
+ JavaType fieldJavaType = getFieldJavaType(columnElement, schemaType);
+ columnElement.setAttribute(
+ JavaFieldAttributeName.FIELD_TYPE,
+ fieldJavaType.getFullClassName());
+
+
+ setPrimitiveTypeAttribute(columnElement, fieldJavaType);
+ setNumberTypeAttribute(columnElement, fieldJavaType);
+ setJavaNameAttribute(columnElement);
+ setFieldNameAttribute(columnElement);
+ setPeerColumnNameAttribute(columnElement);
+ setQualifiedColumnNameAttribute(columnElement);
+ setGetterNameAttribute(columnElement, fieldJavaType, controllerState);
+ setSetterNameAttribute(columnElement);
+ setAccessModifierAttributes(columnElement);
+ setDefaultValueAttribute(columnElement, fieldJavaType);
+ setVillageMethodAttribute(columnElement, fieldJavaType, schemaType);
+ setSampleObjectAttribute(columnElement, schemaType);
+
+ for (SourceElement inheritanceElement : columnElement.getChildren(
+ TorqueSchemaElementName.INHERITANCE.getName()))
+ {
+ inheritanceTransformer.transform(
+ inheritanceElement,
+ controllerState);
+ }
+ }
+
+ /**
+ * Sets default values for attributes of the column element
+ * if the attribute is not set.
+ * The following attributes are checked:
+ * autoIncrement, protected, inheritance, required, primaryKey
+ *
+ * @param columnElement the column element, not null.
+ */
+ private void setAttributeDefaultValues(SourceElement columnElement)
+ {
+ // set autoincrement attribute
+ // TODO: remove once the autoincrement attribute is removed
+ // from the Torque schema.
+ if (columnElement.getAttribute(
+ TorqueSchemaAttributeName.AUTO_INCREMENT)
+ == null)
+ {
+ columnElement.setAttribute(
+ TorqueSchemaAttributeName.AUTO_INCREMENT,
+ Boolean.FALSE.toString());
+ }
+
+ // set autoincrement attribute
+ if (columnElement.getAttribute(
+ TorqueSchemaAttributeName.PROTECTED)
+ == null)
+ {
+ columnElement.setAttribute(
+ TorqueSchemaAttributeName.PROTECTED,
+ Boolean.FALSE.toString());
+ }
+
+ // set inheritance attribute
+ if (columnElement.getAttribute(
+ TorqueSchemaAttributeName.INHERITANCE)
+ == null)
+ {
+ columnElement.setAttribute(
+ TorqueSchemaAttributeName.INHERITANCE,
+ Boolean.FALSE.toString());
+ }
+
+ Object required = columnElement.getAttribute(
+ TorqueSchemaAttributeName.REQUIRED);
+ if (required == null)
+ {
+ columnElement.setAttribute(
+ TorqueSchemaAttributeName.REQUIRED,
+ Boolean.FALSE.toString());
+ }
+
+ Object primaryKey = columnElement.getAttribute(
+ TorqueSchemaAttributeName.PRIMARY_KEY);
+ if (primaryKey == null)
+ {
+ columnElement.setAttribute(
+ TorqueSchemaAttributeName.PRIMARY_KEY,
+ Boolean.FALSE.toString());
+ }
+ }
+
+ /**
+ * Sets the attributes getterAccessModifer and setterAccessModifer
+ * on the column element.
+ *
+ * @param columnElement the column element, not null.
+ */
+ private void setAccessModifierAttributes(SourceElement columnElement)
+ {
+ boolean isProtected = "true".equals(
+ columnElement.getAttribute(
+ TorqueSchemaAttributeName.PROTECTED));
+
+ String accessModifier;
+ if (isProtected)
+ {
+ accessModifier = "protected";
+ }
+ else
+ {
+ accessModifier = "public";
+ }
+ columnElement.setAttribute(
+ JavaFieldAttributeName.GETTER_ACCESS_MODIFIER,
+ accessModifier);
+ columnElement.setAttribute(
+ JavaFieldAttributeName.SETTER_ACCESS_MODIFIER,
+ accessModifier);
+ }
+
+
+ /**
+ * Returns the java type of the field representing a database column.
+ *
+ * @param columnElement the column element, not null.
+ * @param schemaType the schema type, not null.
+ *
+ * @return the java type of the column
+ */
+ protected JavaType getFieldJavaType(
+ SourceElement columnElement,
+ SchemaType schemaType)
+ throws SourceTransformerException
+ {
+ JavaType result;
+ String javaType = (String) columnElement.getAttribute(
+ TorqueSchemaAttributeName.JAVA_TYPE);
+ if (TorqueSchemaJavaType.OBJECT.getValue().equals(javaType))
+ {
+ result = TypeMap.getJavaObjectType(schemaType);
+ }
+ else if (TorqueSchemaJavaType.PRIMITIVE.getValue().equals(javaType)
+ || javaType == null)
+ {
+ result = TypeMap.getJavaPrimitiveType(schemaType);
+ }
+ else
+ {
+ String columnName = (String) columnElement.getAttribute(
+ TorqueSchemaAttributeName.NAME);
+ throw new SourceTransformerException("Unknown javaType "
+ + javaType
+ + " in column "
+ + columnName);
+ }
+ return result;
+ }
+
+ /**
+ * Checks that the name of the column element is correct.
+ *
+ * @param columnElement the column element, not null.
+ *
+ * @throws IllegalArgumentException if the element name is wrong.
+ */
+ protected void checkElementName(SourceElement columnElement)
+ {
+ if (!TorqueSchemaElementName.COLUMN.getName().equals(
+ columnElement.getName()))
+ {
+ throw new IllegalArgumentException("Illegal element Name "
+ + columnElement.getName());
+ }
+ }
+
+ /**
+ * Checks that the name attribute exists on the column element.
+ *
+ * @param columnElement the column element, not null.
+ *
+ * @throws SourceTransformerException if the name attribute does not exist.
+ */
+ protected void checkColumnNameExists(SourceElement columnElement)
+ throws SourceTransformerException
+ {
+ String columnName
+ = (String) columnElement.getAttribute(
+ TorqueSchemaAttributeName.NAME);
+ if (columnName == null)
+ {
+ throw new SourceTransformerException("The attribute "
+ + TorqueSchemaAttributeName.NAME.getName()
+ + " on element "
+ + columnElement.getName()
+ + " is null");
+ }
+ }
+
+ /**
+ * Sets the javaName attribute of the column element if it is not
+ * already set.
+ *
+ * @param columnElement the column element, not null.
+ */
+ protected void setJavaNameAttribute(SourceElement columnElement)
+ {
+ if (columnElement.getAttribute(TorqueSchemaAttributeName.JAVA_NAME)
+ != null)
+ {
+ return;
+ }
+ String columnName = (String) columnElement.getAttribute(
+ TorqueSchemaAttributeName.NAME);
+ String javaName = camelbacker.process(columnName);
+ columnElement.setAttribute(
+ TorqueSchemaAttributeName.JAVA_NAME,
+ javaName);
+ }
+
+ /**
+ * Sets the fieldName attribute of the column element if it is not
+ * already set.
+ * The javaName attribute of the column must be set.
+ *
+ * @param columnElement the column element, not null.
+ */
+ protected void setFieldNameAttribute(SourceElement columnElement)
+ {
+ if (columnElement.getAttribute(JavaFieldAttributeName.FIELD_NAME)
+ != null)
+ {
+ return;
+ }
+ String javaName = (String) columnElement.getAttribute(
+ TorqueSchemaAttributeName.JAVA_NAME);
+ String fieldName = StringUtils.uncapitalize(javaName);
+ columnElement.setAttribute(
+ JavaFieldAttributeName.FIELD_NAME,
+ fieldName);
+ }
+
+ /**
+ * Sets the peerColumnName attribute of the column element if it is not
+ * already set.
+ *
+ * @param columnElement the column element, not null.
+ */
+ protected void setPeerColumnNameAttribute(SourceElement columnElement)
+ {
+ if (columnElement.getAttribute(ColumnAttributeName.PEER_COLUMN_NAME)
+ != null)
+ {
+ return;
+ }
+ String columnName = (String) columnElement.getAttribute(
+ TorqueSchemaAttributeName.NAME);
+ String peerColumnName = columnName.toUpperCase();
+ columnElement.setAttribute(
+ ColumnAttributeName.PEER_COLUMN_NAME,
+ peerColumnName);
+ }
+
+ /**
+ * Sets the qualifiedColumnName attribute of the column element
+ * if it is not already set.
+ *
+ * @param columnElement the column element, not null.
+ */
+ protected void setQualifiedColumnNameAttribute(SourceElement columnElement)
+ {
+ if (columnElement.getAttribute(ColumnAttributeName.QUALIFIED_COLUMN_NAME)
+ != null)
+ {
+ return;
+ }
+ String tableName = (String) columnElement.getParent().getAttribute(
+ TorqueSchemaAttributeName.NAME);
+ String columnName = (String) columnElement.getAttribute(
+ TorqueSchemaAttributeName.NAME);
+ String qualifiedColumnName
+ = tableName + "." + columnName;
+ columnElement.setAttribute(
+ ColumnAttributeName.QUALIFIED_COLUMN_NAME,
+ qualifiedColumnName);
+ }
+
+ /**
+ * Sets the getterName attribute of the column element
+ * if it is not already set.
+ * The fieldName attribute of the column element must already be set.
+ *
+ * @param columnElement the column element, not null.
+ * @param javaType the java type of the column, not null.
+ * @param controllerState the controller state, not null.
+ */
+ protected void setGetterNameAttribute(
+ SourceElement columnElement,
+ JavaType javaType,
+ ControllerState controllerState)
+ {
+ if (columnElement.getAttribute(JavaFieldAttributeName.GETTER_NAME)
+ != null)
+ {
+ return;
+ }
+ String fieldName = (String) columnElement.getAttribute(
+ JavaFieldAttributeName.FIELD_NAME);
+ String getterName = FieldHelper.getGetterName(
+ fieldName,
+ javaType.getFullClassName(),
+ controllerState);
+ columnElement.setAttribute(
+ JavaFieldAttributeName.GETTER_NAME,
+ getterName);
+ }
+
+ /**
+ * Sets the setterName attribute of the column element
+ * if it is not already set.
+ * The fieldName attribute of the column element must already be set.
+ *
+ * @param columnElement the column element, not null.
+ */
+ protected void setSetterNameAttribute(SourceElement columnElement)
+ {
+ if (columnElement.getAttribute(JavaFieldAttributeName.SETTER_NAME)
+ != null)
+ {
+ return;
+ }
+ String fieldName = (String) columnElement.getAttribute(
+ JavaFieldAttributeName.FIELD_NAME);
+ String setterName = FieldHelper.getSetterName(fieldName);
+ columnElement.setAttribute(
+ JavaFieldAttributeName.SETTER_NAME,
+ setterName);
+ }
+
+ /**
+ * Sets the primitiveType attribute of the column element
+ * if it is not already set.
+ *
+ * @param columnElement the column element, not null.
+ * @param javaType the type of the java field corresponding to the
+ * column, not null.
+ */
+ protected void setPrimitiveTypeAttribute(
+ SourceElement columnElement,
+ JavaType javaType)
+ {
+ if (columnElement.getAttribute(ColumnAttributeName.PRIMITIVE_TYPE)
+ != null)
+ {
+ return;
+ }
+ boolean primitiveFieldType = javaType.isPrimitive();
+ columnElement.setAttribute(
+ ColumnAttributeName.PRIMITIVE_TYPE,
+ Boolean.toString(primitiveFieldType));
+ }
+
+ /**
+ * Sets the numberType attribute of the column element
+ * if it is not already set.
+ *
+ * @param columnElement the column element, not null.
+ * @param javaType the type of the java field corresponding to the
+ * column, not null.
+ */
+ protected void setNumberTypeAttribute(
+ SourceElement columnElement,
+ JavaType javaType)
+ {
+ if (columnElement.getAttribute(ColumnAttributeName.NUMBER_TYPE)
+ != null)
+ {
+ return;
+ }
+ boolean numberFieldType = javaType.isNumber();
+ columnElement.setAttribute(
+ ColumnAttributeName.NUMBER_TYPE,
+ Boolean.toString(numberFieldType));
+ }
+
+
+ /**
+ * Sets the defaultValue attribute of the column element
+ * if it is not already set.
+ *
+ * @param columnElement the column element, not null.
+ * @param javaType the type of the java field corresponding to the
+ * column, not null.
+ *
+ * @throws SourceTransformerException if an unknown primitive type
+ * is encountered
+ */
+ protected void setDefaultValueAttribute(
+ SourceElement columnElement,
+ JavaType javaType)
+ throws SourceTransformerException
+ {
+ if (columnElement.getAttribute(JavaFieldAttributeName.DEFAULT_VALUE)
+ != null)
+ {
+ return;
+ }
+ String defaultValue = (String) columnElement.getAttribute(
+ TorqueSchemaAttributeName.DEFAULT.getName());
+ boolean primitiveFieldType = javaType.isPrimitive();
+
+ String fieldDefaultValue;
+ if (defaultValue != null)
+ {
+ if (JavaType.BOOLEAN_PRIMITIVE == javaType)
+ {
+ if ("Y".equals(defaultValue)
+ || "1".equals(defaultValue)
+ || "true".equalsIgnoreCase(defaultValue))
+ {
+ fieldDefaultValue = "true";
+ }
+ else
+ {
+ fieldDefaultValue = "false";
+ }
+ }
+ else if (JavaType.BOOLEAN_OBJECT == javaType)
+ {
+ if ("Y".equals(defaultValue)
+ || "1".equals(defaultValue)
+ || "true".equalsIgnoreCase(defaultValue))
+ {
+ fieldDefaultValue = "Boolean.TRUE";
+ }
+ else
+ {
+ fieldDefaultValue = "Boolean.FALSE";
+ }
+ }
+ else if (JavaType.STRING == javaType)
+ {
+ fieldDefaultValue = "\"" + defaultValue + "\"";
+ }
+ else if (JavaType.SHORT_OBJECT == javaType)
+ {
+ // The following is better than casting with (short)
+ // because a range check is performed,
+ fieldDefaultValue = "new Short(\"" + defaultValue + "\")";
+ }
+ else if (JavaType.BYTE_OBJECT == javaType)
+ {
+ // The following is better than casting with (byte)
+ // because a range check is performed,
+ fieldDefaultValue = "new Byte(\"" + defaultValue + "\")";
+ }
+ else if (primitiveFieldType)
+ {
+ fieldDefaultValue = defaultValue;
+ }
+ else
+ {
+ fieldDefaultValue
+ = "new " + javaType.getFullClassName()
+ + "(" + defaultValue + ")";
+ }
+ }
+ else
+ {
+ if (primitiveFieldType)
+ {
+ if (JavaType.BOOLEAN_PRIMITIVE == javaType)
+ {
+ fieldDefaultValue = "false";
+ }
+ else if (JavaType.BYTE_PRIMITIVE == javaType)
+ {
+ fieldDefaultValue = "(byte) 0";
+ }
+ else if (JavaType.SHORT_PRIMITIVE == javaType)
+ {
+ fieldDefaultValue = "(short) 0";
+ }
+ else if (JavaType.INTEGER_PRIMITIVE == javaType)
+ {
+ fieldDefaultValue = "0";
+ }
+ else if (JavaType.LONG_PRIMITIVE == javaType)
+ {
+ fieldDefaultValue = "0L";
+ }
+ else if (JavaType.FLOAT_PRIMITIVE == javaType)
+ {
+ fieldDefaultValue = "0";
+ }
+ else if (JavaType.DOUBLE_PRIMITIVE == javaType)
+ {
+ fieldDefaultValue = "0";
+ }
+ else if (JavaType.CHAR_PRIMITIVE == javaType)
+ {
+ fieldDefaultValue = "'\0'";
+ }
+ else
+ {
+ throw new SourceTransformerException(
+ "unknown primitive type" + javaType);
+ }
+ }
+ else
+ {
+ fieldDefaultValue = "null";
+ }
+ }
+ columnElement.setAttribute(
+ JavaFieldAttributeName.DEFAULT_VALUE,
+ fieldDefaultValue);
+ }
+
+ /**
+ * Sets the villageMethod attribute of the column element
+ * if it is not already set.
+ *
+ * @param columnElement the column element, not null.
+ * @param javaType the type of the java field corresponding to the
+ * column, not null.
+ * @param schemaType the schema type of the column, not null.
+ */
+ protected void setVillageMethodAttribute(
+ SourceElement columnElement,
+ JavaType javaType,
+ SchemaType schemaType)
+ {
+ if (columnElement.getAttribute(ColumnAttributeName.VILLAGE_METHOD)
+ != null)
+ {
+ return;
+ }
+ VillageMethod villageMethod;
+ if (javaType.isPrimitive())
+ {
+ villageMethod = TypeMap.getVillageMethod(schemaType);
+ }
+ else
+ {
+ villageMethod = TypeMap.getVillageObjectMethod(schemaType);
+ }
+ columnElement.setAttribute(
+ ColumnAttributeName.VILLAGE_METHOD,
+ villageMethod);
+ }
+
+
+ /**
+ * Sets the sampleObject attribute of the column element
+ * if it is not already set.
+ *
+ * @param columnElement the column element, not null.
+ * @param schemaType the schema type of the column, not null.
+ */
+ protected void setSampleObjectAttribute(
+ SourceElement columnElement,
+ SchemaType schemaType)
+ {
+ if (columnElement.getAttribute(ColumnAttributeName.SAMPLE_OBJECT)
+ != null)
+ {
+ return;
+ }
+
+ String sampleObject = TypeMap.getJavaObject(schemaType);
+ columnElement.setAttribute(
+ ColumnAttributeName.SAMPLE_OBJECT,
+ sampleObject);
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org