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 2012/03/25 23:44:52 UTC

svn commit: r1305157 - in /db/torque/torque4/trunk/torque-templates/src: main/java/org/apache/torque/templates/ main/java/org/apache/torque/templates/transformer/om/ main/java/org/apache/torque/templates/transformer/om/mapInit/ main/resources/org/apach...

Author: tfischer
Date: Sun Mar 25 21:44:51 2012
New Revision: 1305157

URL: http://svn.apache.org/viewvc?rev=1305157&view=rev
Log:
TORQUE-175: Implement generation of objects for views.
The multiplicity of tables in the schema was set to 0..unbounded because a schema can in principle only contain views.

Added:
    db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMTableAndViewTransformer.java
      - copied, changed from r1296047, db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMTableTransformer.java
    db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/baseDbObjectForView.vm
    db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/base/basePeerForView.vm
    db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/basePeerForViewImpl.vm
Removed:
    db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMTableTransformer.java
Modified:
    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/DatabaseChildElementName.java
    db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/LoadExternalSchemaTransformer.java
    db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMTransformer.java
    db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/mapInit/DatabaseMapInitTableTransformer.java
    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/outlets/dbObject.xml
    db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/outlets/peer.xml
    db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-0-strict.xsd
    db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-0.xsd
    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/TorqueSchemaElementName.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/TorqueSchemaElementName.java?rev=1305157&r1=1305156&r2=1305157&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 Sun Mar 25 21:44:51 2012
@@ -34,6 +34,8 @@ public enum TorqueSchemaElementName impl
     EXTERNAL_SCHEMA("external-schema"),
     /** element table. */
     TABLE("table"),
+    /** element view. */
+    VIEW("view"),
     /** element column. */
     COLUMN("column"),
     /** element foreign-key. */

Modified: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/DatabaseChildElementName.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/DatabaseChildElementName.java?rev=1305157&r1=1305156&r2=1305157&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/DatabaseChildElementName.java (original)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/DatabaseChildElementName.java Sun Mar 25 21:44:51 2012
@@ -32,7 +32,13 @@ public enum DatabaseChildElementName imp
      * The element containing all known tables including those
      * loaded from an external schema.
      */
-    ALL_TABLES("all-tables");
+    ALL_TABLES("all-tables"),
+
+    /**
+     * The element containing all known views including those
+     * loaded from an external schema.
+     */
+    ALL_VIEWS("all-views");
 
     /** The name of the source element, not null. */
     private String name;

Modified: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/LoadExternalSchemaTransformer.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/LoadExternalSchemaTransformer.java?rev=1305157&r1=1305156&r2=1305157&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/LoadExternalSchemaTransformer.java (original)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/LoadExternalSchemaTransformer.java Sun Mar 25 21:44:51 2012
@@ -97,6 +97,13 @@ public class LoadExternalSchemaTransform
             allTables = new SourceElement(DatabaseChildElementName.ALL_TABLES);
             root.getChildren().add(allTables);
         }
+        SourceElement allViews = root.getChild(
+                DatabaseChildElementName.ALL_VIEWS);
+        if (allViews == null)
+        {
+            allViews = new SourceElement(DatabaseChildElementName.ALL_VIEWS);
+            root.getChildren().add(allViews);
+        }
 
         String rootDatabaseName = (String) root.getAttribute(
                 DatabaseAttributeName.ROOT_DATABASE_NAME);
@@ -149,6 +156,13 @@ public class LoadExternalSchemaTransform
                 {
                     allTables.getChildren().add(externalTable);
                 }
+                // fill root's all-views with all external views
+                for (SourceElement externalView
+                        : externalAllTables.getChildren(
+                            TorqueSchemaElementName.VIEW))
+                {
+                    allViews.getChildren().add(externalView);
+                }
             }
             catch (SourceException e)
             {
@@ -164,6 +178,12 @@ public class LoadExternalSchemaTransform
         {
             allTables.getChildren().add(table);
         }
+        // add own views to root's all-views
+        for (SourceElement view
+                : root.getChildren(TorqueSchemaElementName.VIEW))
+        {
+            allViews.getChildren().add(view);
+        }
         return root;
     }
 }

Copied: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMTableAndViewTransformer.java (from r1296047, db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMTableTransformer.java)
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMTableAndViewTransformer.java?p2=db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMTableAndViewTransformer.java&p1=db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMTableTransformer.java&r1=1296047&r2=1305157&rev=1305157&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMTableTransformer.java (original)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMTableAndViewTransformer.java Sun Mar 25 21:44:51 2012
@@ -37,9 +37,9 @@ import org.apache.torque.templates.Torqu
 import org.apache.torque.templates.transformer.CollectAttributeSetTrueTransformer;
 
 /**
- * Transforms the tables in the OM model.
+ * Transforms the tables and views in the OM model.
  */
-public class OMTableTransformer extends AttributeTransformer
+public class OMTableAndViewTransformer extends AttributeTransformer
 {
     /** The transformer for the column child elements. */
     private static OMColumnTransformer columnTransformer
@@ -61,10 +61,10 @@ public class OMTableTransformer extends 
     private static WrapReservedJavaWords reservedJavaWordsWrapper
             = new WrapReservedJavaWords();
 
-    public OMTableTransformer() throws SourceTransformerException
+    public OMTableAndViewTransformer() throws SourceTransformerException
     {
         super(new InputStreamReader(
-                OMTableTransformer.class.getResourceAsStream(
+                OMTableAndViewTransformer.class.getResourceAsStream(
                         "OMTableTransformer.properties")));
     }
 
@@ -125,7 +125,9 @@ public class OMTableTransformer extends 
     private void checkElementName(SourceElement tableElement)
     {
         if (!TorqueSchemaElementName.TABLE.getName().equals(
-                tableElement.getName()))
+                tableElement.getName())
+            && !TorqueSchemaElementName.VIEW.getName().equals(
+                    tableElement.getName()))
         {
             throw new IllegalArgumentException("Illegal element Name "
                     + tableElement.getName());

Modified: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMTransformer.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMTransformer.java?rev=1305157&r1=1305156&r2=1305157&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMTransformer.java (original)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/OMTransformer.java Sun Mar 25 21:44:51 2012
@@ -19,6 +19,9 @@ package org.apache.torque.templates.tran
  * under the License.
  */
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.torque.generator.control.ControllerState;
 import org.apache.torque.generator.source.SourceElement;
 import org.apache.torque.generator.source.transform.SourceTransformer;
@@ -64,12 +67,12 @@ public class OMTransformer implements So
         = new OMForeignKeyTransformer();
 
     /**
-     * The transformer which adds transforms the table and column elements
+     * The transformer which adds transforms the table/view and column elements
      * of the schema.
      *
-     * @see OMTableTransformer
+     * @see OMTableAndViewTransformer
      */
-    private static final OMTableTransformer tableTransformer;
+    private static final OMTableAndViewTransformer tableOrViewTransformer;
 
     /**
      * The transformer which loads the external schemata.
@@ -83,7 +86,7 @@ public class OMTransformer implements So
     {
         try
         {
-            tableTransformer = new OMTableTransformer();
+            tableOrViewTransformer = new OMTableAndViewTransformer();
         }
         catch (SourceTransformerException e)
         {
@@ -114,28 +117,33 @@ public class OMTransformer implements So
         // load referenced external schemata
         loadExternalSchemaTransformer.transform(root, controllerState);
 
-        SourceElement allTablesRoot
-                = root.getChild(DatabaseChildElementName.ALL_TABLES);
-        for (SourceElement tableElement : allTablesRoot.getChildren(
-                TorqueSchemaElementName.TABLE))
+        List<SourceElement> allTablesAndViews = new ArrayList<SourceElement>();
+        allTablesAndViews.addAll(
+                root.getChild(DatabaseChildElementName.ALL_TABLES)
+                    .getChildren(TorqueSchemaElementName.TABLE));
+        allTablesAndViews.addAll(
+                root.getChild(DatabaseChildElementName.ALL_VIEWS)
+                    .getChildren(TorqueSchemaElementName.VIEW));
+
+        for (SourceElement tableOrViewElement : allTablesAndViews)
         {
-            tableTransformer.transform(
-                    tableElement,
+            tableOrViewTransformer.transform(
+                    tableOrViewElement,
                     controllerState);
         }
 
-        for (SourceElement tableElement : allTablesRoot.getChildren(
-                TorqueSchemaElementName.TABLE))
+        for (SourceElement tableOrViewElement : allTablesAndViews)
         {
-            for (SourceElement columnElement : tableElement.getChildren(
+            for (SourceElement columnElement : tableOrViewElement.getChildren(
                     TorqueSchemaElementName.COLUMN))
             {
                 foreignKeyColumnTransformer.transform(
                         columnElement,
                         controllerState);
             }
-            for (SourceElement foreignKeyElement : tableElement.getChildren(
-                    TorqueSchemaElementName.FOREIGN_KEY))
+            for (SourceElement foreignKeyElement
+                    : tableOrViewElement.getChildren(
+                        TorqueSchemaElementName.FOREIGN_KEY))
             {
                 foreignKeyTransformer.transform(
                         foreignKeyElement,
@@ -143,11 +151,11 @@ public class OMTransformer implements So
             }
         }
 
-        for (SourceElement tableElement : allTablesRoot.getChildren(
-                TorqueSchemaElementName.TABLE))
+        for (SourceElement tableOrViewElement : allTablesAndViews)
         {
-            for (SourceElement foreignKeyElement : tableElement.getChildren(
-                    TorqueSchemaElementName.FOREIGN_KEY))
+            for (SourceElement foreignKeyElement
+                    : tableOrViewElement.getChildren(
+                        TorqueSchemaElementName.FOREIGN_KEY))
             {
                 foreignKeyTransformer.transformSecondPass(
                         foreignKeyElement,

Modified: db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/mapInit/DatabaseMapInitTableTransformer.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/mapInit/DatabaseMapInitTableTransformer.java?rev=1305157&r1=1305156&r2=1305157&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/mapInit/DatabaseMapInitTableTransformer.java (original)
+++ db/torque/torque4/trunk/torque-templates/src/main/java/org/apache/torque/templates/transformer/om/mapInit/DatabaseMapInitTableTransformer.java Sun Mar 25 21:44:51 2012
@@ -26,7 +26,7 @@ import org.apache.torque.generator.sourc
 import org.apache.torque.generator.source.transform.AttributeTransformer;
 import org.apache.torque.generator.source.transform.SourceTransformerException;
 import org.apache.torque.templates.TorqueSchemaElementName;
-import org.apache.torque.templates.transformer.om.OMTableTransformer;
+import org.apache.torque.templates.transformer.om.OMTableAndViewTransformer;
 
 /**
  * A transformer which sets attributes for the table elements
@@ -60,7 +60,7 @@ public class DatabaseMapInitTableTransfo
             throw new IllegalArgumentException("Illegal element Name "
                     + rootElement.getName());
         }
-        OMTableTransformer.setJavaNameAttribute(rootElement);
+        OMTableAndViewTransformer.setJavaNameAttribute(rootElement);
         super.transform(rootElement, controllerState);
         return rootElement;
     }

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=1305157&r1=1305156&r2=1305157&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 Sun Mar 25 21:44:51 2012
@@ -59,6 +59,33 @@
     <outlet name="torque.om.dbObject"/>
   </output>
 
+  <output name="torque.om.dbObjectForView" existingTargetStrategy="skip" outputDirKey="modifiable">
+    <filenameOutlet
+        xsi:type="javaOutlet"
+        class="org.apache.torque.generator.outlet.java.JavaFilenameOutlet">
+      <mergepoint name="package">
+        <action
+           xsi:type="sourceElementAttributeAction"
+           element="."
+           attribute="dbObjectPackage"
+           acceptNotSet="false"/>
+      </mergepoint>
+      <mergepoint name="classname">
+        <action 
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="dbObjectClassName"
+            acceptNotSet="false"/>
+      </mergepoint>
+    </filenameOutlet>
+    <source xsi:type="fileSource" elements="database/all-views/view">
+      <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"/>
+  </output>
+
   <output name="torque.om.baseDbObject">
     <filenameOutlet
         xsi:type="javaOutlet"
@@ -85,6 +112,32 @@
     <outlet name="torque.om.baseDbObject"/>
   </output>
   
+  <output name="torque.om.baseDbObjectForView">
+    <filenameOutlet
+        xsi:type="javaOutlet"
+        class="org.apache.torque.generator.outlet.java.JavaFilenameOutlet">
+      <mergepoint name="package">
+        <action 
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="baseDbObjectPackage"
+            acceptNotSet="false"/>
+      </mergepoint>
+      <mergepoint name="classname">
+        <action xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="baseDbObjectClassName"
+            acceptNotSet="false"/>
+      </mergepoint>
+    </filenameOutlet>
+    <source xsi:type="fileSource" elements="database/all-views/view">
+      <transformer class="org.apache.torque.templates.transformer.om.OMTransformer"/>
+      <include>*schema.xml</include>
+      <exclude>id-table-schema.xml</exclude>
+    </source>
+    <outlet name="torque.om.baseDbObjectForView"/>
+  </output>
+  
   <output name="torque.om.inheritanceDbObject" existingTargetStrategy="skip" outputDirKey="modifiable">
     <filenameOutlet
         xsi:type="javaOutlet"
@@ -112,6 +165,33 @@
     <outlet name="torque.om.inheritanceDbObject"/>
   </output>
   
+  <output name="torque.om.inheritanceDbObjectForView" existingTargetStrategy="skip" outputDirKey="modifiable">
+    <filenameOutlet
+        xsi:type="javaOutlet"
+        class="org.apache.torque.generator.outlet.java.JavaFilenameOutlet">
+      <mergepoint name="package">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="package"
+            acceptNotSet="false"/>
+      </mergepoint>
+      <mergepoint name="classname">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="className"
+            acceptNotSet="false"/>
+      </mergepoint>
+    </filenameOutlet>
+    <source xsi:type="fileSource" elements="database/all-views/view/column/inheritance">
+      <transformer class="org.apache.torque.templates.transformer.om.OMTransformer"/>
+      <include>*schema.xml</include>
+      <exclude>id-table-schema.xml</exclude>
+    </source>
+    <outlet name="torque.om.inheritanceDbObject"/>
+  </output>
+  
   <output name="torque.om.interface" existingTargetStrategy="skip" outputDirKey="modifiable">
     <filenameOutlet
         xsi:type="javaOutlet"
@@ -167,6 +247,33 @@
     <outlet name="torque.om.peer"/>
   </output>
 
+  <output name="torque.om.peerForView" existingTargetStrategy="skip" outputDirKey="modifiable">
+    <filenameOutlet
+        xsi:type="javaOutlet"
+        class="org.apache.torque.generator.outlet.java.JavaFilenameOutlet">
+      <mergepoint name="package">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="peerPackage"
+            acceptNotSet="false"/>
+      </mergepoint>
+      <mergepoint name="classname">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="peerClassName"
+            acceptNotSet="false"/>
+      </mergepoint>
+    </filenameOutlet>
+    <source xsi:type="fileSource" elements="database/all-views/view">
+      <transformer class="org.apache.torque.templates.transformer.om.OMTransformer"/>
+      <include>*schema.xml</include>
+      <exclude>id-table-schema.xml</exclude>
+    </source>
+    <outlet name="torque.om.peer"/>
+  </output>
+
   <output name="torque.om.peer.impl" existingTargetStrategy="skip" outputDirKey="modifiable">
     <filenameOutlet
         xsi:type="javaOutlet"
@@ -194,6 +301,33 @@
     <outlet name="torque.om.peer.impl"/>
   </output>
 
+  <output name="torque.om.peerForView.impl" existingTargetStrategy="skip" outputDirKey="modifiable">
+    <filenameOutlet
+        xsi:type="javaOutlet"
+        class="org.apache.torque.generator.outlet.java.JavaFilenameOutlet">
+      <mergepoint name="package">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="peerPackage"
+            acceptNotSet="false"/>
+      </mergepoint>
+      <mergepoint name="classname">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="peerImplClassName"
+            acceptNotSet="false"/>
+      </mergepoint>
+    </filenameOutlet>
+    <source xsi:type="fileSource" elements="database/all-views/view">
+      <transformer class="org.apache.torque.templates.transformer.om.OMTransformer"/>
+      <include>*schema.xml</include>
+      <exclude>id-table-schema.xml</exclude>
+    </source>
+    <outlet name="torque.om.peer.impl"/>
+  </output>
+
   <output name="torque.om.basePeer">
     <filenameOutlet
         xsi:type="javaOutlet"
@@ -221,6 +355,33 @@
     <outlet name="torque.om.basePeer"/>
   </output>
 
+  <output name="torque.om.basePeerForView">
+    <filenameOutlet
+        xsi:type="javaOutlet"
+        class="org.apache.torque.generator.outlet.java.JavaFilenameOutlet">
+      <mergepoint name="package">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="basePeerPackage"
+            acceptNotSet="false"/>
+      </mergepoint>
+      <mergepoint name="classname">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="basePeerClassName"
+            acceptNotSet="false"/>
+      </mergepoint>
+    </filenameOutlet>
+    <source xsi:type="fileSource" elements="database/all-views/view">
+      <transformer class="org.apache.torque.templates.transformer.om.OMTransformer"/>
+      <include>*schema.xml</include>
+      <exclude>id-table-schema.xml</exclude>
+    </source>
+    <outlet name="torque.om.basePeerForView"/>
+  </output>
+
   <output name="torque.om.basePeer.impl">
     <filenameOutlet
         xsi:type="javaOutlet"
@@ -248,6 +409,33 @@
     <outlet name="torque.om.basePeer.impl"/>
   </output>
 
+  <output name="torque.om.basePeerForView.impl">
+    <filenameOutlet
+        xsi:type="javaOutlet"
+        class="org.apache.torque.generator.outlet.java.JavaFilenameOutlet">
+      <mergepoint name="package">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="basePeerPackage"
+            acceptNotSet="false"/>
+      </mergepoint>
+      <mergepoint name="classname">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="basePeerImplClassName"
+            acceptNotSet="false"/>
+      </mergepoint>
+    </filenameOutlet>
+    <source xsi:type="fileSource" elements="database/all-views/view">
+      <transformer class="org.apache.torque.templates.transformer.om.OMTransformer"/>
+      <include>*schema.xml</include>
+      <exclude>id-table-schema.xml</exclude>
+    </source>
+    <outlet name="torque.om.basePeerForView.impl"/>
+  </output>
+
   <output name="torque.om.mapBuilder">
     <filenameOutlet
         xsi:type="javaOutlet"
@@ -275,6 +463,33 @@
     <outlet name="torque.om.mapBuilder"/>
   </output>
 
+  <output name="torque.om.mapBuilderForView">
+    <filenameOutlet
+        xsi:type="javaOutlet"
+        class="org.apache.torque.generator.outlet.java.JavaFilenameOutlet">
+      <mergepoint name="package">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="mapBuilderPackage"
+            acceptNotSet="false"/>
+      </mergepoint>
+      <mergepoint name="classname">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="mapBuilderClassName"
+            acceptNotSet="false"/>
+      </mergepoint>
+    </filenameOutlet>
+    <source xsi:type="fileSource" elements="database/all-views/view">
+      <transformer class="org.apache.torque.templates.transformer.om.OMTransformer"/>
+      <include>*schema.xml</include>
+      <exclude>id-table-schema.xml</exclude>
+    </source>
+    <outlet name="torque.om.mapBuilder"/>
+  </output>
+
   <output name="torque.om.recordMapper" existingTargetStrategy="skip" outputDirKey="modifiable">
     <filenameOutlet
         xsi:type="javaOutlet"
@@ -302,6 +517,33 @@
     <outlet name="torque.om.recordmapper.recordMapper"/>
   </output>
 
+  <output name="torque.om.recordMapperForView" existingTargetStrategy="skip" outputDirKey="modifiable">
+    <filenameOutlet
+        xsi:type="javaOutlet"
+        class="org.apache.torque.generator.outlet.java.JavaFilenameOutlet">
+      <mergepoint name="package">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="recordMapperPackage"
+            acceptNotSet="false"/>
+      </mergepoint>
+      <mergepoint name="classname">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="recordMapperClassName"
+            acceptNotSet="false"/>
+      </mergepoint>
+    </filenameOutlet>
+    <source xsi:type="fileSource" elements="database/all-views/view">
+      <transformer class="org.apache.torque.templates.transformer.om.OMTransformer"/>
+      <include>*schema.xml</include>
+      <exclude>id-table-schema.xml</exclude>
+    </source>
+    <outlet name="torque.om.recordmapper.recordMapper"/>
+  </output>
+
   <output name="torque.om.baseRecordMapper">
     <filenameOutlet
         xsi:type="javaOutlet"
@@ -329,6 +571,33 @@
     <outlet name="torque.om.recordmapper.base.recordMapperBase"/>
   </output>
 
+  <output name="torque.om.baseRecordMapperForView">
+    <filenameOutlet
+        xsi:type="javaOutlet"
+        class="org.apache.torque.generator.outlet.java.JavaFilenameOutlet">
+      <mergepoint name="package">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="baseRecordMapperPackage"
+            acceptNotSet="false"/>
+      </mergepoint>
+      <mergepoint name="classname">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="baseRecordMapperClassName"
+            acceptNotSet="false"/>
+      </mergepoint>
+    </filenameOutlet>
+    <source xsi:type="fileSource" elements="database/all-views/view">
+      <transformer class="org.apache.torque.templates.transformer.om.OMTransformer"/>
+      <include>*schema.xml</include>
+      <exclude>id-table-schema.xml</exclude>
+    </source>
+    <outlet name="torque.om.recordmapper.base.recordMapperBase"/>
+  </output>
+
   <output name="torque.om.bean" existingTargetStrategy="skip" outputDirKey="modifiable">
     <filenameOutlet
         xsi:type="javaOutlet"
@@ -357,6 +626,34 @@
     <outlet name="torque.om.bean.bean"/>
   </output>
 
+  <output name="torque.om.beanForView" existingTargetStrategy="skip" outputDirKey="modifiable">
+    <filenameOutlet
+        xsi:type="javaOutlet"
+        class="org.apache.torque.generator.outlet.java.JavaFilenameOutlet">
+      <mergepoint name="package">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="beanPackage"
+            acceptNotSet="false"/>
+      </mergepoint>
+      <mergepoint name="classname">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="beanClassName"
+            acceptNotSet="false"/>
+      </mergepoint>
+    </filenameOutlet>
+    <source xsi:type="fileSource" elements="database/all-views/view"
+        skipDecider="org.apache.torque.templates.skipdecider.BeanSkipDecider">
+      <transformer class="org.apache.torque.templates.transformer.om.OMTransformer"/>
+      <include>*schema.xml</include>
+      <exclude>id-table-schema.xml</exclude>
+    </source>
+    <outlet name="torque.om.bean.bean"/>
+  </output>
+
   <output name="torque.om.baseBean">
     <filenameOutlet
         xsi:type="javaOutlet"
@@ -385,6 +682,34 @@
     <outlet name="torque.om.bean.baseBean"/>
   </output>
   
+  <output name="torque.om.baseBeanForView">
+    <filenameOutlet
+        xsi:type="javaOutlet"
+        class="org.apache.torque.generator.outlet.java.JavaFilenameOutlet">
+      <mergepoint name="package">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="baseBeanPackage"
+            acceptNotSet="false"/>
+      </mergepoint>
+      <mergepoint name="classname">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="baseBeanClassName"
+            acceptNotSet="false"/>
+      </mergepoint>
+    </filenameOutlet>
+    <source xsi:type="fileSource" elements="database/all-views/view"
+        skipDecider="org.apache.torque.templates.skipdecider.BeanSkipDecider">
+      <transformer class="org.apache.torque.templates.transformer.om.OMTransformer"/>
+      <include>*schema.xml</include>
+      <exclude>id-table-schema.xml</exclude>
+    </source>
+    <outlet name="torque.om.bean.baseBean"/>
+  </output>
+  
   <output name="torque.om.inheritanceBean" existingTargetStrategy="skip" outputDirKey="modifiable">
     <filenameOutlet
         xsi:type="javaOutlet"
@@ -413,6 +738,34 @@
     <outlet name="torque.om.inheritanceBean"/>
   </output>
   
+  <output name="torque.om.inheritanceBeanForView" existingTargetStrategy="skip" outputDirKey="modifiable">
+    <filenameOutlet
+        xsi:type="javaOutlet"
+        class="org.apache.torque.generator.outlet.java.JavaFilenameOutlet">
+      <mergepoint name="package">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="beanPackage"
+            acceptNotSet="false"/>
+      </mergepoint>
+      <mergepoint name="classname">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="beanClassName"
+            acceptNotSet="false"/>
+      </mergepoint>
+    </filenameOutlet>
+    <source xsi:type="fileSource" elements="database/all-views/view/column/inheritance"
+        skipDecider="org.apache.torque.templates.skipdecider.BeanSkipDecider">
+      <transformer class="org.apache.torque.templates.transformer.om.OMTransformer"/>
+      <include>*schema.xml</include>
+      <exclude>id-table-schema.xml</exclude>
+    </source>
+    <outlet name="torque.om.inheritanceBean"/>
+  </output>
+  
   <output name="torque.om.mapInit" existingTargetStrategy="skip" outputDirKey="modifiable">
     <filenameOutlet
         xsi:type="javaOutlet"
@@ -496,6 +849,34 @@
     <outlet name="torque.om.manager.manager"/>
   </output>
 
+  <output name="torque.om.managerForView" existingTargetStrategy="skip" outputDirKey="modifiable">
+    <filenameOutlet
+        xsi:type="javaOutlet"
+        class="org.apache.torque.generator.outlet.java.JavaFilenameOutlet">
+      <mergepoint name="package">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="managerPackage"
+            acceptNotSet="false"/>
+      </mergepoint>
+      <mergepoint name="classname">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="managerClassName"
+            acceptNotSet="false"/>
+      </mergepoint>
+    </filenameOutlet>
+    <source xsi:type="fileSource" elements="database/all-views/view" 
+        skipDecider="org.apache.torque.templates.skipdecider.ManagerSkipDecider">
+      <transformer class="org.apache.torque.templates.transformer.om.OMTransformer"/>
+      <include>*schema.xml</include>
+      <exclude>id-table-schema.xml</exclude>
+    </source>
+    <outlet name="torque.om.manager.manager"/>
+  </output>
+
   <!-- Base Manager class -->
   <output name="torque.om.baseManager">
     <filenameOutlet
@@ -524,5 +905,33 @@
     </source>
     <outlet name="torque.om.manager.baseManager"/>
   </output>
+
+  <output name="torque.om.baseManagerForView">
+    <filenameOutlet
+        xsi:type="javaOutlet"
+        class="org.apache.torque.generator.outlet.java.JavaFilenameOutlet">
+      <mergepoint name="package">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="baseManagerPackage"
+            acceptNotSet="false"/>
+      </mergepoint>
+      <mergepoint name="classname">
+        <action
+            xsi:type="sourceElementAttributeAction"
+            element="."
+            attribute="baseManagerClassName"
+            acceptNotSet="false"/>
+      </mergepoint>
+    </filenameOutlet>
+    <source xsi:type="fileSource" elements="database/all-views/view"
+        skipDecider="org.apache.torque.templates.skipdecider.ManagerSkipDecider">
+      <transformer class="org.apache.torque.templates.transformer.om.OMTransformer"/>
+      <include>*schema.xml</include>
+      <exclude>id-table-schema.xml</exclude>
+    </source>
+    <outlet name="torque.om.manager.baseManager"/>
+  </output>
 </control>
   
\ No newline at end of file

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=1305157&r1=1305156&r2=1305157&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 Sun Mar 25 21:44:51 2012
@@ -149,6 +149,80 @@
     <mergepoint name="extensions"/>
   </outlet>
 
+  <outlet name="torque.om.baseDbObjectForView"
+      xsi:type="velocityOutlet"
+      path="dbObject/base/baseDbObjectForView.vm">
+    <mergepoint name="imports" /><!-- extension -->
+    <mergepoint name="objectBeanImports">
+      <action xsi:type="applyAction" outlet="torque.om.dbObject.base.objectBeanImports"/>
+    </mergepoint>
+    <mergepoint name="classJavadoc">
+      <action xsi:type="applyAction" outlet="torque.om.dbObject.base.classJavadoc"/>
+    </mergepoint>
+    <mergepoint name="serialVersionUid">
+      <action xsi:type="applyAction" outlet="torque.om.serialVersionUid"/>
+    </mergepoint>
+    <mergepoint name="fieldDefinitions">
+      <action xsi:type="traverseAllAction"
+          element="column"
+          outlet="torque.om.fieldDefinition"/>
+    </mergepoint>
+    <mergepoint name="newModifiedFields">
+      <action xsi:type="applyAction"
+          outlet="torque.om.dbObject.base.newModifiedFields"/>
+    </mergepoint>
+    <mergepoint name="loadingField">
+      <action xsi:type="applyAction"
+          outlet="torque.om.dbObject.base.loadingField"/>
+    </mergepoint>
+    <mergepoint name="gettersSetters">
+      <action xsi:type="traverseAllAction"
+          element="column"
+          outlet="torque.om.getterSetter"/>
+    </mergepoint>
+    <mergepoint name="newModifiedMethods">
+      <action xsi:type="applyAction"
+          outlet="torque.om.dbObject.base.newModifiedMethods"/>
+    </mergepoint>
+    <mergepoint name="loadingMethods">
+      <action xsi:type="applyAction"
+          outlet="torque.om.dbObject.base.loadingMethods"/>
+    </mergepoint>
+    <mergepoint name="getByNameMethods">
+      <action xsi:type="applyAction"
+          outlet="torque.om.dbObject.base.getByNameMethods"/>
+    </mergepoint>
+    <mergepoint name="primaryKeyMethods">
+      <action xsi:type="applyAction"
+          outlet="torque.om.dbObject.base.primaryKeyMethods"/>
+    </mergepoint>
+     <mergepoint name="copyMethods">
+      <action xsi:type="applyAction"
+          outlet="torque.om.dbObject.base.copyMethods"/>
+    </mergepoint>
+    <mergepoint name="peerGetter">
+      <action xsi:type="applyAction"
+          outlet="torque.om.dbObject.base.peerGetter"/>
+    </mergepoint>
+    <mergepoint name="tableMapGetter">
+      <action xsi:type="applyAction"
+          outlet="torque.om.dbObject.base.tableMapGetter"/>
+    </mergepoint>
+    <mergepoint name="objectBeanMethods">
+      <action xsi:type="applyAction"
+          outlet="torque.om.dbObject.base.objectBeanMethods"/>
+    </mergepoint>
+    <mergepoint name="equalsHashCode">
+      <action xsi:type="applyAction"
+          outlet="torque.om.dbObject.base.equalsHashCode"/>
+    </mergepoint>
+    <mergepoint name="toString">
+      <action xsi:type="applyAction"
+          outlet="torque.om.dbObject.base.toString"/>
+    </mergepoint>
+    <mergepoint name="extensions"/>
+  </outlet>
+
   <outlet name="torque.om.dbObject.base.objectBeanImports"
       xsi:type="velocityOutlet"
       path="dbObject/base/bean/objectBeanImports.vm">

Modified: db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/outlets/peer.xml
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/outlets/peer.xml?rev=1305157&r1=1305156&r2=1305157&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/outlets/peer.xml (original)
+++ db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/outlets/peer.xml Sun Mar 25 21:44:51 2012
@@ -143,6 +143,57 @@
     <mergepoint name="extensions" />
   </outlet>
 
+  <outlet name="torque.om.basePeerForView.impl"
+      xsi:type="velocityOutlet"
+      path="peer/impl/base/basePeerForViewImpl.vm">
+    <mergepoint name="imports">
+      <action xsi:type="applyAction" outlet="torque.om.peer.impl.base.imports"/>
+    </mergepoint>
+    <mergepoint name="classJavadoc">
+      <action xsi:type="applyAction" outlet="torque.om.peer.impl.base.classJavadoc"/>
+    </mergepoint>
+    <mergepoint name="log">
+      <action xsi:type="applyAction" outlet="torque.om.peer.impl.base.log"/>
+    </mergepoint>
+    <mergepoint name="serialVersionUid">
+      <action xsi:type="applyAction" outlet="torque.om.serialVersionUid"/>
+    </mergepoint>
+    <mergepoint name="resultSet2Objects">
+      <action xsi:type="applyAction" outlet="torque.om.peer.impl.base.resultSet2Objects"/>
+    </mergepoint>
+    <mergepoint name="addSelectColumns">
+      <action xsi:type="applyAction" outlet="torque.om.peer.impl.base.addSelectColumns"/>
+    </mergepoint>
+    <mergepoint name="correctBooleans">
+      <action xsi:type="applyAction" outlet="torque.om.peer.impl.base.correctBooleans"/>
+    </mergepoint>
+    <mergepoint name="doSelect">
+      <action xsi:type="applyAction" outlet="torque.om.peer.impl.base.doSelect"/>
+    </mergepoint>
+    <mergepoint name="getDbObjectInstance">
+      <action xsi:type="applyAction" outlet="torque.om.peer.impl.base.getDbObjectInstance"/>
+    </mergepoint>
+    <mergepoint name="buildCriteria">
+      <action xsi:type="applyAction" outlet="torque.om.peer.impl.base.buildCriteria"/>
+    </mergepoint>
+    <mergepoint name="buildSelectCriteria">
+      <action xsi:type="applyAction" outlet="torque.om.peer.impl.base.buildSelectCriteria"/>
+    </mergepoint>
+    <mergepoint name="retrieveByPK">
+      <action xsi:type="applyAction" outlet="torque.om.peer.impl.base.retrieveByPK"/>
+    </mergepoint>
+    <mergepoint name="retrieveByPKs">
+      <action xsi:type="applyAction" outlet="torque.om.peer.impl.base.retrieveByPKs"/>
+    </mergepoint>
+    <mergepoint name="getTableMap">
+      <action xsi:type="applyAction" outlet="torque.om.peer.impl.base.getTableMap"/>
+    </mergepoint>
+    <mergepoint name="setDbName">
+      <action xsi:type="applyAction" outlet="torque.om.peer.impl.base.setDbName"/>
+    </mergepoint>
+    <mergepoint name="extensions" />
+  </outlet>
+
   <outlet name="torque.om.peer.impl.base.imports"
       xsi:type="velocityOutlet"
       path="peer/impl/base/imports.vm">
@@ -372,6 +423,83 @@
     <mergepoint name="extensions" />
   </outlet>
 
+  <outlet name="torque.om.basePeerForView"
+      xsi:type="velocityOutlet"
+      path="peer/base/basePeerForView.vm">
+    <mergepoint name="imports">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.imports"/>
+    </mergepoint>
+    <mergepoint name="classJavadoc">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.classJavadoc"/>
+    </mergepoint>
+    <mergepoint name="log">
+      <action xsi:type="applyAction" outlet="torque.om.peer.impl.base.log"/>
+    </mergepoint>
+    <mergepoint name="serialVersionUid">
+      <action xsi:type="applyAction" outlet="torque.om.serialVersionUid"/>
+    </mergepoint>
+    <mergepoint name="tableDatabaseNameConstants">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.tableDatabaseNameConstants"/>
+    </mergepoint>
+    <mergepoint name="columnConstants">
+      <action xsi:type="traverseAllAction"
+          element="column"
+          outlet="torque.om.peer.base.columnConstant"/>
+    </mergepoint>
+    <mergepoint name="peerImplField">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.peerImplField"/>
+    </mergepoint>
+    <mergepoint name="staticInit">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.staticInit"/>
+    </mergepoint>
+    <mergepoint name="peerImplCreator">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.peerImplCreator"/>
+    </mergepoint>
+    <mergepoint name="peerImplGetter">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.peerImplGetter"/>
+    </mergepoint>
+    <mergepoint name="peerImplSetter">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.peerImplSetter"/>
+    </mergepoint>
+    <mergepoint name="numColumnConstant">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.numColumnConstant"/>
+    </mergepoint>
+    <mergepoint name="inheritanceClasskeyConstants">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.inheritanceClasskeyConstants"/>
+    </mergepoint>
+    <mergepoint name="resultSet2Objects">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.resultSet2Objects"/>
+    </mergepoint>
+    <mergepoint name="addSelectColumns">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.addSelectColumns"/>
+    </mergepoint>
+    <mergepoint name="correctBooleans">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.correctBooleans"/>
+    </mergepoint>
+    <mergepoint name="doSelect">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.doSelect"/>
+    </mergepoint>
+    <mergepoint name="getDbObjectInstance">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.getDbObjectInstance"/>
+    </mergepoint>
+    <mergepoint name="buildCriteria">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.buildCriteria"/>
+    </mergepoint>
+    <mergepoint name="buildSelectCriteria">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.buildSelectCriteria"/>
+    </mergepoint>
+    <mergepoint name="retrieveByPK">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.retrieveByPK"/>
+    </mergepoint>
+    <mergepoint name="retrieveByPKs">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.retrieveByPKs"/>
+    </mergepoint>
+    <mergepoint name="getTableMap">
+      <action xsi:type="applyAction" outlet="torque.om.peer.base.getTableMap"/>
+    </mergepoint>
+    <mergepoint name="extensions" />
+  </outlet>
+
   <outlet name="torque.om.peer.base.imports"
       xsi:type="velocityOutlet"
       path="peer/base/imports.vm">

Added: db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/baseDbObjectForView.vm
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/baseDbObjectForView.vm?rev=1305157&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/baseDbObjectForView.vm (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/dbObject/base/baseDbObjectForView.vm Sun Mar 25 21:44:51 2012
@@ -0,0 +1,130 @@
+## 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: MultiExtendBean.vm 240328 2005-08-26 22:02:48 +0200 (Fr, 26 Aug 2005) tfischer $
+##
+## This template creates source code for a base Database object.
+## The generated code contains the table-specific functionality of a database 
+## object. 
+## The template expects as input a "table" element from the torque schema
+## which was processed by the OMTransformer.  
+##
+package $baseDbObjectPackage;
+
+import java.io.Serializable;
+import java.sql.Connection;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+#if ($torqueGen.booleanOption("torque.addIntakeRetrievable"))
+import $torqueGen.option("torque.retrievableInterface");
+#end
+#if (!$torqueGen.booleanOption("torque.om.complexObjectModel"))
+import org.apache.torque.Torque;
+#end
+import org.apache.torque.TorqueException;
+import org.apache.torque.map.TableMap;
+import org.apache.torque.om.ComboKey;
+import org.apache.torque.om.DateKey;
+import org.apache.torque.om.NumberKey;
+import org.apache.torque.om.ObjectKey;
+import org.apache.torque.om.SimpleKey;
+import org.apache.torque.om.StringKey;
+import org.apache.torque.om.BooleanKey;
+#if ($addSaveMethods == true && $saveMethodsInDbObjects == "true")
+import org.apache.torque.om.Persistent;
+#end
+#if ($torqueGen.booleanOption("torque.om.addGetByNameMethods"))
+import org.apache.torque.om.ColumnAccessByName;
+#end##
+import $torqueGen.option("torque.om.criteriaClass");
+#if ($addSaveMethods == true && $saveMethodsInDbObjects == "true")
+import org.apache.torque.util.Transaction;
+#end
+import org.apache.commons.lang.ObjectUtils;
+
+
+#if ($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;
+  #end
+ #end
+#end
+#end
+$torqueGen.mergepoint("imports")##
+#if ($torqueGen.booleanOption("torque.om.generateBeans"))
+$torqueGen.mergepoint("objectBeanImports")
+#end
+#if ($peerPackage != $dbObjectPackage)
+import ${peerPackage}.${peerClassName};
+#end
+$torqueGen.mergepoint("classJavadoc")
+#if ($baseClass == "")
+  #set ($extendsBaseClass = "" )
+#else
+  #set ($extendsBaseClass = "extends $baseClass" )
+#end
+public abstract class $baseDbObjectClassName $extendsBaseClass
+    implements ##
+#if ($torqueGen.booleanOption("torque.om.save.addSaveMethodsInDbObjects"))
+Persistent, ##
+#end
+Serializable##
+#if ($torqueGen.booleanOption("torque.om.addIntakeRetrievable")), $torqueGen.option("torque.om.retrievableInterface")#end##
+#if ($torqueGen.booleanOption("torque.om.addGetByNameMethods")), ColumnAccessByName#end##
+
+{
+$torqueGen.mergepoint("serialVersionUid")
+
+## field definitions for columns
+$torqueGen.mergepoint("fieldDefinitions")##
+$torqueGen.mergepoint("newModifiedFields")##
+#if ($torqueGen.booleanOption("torque.om.trackLoading"))
+$torqueGen.mergepoint("loadingField")##
+#end
+
+## getters and setters for member variables for columns 
+$torqueGen.mergepoint("gettersSetters")
+$torqueGen.mergepoint("newModifiedMethods")
+#if ($trackLoading == "true")
+$torqueGen.mergepoint("loadingMethods")
+#end
+#if ($addGetByNameMethods == "true")
+$torqueGen.mergepoint("getByNameMethods")
+#end
+
+$torqueGen.mergepoint("primaryKeyMethods")
+$torqueGen.mergepoint("foreignKeyGetters")
+$torqueGen.mergepoint("copyMethods")
+$torqueGen.mergepoint("peerGetter")
+$torqueGen.mergepoint("tableMapGetter")
+
+#if ($torqueGen.booleanOption("torque.om.generateBeans"))
+$torqueGen.mergepoint("objectBeanMethods")
+#end
+
+$torqueGen.mergepoint("toString")
+$torqueGen.mergepoint("equalsHashCode")
+$torqueGen.mergepoint("extensions")
+}

Added: db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/base/basePeerForView.vm
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/base/basePeerForView.vm?rev=1305157&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/base/basePeerForView.vm (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/base/basePeerForView.vm Sun Mar 25 21:44:51 2012
@@ -0,0 +1,63 @@
+## 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: MultiExtendBean.vm 240328 2005-08-26 22:02:48 +0200 (Fr, 26 Aug 2005) tfischer $
+##
+## Creates the base peer class.
+## 
+## This template expects the current source element to be a "table" element 
+## from the torque schema.
+## The schema needs to be processed by the OMTransformer.
+## The options and the attributes of the current source element must be set
+## as velocity variables.  
+##
+package ${basePeerPackage};
+
+$torqueGen.mergepoint("imports")
+
+$torqueGen.mergepoint("classJavadoc")
+public abstract class $basePeerClassName
+#if ( ${basePeerBaseClass} && (${basePeerBaseClass} != "") )
+    extends ${basePeerBaseClass}
+#end
+{
+$torqueGen.mergepoint("log")
+$torqueGen.mergepoint("serialVersionUid")
+$torqueGen.mergepoint("tableDatabaseNameConstants")
+$torqueGen.mergepoint("columnConstants")
+$torqueGen.mergepoint("numColumnConstant")
+$torqueGen.mergepoint("inheritanceClasskeyConstants")
+$torqueGen.mergepoint("peerImplField")
+$torqueGen.mergepoint("staticInit")
+$torqueGen.mergepoint("peerImplCreator")
+$torqueGen.mergepoint("peerImplGetter")
+$torqueGen.mergepoint("peerImplSetter")
+$torqueGen.mergepoint("resultSet2Objects")
+$torqueGen.mergepoint("addSelectColumns")
+$torqueGen.mergepoint("correctBooleans")
+$torqueGen.mergepoint("doSelect")
+$torqueGen.mergepoint("getDbObjectInstance")
+$torqueGen.mergepoint("buildCriteria")
+$torqueGen.mergepoint("buildSelectCriteria")
+$torqueGen.mergepoint("buildColumnValues")
+$torqueGen.mergepoint("retrieveByPK")
+$torqueGen.mergepoint("retrieveByPKs")
+$torqueGen.mergepoint("getTableMap")
+$torqueGen.mergepoint("extensions")
+}

Added: db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/basePeerForViewImpl.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/basePeerForViewImpl.vm?rev=1305157&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/basePeerForViewImpl.vm (added)
+++ db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/basePeerForViewImpl.vm Sun Mar 25 21:44:51 2012
@@ -0,0 +1,74 @@
+## 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: MultiExtendBean.vm 240328 2005-08-26 22:02:48 +0200 (Fr, 26 Aug 2005) tfischer $
+##
+## Creates the base peer class.
+## 
+## This template expects the current source element to be a "table" element 
+## from the torque schema.
+## The schema needs to be processed by the OMTransformer.
+## The options and the attributes of the current source element must be set
+## as velocity variables.  
+##
+package ${basePeerPackage};
+
+$torqueGen.mergepoint("imports")
+
+$torqueGen.mergepoint("classJavadoc")
+public abstract class $basePeerImplClassName
+#if (${basePeerImplBaseClass} && ${basePeerImplBaseClass} !="")
+    extends ${basePeerImplBaseClass}
+#end
+{
+$torqueGen.mergepoint("log")
+
+$torqueGen.mergepoint("serialVersionUid")
+
+$torqueGen.mergepoint("resultSet2Objects")
+$torqueGen.mergepoint("addSelectColumns")
+$torqueGen.mergepoint("correctBooleans")
+$torqueGen.mergepoint("doSelect")
+$torqueGen.mergepoint("getDbObjectInstance")
+$torqueGen.mergepoint("doInsert")
+$torqueGen.mergepoint("doUpdate")
+#if ($addSaveMethods == "true" && $saveMethodsInDbObjects != "true")
+$torqueGen.mergepoint("saveMethods")
+#end
+$torqueGen.mergepoint("doDelete")
+$torqueGen.mergepoint("buildCriteria")
+$torqueGen.mergepoint("buildSelectCriteria")
+$torqueGen.mergepoint("buildColumnValues")
+$torqueGen.mergepoint("retrieveByPK")
+$torqueGen.mergepoint("retrieveByPKs")
+#if ($complexObjectModel == "true")
+  #if (($objectIsCaching == "true") && $torqueGen.booleanOption("torque.om.complexObjectModel.generateDoSelectJoin"))
+$torqueGen.mergepoint("doSelectJoin")
+$torqueGen.mergepoint("doSelectJoinAllExcept")
+  #end
+  #if (($objectIsCaching == "true") && $torqueGen.booleanOption("torque.om.complexObjectModel.generateFillers"))
+$torqueGen.mergepoint("fillReferencedObjects")
+$torqueGen.mergepoint("fillReferencingObjects")
+$torqueGen.mergepoint("fillerChunkSizeGetter")
+  #end
+#end
+$torqueGen.mergepoint("getTableMap")
+$torqueGen.mergepoint("setDbName")
+$torqueGen.mergepoint("extensions")
+}

Modified: db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-0-strict.xsd
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-0-strict.xsd?rev=1305157&r1=1305156&r2=1305157&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-0-strict.xsd (original)
+++ db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-0-strict.xsd Sun Mar 25 21:44:51 2012
@@ -74,6 +74,17 @@ as compared to the standard database.xsd
         <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

Modified: db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-0.xsd
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-0.xsd?rev=1305157&r1=1305156&r2=1305157&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-0.xsd (original)
+++ db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/xsd/database-4-0.xsd Sun Mar 25 21:44:51 2012
@@ -88,11 +88,11 @@ Domains are used to define common attrib
           </xs:documentation>
         </xs:annotation>
       </xs:element>
-      <xs:element name="table" type="tableType" minOccurs="1"
+      <xs:element name="table" type="tableType" minOccurs="0"
                   maxOccurs="unbounded" >
         <xs:annotation>
           <xs:documentation xml:lang="en">
-Define table with its relevant attributes.
+Defines a database table.
           </xs:documentation>
         </xs:annotation>
       </xs:element>
@@ -100,7 +100,7 @@ Define table with its relevant attribute
                   maxOccurs="unbounded" >
         <xs:annotation>
           <xs:documentation xml:lang="en">
-Define table with its relevant attributes.
+Defines a database view.
           </xs:documentation>
         </xs:annotation>
       </xs:element>
@@ -919,7 +919,7 @@ The domain reference name to set common 
         </xs:documentation>
       </xs:annotation>
     </xs:attribute>
-    <xs:attribute name="select" type="sqlNameType" use="required" >
+    <xs:attribute name="select" type="sqlQualifiedNameType" use="required" >
       <xs:annotation>
         <xs:documentation xml:lang="en">
 The sql snippet which contains the value to select.
@@ -1054,4 +1054,13 @@ SQL Standard non-delimited identifiers.
     <xs:restriction base="xs:string" />
   </xs:simpleType>
 
+  <xs:simpleType name="sqlQualifiedNameType">
+    <xs:annotation>
+      <xs:documentation xml:lang="en">
+SQL Standard non-delimited identifiers.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:string" />
+  </xs:simpleType>
+
 </xs:schema>
\ No newline at end of file

Modified: db/torque/torque4/trunk/torque-templates/src/test/schema/schema.xml
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/test/schema/schema.xml?rev=1305157&r1=1305156&r2=1305157&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/test/schema/schema.xml (original)
+++ db/torque/torque4/trunk/torque-templates/src/test/schema/schema.xml Sun Mar 25 21:44:51 2012
@@ -30,7 +30,7 @@
   <!-- A  T A B L E                                        -->
   <!-- =================================================== -->
 
-  <!-- table name="a" description="A table">
+  <table name="a" description="A table">
     <column
       name="a_id"
       required="true"
@@ -44,13 +44,13 @@
       size="50"
     />
 
-  </table-->
+  </table>
 
   <!-- =================================================== -->
   <!-- B  T A B L E                                        -->
   <!-- =================================================== -->
 
-  <!-- table name="b" description="B table">
+  <table name="b" description="B table">
     <column
       name="b_id"
       required="true"
@@ -64,14 +64,14 @@
       size="50"
     />
 
-  </table-->
+  </table>
 
 
   <!-- =================================================== -->
   <!-- AB  T A B L E                                       -->
   <!-- =================================================== -->
 
-  <!-- table name="r_ab" description="r_ab table" idMethod="none">
+  <table name="r_ab" description="r_ab table" idMethod="none">
     <column
       name="a_id"
       required="true"
@@ -99,13 +99,13 @@
       <reference local="b_id" foreign="b_id"/>
     </foreign-key>
 
-  </table-->
+  </table>
 
   <!-- =================================================== -->
   <!-- C  T A B L E                                       -->
   <!-- =================================================== -->
 
-  <!-- table name="c" description="c table contains fk to ar_ab, a and b">
+  <table name="c" description="c table contains fk to ar_ab, a and b">
     <column
       name="c_id"
       required="true"
@@ -158,14 +158,14 @@
         <reference local="a_id" foreign="a_id"/>
         <reference local="b_id" foreign="b_id"/>
     </foreign-key>
-  </table-->
+  </table>
 
 
   <!-- =================================================== -->
   <!-- N O P K  T A B L E                                  -->
   <!-- =================================================== -->
 
-  <!-- table name="nopk" idMethod="none" description="this table has no pk">
+  <table name="nopk" idMethod="none" description="this table has no pk">
     <column
       name="intcol"
       type="INTEGER"
@@ -188,13 +188,13 @@
       <reference foreign="COL1" local="PARENT_COL1"/>
       <reference foreign="COL2" local="PARENT_COL2"/>
     </foreign-key>
-  </table-->
+  </table>
 
   <!-- =================================================== -->
   <!-- T A B L E  W I T H  I N T E R F A C E               -->
   <!-- =================================================== -->
 
-  <!-- table name="ifc_table" idMethod="none"
+  <table name="ifc_table" idMethod="none"
   	interface="org.apache.torque.TestInterface"
   	description="this table implements an interface">
     <column
@@ -222,13 +222,13 @@
       type="VARCHAR"
       size="50"
     />
-  </table-->
+  </table>
   
   <!-- =================================================== -->
   <!-- T A B L E  W I T H  I N H E R I T A N C E           -->
   <!-- =================================================== -->
 
-  <!-- table name="INHERITANCE_TEST" description="Table to test inheritance">
+  <table name="INHERITANCE_TEST" description="Table to test inheritance">
     <column
       name="INHERITANCE_TEST"
       required="true"
@@ -278,7 +278,7 @@
       type="VARCHAR"
       size="100"
     />
-  </table-->
+  </table>
   
   <!-- =================================================== -->
   <!-- E X T E R N A L   S C H E M A                       -->
@@ -307,5 +307,15 @@
     </foreign-key>
   </table>
   
+  <!-- =================================================== -->
+  <!-- V I E W                                             -->
+  <!-- =================================================== -->
+
+  <view name="a_b" sqlSuffix="from a join r_ab on a.a_id=r_ab.a_id join b on r_ab.b_id=b.b_id">
+    <column name="a_id" type="INTEGER" select="a.a_id"/>
+    <column name="a_name" type="VARCHAR" select="a.name"/>
+    <column name="b_id" type="INTEGER" select="b.b_id"/>
+    <column name="b_name" type="VARCHAR" select="b.name"/>
+  </view>
 
 </database>



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org