You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2014/12/12 09:47:43 UTC

cayenne git commit: add table types into configuration

Repository: cayenne
Updated Branches:
  refs/heads/master b8ddcdafa -> 75d49a95c


add table types into configuration


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/75d49a95
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/75d49a95
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/75d49a95

Branch: refs/heads/master
Commit: 75d49a95cc1a3c66e10c3374d50337838fae86a8
Parents: b8ddcda
Author: alexkolonitsky <Al...@gmail.com>
Authored: Thu Dec 11 21:01:02 2014 +0300
Committer: alexkolonitsky <Al...@gmail.com>
Committed: Thu Dec 11 21:05:13 2014 +0300

----------------------------------------------------------------------
 .../org/apache/cayenne/access/DbLoader.java     | 12 +++---
 .../apache/cayenne/tools/DbImporterTask.java    | 10 +++++
 .../tools/dbimport/DbImportConfiguration.java   |  4 ++
 .../tools/dbimport/config/AntNestedElement.java |  4 ++
 .../config/DefaultReverseEngineeringLoader.java | 12 ++++++
 .../dbimport/config/ReverseEngineering.java     | 31 ++++++++++++++
 .../cayenne/tools/DbImporterTaskTest.java       |  5 +++
 .../tools/dbimport/DbImportActionTest.java      |  6 +--
 .../DefaultReverseEngineeringLoaderTest.java    | 13 ++++++
 .../apache/cayenne/tools/build-table-types.xml  | 40 ++++++++++++++++++
 .../config/reverseEngineering-tableTypes.xml    | 29 +++++++++++++
 .../apache/cayenne/tools/DbImporterMojo.java    |  1 +
 .../tools/DbImporterMojoConfigurationTest.java  |  5 +++
 .../cayenne/tools/DbImporterMojoTest.java       |  4 ++
 .../cayenne/tools/config/pom-table-types.xml    | 41 +++++++++++++++++++
 .../tools/dbimport/testTableTypes-pom.xml       | 43 ++++++++++++++++++++
 .../dbimport/testTableTypes.map.xml-result      | 29 +++++++++++++
 .../cayenne/tools/dbimport/testTableTypes.sql   | 25 ++++++++++++
 18 files changed, 305 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
index 0e38ce9..7acda33 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
@@ -697,7 +697,7 @@ public class DbLoader {
      *
      * @since 1.0.7
      * @deprecated since 4.0 use
-     * {@link #load(org.apache.cayenne.map.DataMap, DbLoaderConfiguration, String...)}
+     * {@link #load(org.apache.cayenne.map.DataMap, DbLoaderConfiguration)}
      * method that supports catalogs.
      */
     @Deprecated
@@ -717,7 +717,7 @@ public class DbLoader {
      * of tables to read.
      *
      * @deprecated since 4.0 use
-     * {@link #load(org.apache.cayenne.map.DataMap, DbLoaderConfiguration, String...)}
+     * {@link #load(org.apache.cayenne.map.DataMap, DbLoaderConfiguration)}
      * method that supports catalogs.
      */
     @Deprecated
@@ -730,7 +730,7 @@ public class DbLoader {
                 new DbPath(null, schemaPattern), transformPatternToFilter(tablePattern), TRUE, NULL)));
         config.setTableTypes(tableTypes);
 
-        load(dataMap, config, tableTypes);
+        load(dataMap, config);
         return dataMap;
     }
 
@@ -751,9 +751,9 @@ public class DbLoader {
      *
      * @since 4.0
      */
-    public void load(DataMap dataMap, DbLoaderConfiguration config, String... tableTypes) throws SQLException {
+    public void load(DataMap dataMap, DbLoaderConfiguration config) throws SQLException {
 
-        Map<DbPath, Map<String, DbEntity>> tables = getTables(config, tableTypes);
+        Map<DbPath, Map<String, DbEntity>> tables = getTables(config, config.getTableTypes());
         List<DbEntity> entities = loadDbEntities(dataMap, config, tables);
 
         if (entities != null) {
@@ -777,7 +777,7 @@ public class DbLoader {
     public DataMap load(DbLoaderConfiguration config) throws SQLException {
 
         DataMap dataMap = new DataMap();
-        load(dataMap, config, config.getTableTypes());
+        load(dataMap, config);
         loadProcedures(dataMap, config);
 
         return dataMap;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
index 43df27b..5750531 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
@@ -19,10 +19,14 @@
 package org.apache.cayenne.tools;
 
 import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
 
 import org.apache.cayenne.access.loader.filters.EntityFilters;
 import org.apache.cayenne.access.loader.filters.FilterFactory;
 import org.apache.cayenne.conn.DataSourceInfo;
+import org.apache.cayenne.tools.dbimport.config.AntNestedElement;
 import org.apache.cayenne.tools.dbimport.config.Catalog;
 import org.apache.cayenne.tools.dbimport.config.ExcludeColumn;
 import org.apache.cayenne.tools.dbimport.config.ExcludeProcedure;
@@ -71,6 +75,8 @@ public class DbImporterTask extends Task {
 
         Log logger = new AntLogger(this);
         config.setLogger(logger);
+        config.setTableTypes(reverseEngineering.getTableTypes());
+        
         Injector injector = DIBootstrap.createInjector(new ToolsModule(logger), new DbImportModule());
 
         try {
@@ -261,6 +267,10 @@ public class DbImporterTask extends Task {
         reverseEngineering.addCatalog(catalog);
     }
 
+    public void addConfiguredTableType(AntNestedElement type) {
+        reverseEngineering.addTableType(type.getName());
+    }
+
     public ReverseEngineering getReverseEngineering() {
         return reverseEngineering;
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
index a116801..51c22bf 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
@@ -325,4 +325,8 @@ public class DbImportConfiguration {
     public void setSkipRelationshipsLoading(Boolean skipRelationshipsLoading) {
         this.dbLoaderConfiguration.setSkipRelationshipsLoading(skipRelationshipsLoading);
     }
+
+    public void setTableTypes(String[] tableTypes) {
+        dbLoaderConfiguration.setTableTypes(tableTypes);
+    }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/AntNestedElement.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/AntNestedElement.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/AntNestedElement.java
index 08512dc..c8a801b 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/AntNestedElement.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/AntNestedElement.java
@@ -32,6 +32,10 @@ public class AntNestedElement {
         return name;
     }
 
+    public void setName(String name) {
+        this.name = name;
+    }
+
     public void addText(String str) {
         name = str;
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoader.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoader.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoader.java
index 216e218..f7c3d97 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoader.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoader.java
@@ -58,6 +58,8 @@ public class DefaultReverseEngineeringLoader implements ReverseEngineeringLoader
 
             Element root = doc.getDocumentElement();
             engineering.setSkipRelationshipsLoading(loadBoolean(root, "skipRelationshipsLoading"));
+            engineering.setTableTypes(loadTableTypes(root));
+
             engineering.setCatalogs(loadCatalogs(root));
             engineering.setSchemas(loadSchemas(root));
             engineering.setIncludeTables(loadIncludeTables(root));
@@ -158,6 +160,16 @@ public class DefaultReverseEngineeringLoader implements ReverseEngineeringLoader
         return res;
     }
 
+    private Collection<String> loadTableTypes(Node parent) {
+        List<Node> types = getElementsByTagName(parent, "tableType");
+        Collection<String> res = new LinkedList<String>();
+        for (Node typeNode : types) {
+            res.add(loadName(typeNode));
+        }
+
+        return res;
+    }
+
     private String loadName(Node catalogNode) {
         return loadByName(catalogNode, "name");
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/ReverseEngineering.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/ReverseEngineering.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/ReverseEngineering.java
index 1d372f2..b668ff9 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/ReverseEngineering.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/ReverseEngineering.java
@@ -29,6 +29,13 @@ public class ReverseEngineering extends FilterContainer {
 
     private Boolean skipRelationshipsLoading;
 
+    /*
+     * Typical types are "TABLE",
+     * "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY",
+     * "LOCAL TEMPORARY", "ALIAS", "SYNONYM"., etc.
+     */
+    private Collection<String> tableTypes = new LinkedList<String>();
+
     private Collection<Catalog> catalogs = new LinkedList<Catalog>();
     private Collection<Schema> schemas = new LinkedList<Schema>();
 
@@ -59,6 +66,28 @@ public class ReverseEngineering extends FilterContainer {
         this.schemas = schemas;
     }
 
+    public String[] getTableTypes() {
+        return tableTypes.toArray(new String[tableTypes.size()]);
+    }
+
+    /*
+     * Typical types are "TABLE",
+     * "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY",
+     * "LOCAL TEMPORARY", "ALIAS", "SYNONYM"., etc.
+     */
+    public void setTableTypes(Collection<String> tableTypes) {
+        this.tableTypes = tableTypes;
+    }
+
+    /*
+     * Typical types are "TABLE",
+     * "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY",
+     * "LOCAL TEMPORARY", "ALIAS", "SYNONYM"., etc.
+     */
+    public void addTableType(String type) {
+        this.tableTypes.add(type);
+    }
+
     public void addSchema(Schema schema) {
         this.schemas.add(schema);
     }
@@ -84,4 +113,6 @@ public class ReverseEngineering extends FilterContainer {
 
         return res.toString();
     }
+
+
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/cayenne-tools/src/test/java/org/apache/cayenne/tools/DbImporterTaskTest.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/test/java/org/apache/cayenne/tools/DbImporterTaskTest.java b/cayenne-tools/src/test/java/org/apache/cayenne/tools/DbImporterTaskTest.java
index 9121132..62aebe9 100644
--- a/cayenne-tools/src/test/java/org/apache/cayenne/tools/DbImporterTaskTest.java
+++ b/cayenne-tools/src/test/java/org/apache/cayenne/tools/DbImporterTaskTest.java
@@ -81,6 +81,11 @@ public class DbImporterTaskTest {
 		assertSkipRelationshipsLoading(getCdbImport("build-skip-relationships-loading.xml").getReverseEngineering());
 	}
 
+    @Test
+    public void testTableTypes() throws Exception {
+        assertTableTypes(getCdbImport("build-table-types.xml").getReverseEngineering());
+    }
+
 	@Test
 	public void testIncludeTable() throws Exception {
 		test("build-include-table.xml");

http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportActionTest.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportActionTest.java b/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportActionTest.java
index 018ebb8..a2fb0f1 100644
--- a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportActionTest.java
+++ b/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportActionTest.java
@@ -88,7 +88,7 @@ public class DbImportActionTest {
 
         DbLoader dbLoader = new DbLoader(null, null, null) {
             @Override
-            public void load(DataMap dataMap, DbLoaderConfiguration config, String ... tables) throws SQLException {
+            public void load(DataMap dataMap, DbLoaderConfiguration config) throws SQLException {
                  new DataMapBuilder(dataMap).withDbEntities(2).build();
             }
 
@@ -129,7 +129,7 @@ public class DbImportActionTest {
     public void testImportWithFieldChanged() throws Exception {
         DbLoader dbLoader = new DbLoader(null, null, null) {
             @Override
-            public void load(DataMap dataMap, DbLoaderConfiguration config, String ... tables) throws SQLException {
+            public void load(DataMap dataMap, DbLoaderConfiguration config) throws SQLException {
                 new DataMapBuilder(dataMap).with(
                         dbEntity("ARTGROUP").attributes(
                                 dbAttr("GROUP_ID").typeInt().primaryKey(),
@@ -198,7 +198,7 @@ public class DbImportActionTest {
     public void testImportWithoutChanges() throws Exception {
         DbLoader dbLoader = new DbLoader(null, null, null) {
             @Override
-            public void load(DataMap dataMap, DbLoaderConfiguration config, String ... tables) throws SQLException {
+            public void load(DataMap dataMap, DbLoaderConfiguration config) throws SQLException {
                 new DataMapBuilder(dataMap).with(
                         dbEntity("ARTGROUP").attributes(
                                 dbAttr("NAME").typeVarchar(100).mandatory()

http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoaderTest.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoaderTest.java b/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoaderTest.java
index ff3e04d..7b0f21b 100644
--- a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoaderTest.java
+++ b/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoaderTest.java
@@ -27,6 +27,7 @@ import java.io.File;
 import java.net.MalformedURLException;
 import java.util.Iterator;
 
+import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
@@ -210,6 +211,18 @@ public class DefaultReverseEngineeringLoaderTest {
         assertTrue(engineering.getSkipRelationshipsLoading());
     }
 
+    @Test
+    public void testTableTypes() throws Exception {
+        ReverseEngineering engineering = new DefaultReverseEngineeringLoader()
+                .load(getResource("reverseEngineering-tableTypes.xml"));
+
+        assertTableTypes(engineering);
+    }
+
+    public static void assertTableTypes(ReverseEngineering engineering) {
+        assertArrayEquals(engineering.getTableTypes(), new String[]{"type1", "type2", "type3"});
+    }
+
     protected URLResource getResource(String file) throws MalformedURLException {
 		return new URLResource(getClass().getResource(file));
 	}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/cayenne-tools/src/test/resources/org/apache/cayenne/tools/build-table-types.xml
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/test/resources/org/apache/cayenne/tools/build-table-types.xml b/cayenne-tools/src/test/resources/org/apache/cayenne/tools/build-table-types.xml
new file mode 100644
index 0000000..6985520
--- /dev/null
+++ b/cayenne-tools/src/test/resources/org/apache/cayenne/tools/build-table-types.xml
@@ -0,0 +1,40 @@
+<!--
+  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.
+  -->
+
+<project name="MyProject" default="dist" basedir=".">
+
+    <taskdef name="cdbimport" classname="org.apache.cayenne.tools.DbImporterTask" taskname="cdbimport"
+             classpath="${basedir}"  />
+
+    <target name="dist">
+        <cdbimport map="${context.dir}/WEB-INF/DefaultMap.map.xml"
+                   adapter="org.apache.cayenne.dba.hsqldb.HSQLDBAdapter"
+                   driver="org.hsqldb.jdbcDriver"
+                   url="jdbc:hsqldb:hsql://localhost/bookmarker"
+                   username="sa">
+
+            <tableType>type1</tableType>
+
+            <tableType name="type2" />
+            <tableType name="type3" />
+        </cdbimport>
+    </target>
+
+
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/cayenne-tools/src/test/resources/org/apache/cayenne/tools/dbimport/config/reverseEngineering-tableTypes.xml
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/test/resources/org/apache/cayenne/tools/dbimport/config/reverseEngineering-tableTypes.xml b/cayenne-tools/src/test/resources/org/apache/cayenne/tools/dbimport/config/reverseEngineering-tableTypes.xml
new file mode 100644
index 0000000..f9ea8ca
--- /dev/null
+++ b/cayenne-tools/src/test/resources/org/apache/cayenne/tools/dbimport/config/reverseEngineering-tableTypes.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  -->
+
+<reverseEngineering>
+    <tableType>type1</tableType>
+
+    <tableType name="type2" />
+
+    <tableType>
+        <name>type3</name>
+    </tableType>
+</reverseEngineering>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java b/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
index 93ce3c8..e60794b 100644
--- a/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
+++ b/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
@@ -277,6 +277,7 @@ public class DbImporterMojo extends AbstractMojo {
         config.setFiltersConfig(new FiltersConfigBuilder(reverseEngineering)
                 .add(filterBuilder.build()).filtersConfig());
         config.setSkipRelationshipsLoading(reverseEngineering.getSkipRelationshipsLoading());
+        config.setTableTypes(reverseEngineering.getTableTypes());
         return config;
     }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoConfigurationTest.java
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoConfigurationTest.java b/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoConfigurationTest.java
index 97736a7..8606277 100644
--- a/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoConfigurationTest.java
+++ b/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoConfigurationTest.java
@@ -80,6 +80,11 @@ public class DbImporterMojoConfigurationTest extends AbstractMojoTestCase {
         assertSkipRelationshipsLoading(getCdbImport("pom-skip-relationships-loading.xml").getReverseEngineering());
     }
 
+    @Test
+    public void testTableTypes() throws Exception {
+        assertTableTypes(getCdbImport("pom-table-types.xml").getReverseEngineering());
+    }
+
     private DbImporterMojo getCdbImport(String pomFileName) throws Exception {
         return (DbImporterMojo) lookupMojo("cdbimport",
                 getTestFile("src/test/resources/org/apache/cayenne/tools/config/" + pomFileName));

http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java b/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
index 5aa2093..98d8f0c 100644
--- a/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
+++ b/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
@@ -108,6 +108,10 @@ public class DbImporterMojoTest extends AbstractMojoTestCase {
 		test("testViewsExclude");
 	}
 	
+	public void testTableTypes() throws Exception {
+		test("testTableTypes");
+	}
+
 	public void testDefaultPackage() throws Exception {
 		test("testDefaultPackage");
 	}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/config/pom-table-types.xml
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/config/pom-table-types.xml b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/config/pom-table-types.xml
new file mode 100644
index 0000000..60aed11
--- /dev/null
+++ b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/config/pom-table-types.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+	http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-cayenne-plugin</artifactId>
+                <configuration>
+                    <map>target/test/org/apache/cayenne/tools/dbimporter-map1.map.xml</map>
+
+                    <reverseEngineering>
+                        <tableType>type1</tableType>
+                        <tableType>type2</tableType>
+                        <tableType>type3</tableType>
+                    </reverseEngineering>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testTableTypes-pom.xml
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testTableTypes-pom.xml b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testTableTypes-pom.xml
new file mode 100644
index 0000000..4f7bbb7
--- /dev/null
+++ b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testTableTypes-pom.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+	http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+	<name>DbImporterMojo Test1</name>	
+
+	<build>
+		<plugins>
+			<plugin>
+				<artifactId>maven-cayenne-plugin</artifactId>
+				<configuration>
+					<map>target/test-classes/org/apache/cayenne/tools/dbimport/testTableTypes.map.xml</map>
+                    <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
+                    <url>jdbc:derby:memory:DbImporterMojoTest;create=true</url>
+
+                    <reverseEngineering>
+                        <tableType>TABLE</tableType>
+                    </reverseEngineering>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testTableTypes.map.xml-result
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testTableTypes.map.xml-result b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testTableTypes.map.xml-result
new file mode 100644
index 0000000..805898d
--- /dev/null
+++ b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testTableTypes.map.xml-result
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
+<data-map xmlns="http://cayenne.apache.org/schema/7/modelMap"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="http://cayenne.apache.org/schema/7/modelMap http://cayenne.apache.org/schema/7/modelMap.xsd"
+          project-version="7">
+    <db-entity name="PERSON" schema="APP">
+        <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+    </db-entity>
+    <obj-entity name="Person" className="Person" dbEntityName="PERSON">
+    </obj-entity>
+</data-map>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/75d49a95/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testTableTypes.sql
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testTableTypes.sql b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testTableTypes.sql
new file mode 100644
index 0000000..cb7d3f5
--- /dev/null
+++ b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testTableTypes.sql
@@ -0,0 +1,25 @@
+--  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.
+
+CREATE TABLE Person (
+  id INTEGER NOT NULL,
+
+  PRIMARY KEY (id)
+);
+
+CREATE VIEW girl (id) AS SELECT id FROM Person;
+CREATE VIEW v_vview (id) AS SELECT id FROM Person;
\ No newline at end of file