You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ko...@apache.org on 2015/04/24 00:12:59 UTC
[14/17] cayenne git commit: CAY-2003 cdbimport doesn't work properly
with several includeTable tags
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
index b6ba66e..a9f4e5b 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
@@ -22,8 +22,12 @@ package org.apache.cayenne.access;
import java.sql.Types;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import org.apache.cayenne.access.loader.DbLoaderConfiguration;
+import org.apache.cayenne.access.loader.filters.FiltersConfig;
+import org.apache.cayenne.access.loader.filters.PatternFilter;
+import org.apache.cayenne.access.loader.filters.TableFilter;
import org.apache.cayenne.configuration.server.ServerRuntime;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.TypesMapping;
@@ -43,10 +47,6 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import java.sql.Types;
-import java.util.Collection;
-import java.util.List;
-
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@@ -104,13 +104,13 @@ public class DbLoaderIT extends ServerCase {
String tableLabel = adapter.tableTypeForTable();
- List<DbEntity> tables = loader.getTables(new DbLoaderConfiguration(), new String[] { tableLabel });
+ Map<DbEntity, PatternFilter> tables = loader.getTables(new DbLoaderConfiguration(), new String[]{tableLabel});
assertNotNull(tables);
boolean foundArtist = false;
- for (DbEntity table : tables) {
+ for (DbEntity table : tables.keySet()) {
if ("ARTIST".equalsIgnoreCase(table.getName())) {
foundArtist = true;
break;
@@ -121,6 +121,34 @@ public class DbLoaderIT extends ServerCase {
}
@Test
+ public void testGetTablesWithWrongCatalog() throws Exception {
+
+ DbLoaderConfiguration config = new DbLoaderConfiguration();
+ config.setFiltersConfig(
+ FiltersConfig.create("WRONG", null, TableFilter.everything(), PatternFilter.INCLUDE_NOTHING));
+ Map<DbEntity, PatternFilter> tables = loader.getTables(
+ config,
+ new String[]{ adapter.tableTypeForTable()});
+
+ assertNotNull(tables);
+ assertTrue(tables.isEmpty());
+ }
+
+ @Test
+ public void testGetTablesWithWrongSchema() throws Exception {
+
+ DbLoaderConfiguration config = new DbLoaderConfiguration();
+ config.setFiltersConfig(
+ FiltersConfig.create(null, "WRONG", TableFilter.everything(), PatternFilter.INCLUDE_NOTHING));
+ Map<DbEntity, PatternFilter> tables = loader.getTables(
+ config,
+ new String[]{ adapter.tableTypeForTable()});
+
+ assertNotNull(tables);
+ assertTrue(tables.isEmpty());
+ }
+
+ @Test
public void testLoadWithMeaningfulPK() throws Exception {
DataMap map = new DataMap();
@@ -128,12 +156,12 @@ public class DbLoaderIT extends ServerCase {
loader.setCreatingMeaningfulPK(true);
- List<DbEntity> testLoader = loader.getTables(CONFIG, tableLabel);
+ Map<DbEntity, PatternFilter> testLoader = loader.getTables(CONFIG, tableLabel);
if (testLoader.isEmpty()) {
testLoader = loader.getTables(CONFIG, tableLabel);
}
- List<DbEntity> entities = loader.loadDbEntities(map, CONFIG, testLoader);
+ List<DbEntity> entities = loader.loadDbEntities(map, testLoader, CONFIG);
loader.loadObjEntities(map, CONFIG, entities);
ObjEntity artist = map.getObjEntity("Artist");
@@ -162,7 +190,7 @@ public class DbLoaderIT extends ServerCase {
String tableLabel = adapter.tableTypeForTable();
// *** TESTING THIS ***
- List<DbEntity> entities = loader.loadDbEntities(map, CONFIG, loader.getTables(CONFIG, new String[]{tableLabel}));
+ List<DbEntity> entities = loader.loadDbEntities(map, loader.getTables(CONFIG, new String[]{tableLabel}), CONFIG);
assertDbEntities(map);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderPartialIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderPartialIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderPartialIT.java
index 2a56b88..9f23aba 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderPartialIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderPartialIT.java
@@ -81,9 +81,7 @@ public class DbLoaderPartialIT extends ServerCase {
DataMap map = new DataMap();
String tableLabel = adapter.tableTypeForTable();
- loader.loadDataMapFromDB(null, "%", new String[] {
- tableLabel
- }, map);
+ loader.loadDataMapFromDB(null, "%", new String[] {tableLabel}, map);
Collection<?> rels = getDbEntity(map, "ARTIST").getRelationships();
assertNotNull(rels);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/DbPathTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/DbPathTest.java b/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/DbPathTest.java
deleted file mode 100644
index 60d4933..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/DbPathTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.cayenne.access.loader.filters;
-
-import org.junit.Test;
-
-import static org.apache.cayenne.access.loader.filters.FiltersFactory.path;
-import static org.junit.Assert.*;
-
-public class DbPathTest {
-
- @Test
- public void testIsCover() throws Exception {
- assertTrue(path(null, null).isCover(path("Hello", "World")));
- assertTrue(path(null, null).isCover(path("Hello", null)));
- assertTrue(path(null, null).isCover(path(null, null)));
- assertTrue(path(null, "Yo").isCover(path("Yo!", "Yo")));
- assertTrue(path(null, "Yo").isCover(path(null, "Yo")));
-
- assertFalse(path(null, "Yo!").isCover(path(null, "Yo!!")));
- assertFalse(path("aa", "Yo!").isCover(path(null, "Yo!!")));
- assertFalse(path("aaa", "Yo!").isCover(path("aa", "Yo!!")));
-
- assertTrue(path("aa", null).isCover(path("aa", null)));
- assertTrue(path("aa", null).isCover(path("aa", "bb")));
- assertTrue(path("aa", "Yo!").isCover(path("aa", "Yo!")));
- assertFalse(path("aa", "Yo!").isCover(path("aa", "Yo!!")));
-
- assertFalse(path("", "APP").isCover(path(null, null)));
-
- assertTrue(path(null, "schema_01").isCover(path("", "schema_01")));
- assertTrue(path(null, "schema_01").isCover(path(null, "schema_01")));
- assertFalse(path(null, "schema_01").isCover(path("", "schema_02")));
- assertFalse(path(null, "schema_02").isCover(path("", "schema_01")));
- }
-
- @Test
- public void testToString() throws Exception {
- assertEquals("%", path(null, null).toString());
- assertEquals("/schema", path("", "schema").toString());
- assertEquals("%/schema", path(null, "schema").toString());
- assertEquals("catalog/schema", path("catalog", "schema").toString());
- assertEquals("catalog//table", path("catalog", "", "table").toString());
- assertEquals("catalog/%/table", path("catalog", null, "table").toString());
- assertEquals("//table", path("", "", "table").toString());
- assertEquals("%/%/table", path(null, null, "table").toString());
- assertEquals("%", path(null, null, null).toString());
- assertEquals("c/%/", path("c", null, "").toString());
- }
-
- @Test
- public void testMerge() throws Exception {
- DbPath path1 = path(null, null);
- DbPath path2 = path("", "APP");
- assertEquals(path1, path1.merge(path2));
- assertEquals(path1, path2.merge(path1));
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/EntityFiltersTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/EntityFiltersTest.java b/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/EntityFiltersTest.java
deleted file mode 100644
index 5b936ac..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/EntityFiltersTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.cayenne.access.loader.filters;
-
-import org.junit.Test;
-
-import static org.apache.cayenne.access.loader.filters.FilterFactory.*;
-import static org.junit.Assert.*;
-
-public class EntityFiltersTest {
-
- @Test
- public void testJoinWithEmpty() throws Exception {
- EntityFilters filter1 = new EntityFilters(null, null, null, null);
- EntityFilters filter2 = new EntityFilters(null, include("table"), include("column"), include("procedure"));
-
- assertEquals(filter2, filter1.join(filter2));
- assertEquals(filter2, filter2.join(filter1));
- }
-
- @Test
- public void testJoinExcludeInclude() throws Exception {
- EntityFilters filter1 = new EntityFilters(null, exclude("table"), exclude("column"), exclude("procedure"));
- EntityFilters filter2 = new EntityFilters(null, include("table"), include("column"), include("procedure"));
-
- assertEquals(new EntityFilters(null,
- list(exclude("table"), include("table")),
- list(exclude("column"), include("column")),
- list(exclude("procedure"), include("procedure"))),
- filter1.join(filter2));
- assertEquals(new EntityFilters(null,
- list(include("table"), exclude("table")),
- list(include("column"), exclude("column")),
- list(include("procedure"), exclude("procedure"))),
- filter2.join(filter1));
- }
-
- @Test
- public void testEquals() throws Exception {
- EntityFilters filters = new EntityFilters(new DbPath(), NULL, NULL, NULL);
- assertTrue(filters.tableFilter().equals(NULL));
- assertTrue(filters.columnFilter().equals(NULL));
- assertTrue(filters.procedureFilter().equals(NULL));
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/FiltersConfigTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/FiltersConfigTest.java b/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/FiltersConfigTest.java
index c6097ec..26501fc 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/FiltersConfigTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/FiltersConfigTest.java
@@ -1,198 +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.
- */
-
package org.apache.cayenne.access.loader.filters;
-import org.junit.Test;
-
-import java.util.Iterator;
-import java.util.List;
+import junit.framework.TestCase;
-import static org.apache.cayenne.access.loader.filters.FilterFactory.*;
-import static org.apache.cayenne.access.loader.filters.FiltersFactory.path;
-import static org.apache.cayenne.access.loader.filters.FiltersFactory.eFilters;
-import static org.junit.Assert.*;
+import java.util.Collections;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.regex.Pattern;
-public class FiltersConfigTest {
+public class FiltersConfigTest extends TestCase {
- @Test
- public void testSorting() throws Exception {
- FiltersConfig filters = new FiltersConfig(
- entityFilter("", ""),
- entityFilter("aaa", ""),
- entityFilter("aa", ""),
- entityFilter("aa", "a"),
- entityFilter("aa", "aa"),
- entityFilter("aa", "aa"),
- entityFilter("b", "b")
- );
-
- Iterator<DbPath> iterator = filters.getDbPaths().iterator();
- assertEquals(path("", ""), iterator.next());
- assertEquals(path("aa", ""), iterator.next());
- assertEquals(path("aa", "a"), iterator.next());
- assertEquals(path("aa", "aa"), iterator.next());
- assertEquals(path("aaa", ""), iterator.next());
- assertEquals(path("b", "b"), iterator.next());
- }
+ public void testToString_01() {
+ FiltersConfig config = FiltersConfig.create(null, null,
+ TableFilter.everything(), PatternFilter.INCLUDE_EVERYTHING);
- private EntityFilters entityFilter(String s, String s1) {
- return new EntityFilters(new DbPath(s, s1), include("IncludeTable"), TRUE, TRUE);
+ assertEquals("Catalog: null\n" +
+ " Schema: null\n" +
+ " Tables: \n" +
+ " Include: null Columns: ALL\n" +
+ " Procedures: ALL\n", config.toString());
}
- @Test
- public void testActionsWithEmptyCatalog() throws Exception {
- FiltersConfig filters = new FiltersConfig(
- entityFilter(null, null),
- entityFilter("aaa", null),
- entityFilter("aa", null)
+ public void testToString_02() {
+ FiltersConfig config = new FiltersConfig(
+ new CatalogFilter("catalog_01",
+ new SchemaFilter("schema_11", TableFilter.everything(), PatternFilter.INCLUDE_EVERYTHING)),
+ new CatalogFilter("catalog_02",
+ new SchemaFilter("schema_21", TableFilter.everything(), PatternFilter.INCLUDE_NOTHING),
+ new SchemaFilter("schema_22",
+ new TableFilter(
+ includes(new IncludeTableFilter(null, PatternFilter.INCLUDE_NOTHING)),
+ excludes("aaa")),
+ PatternFilter.INCLUDE_NOTHING),
+ new SchemaFilter("schema_23", TableFilter.include("include"), PatternFilter.INCLUDE_NOTHING)
+ )
);
- List<DbPath> actions = filters.pathsForQueries();
- assertEquals(1L, actions.size());
- assertEquals(path(), actions.get(0));
+ assertEquals("Catalog: catalog_01\n" +
+ " Schema: schema_11\n" +
+ " Tables: \n" +
+ " Include: null Columns: ALL\n" +
+ " Procedures: ALL\n" +
+ "Catalog: catalog_02\n" +
+ " Schema: schema_21\n" +
+ " Tables: \n" +
+ " Include: null Columns: ALL\n" +
+ " Procedures: NONE\n" +
+ " Schema: schema_22\n" +
+ " Tables: \n" +
+ " Include: null Columns: NONE\n" +
+ " aaa\n" +
+ " Procedures: NONE\n" +
+ " Schema: schema_23\n" +
+ " Tables: \n" +
+ " Include: include Columns: ALL\n" +
+ " Procedures: NONE\n", config.toString());
}
- @Test
- public void testActionsWithEmptySchemas() throws Exception {
- FiltersConfig filters = new FiltersConfig(
- entityFilter("aaa", null),
- entityFilter("aaa", "11"),
- entityFilter("aa", null),
- entityFilter("aa", "a"),
- entityFilter("aa", "aa"),
- entityFilter("aa", "aa")
- );
-
-
- List<DbPath> actions = filters.pathsForQueries();
- assertEquals(2L, actions.size());
- assertEquals(path("aa", null), actions.get(0));
- assertEquals(path("aaa", null), actions.get(1));
+ private SortedSet<Pattern> excludes(String ... p) {
+ SortedSet<Pattern> patterns = new TreeSet<Pattern>(PatternFilter.PATTERN_COMPARATOR);
+ for (String pattern : p) {
+ patterns.add(PatternFilter.pattern(pattern));
+ }
+ return patterns;
}
- @Test
- public void testActionsWithSchemas() throws Exception {
- FiltersConfig filters = new FiltersConfig(
- entityFilter("aaa", ""),
- entityFilter("aa", "a"),
- entityFilter("aa", "aa"),
- entityFilter("aa", "aa"),
- entityFilter("aa", "b"),
- entityFilter("aa", "b"),
- entityFilter("aa", "b")
- );
-
+ protected SortedSet<IncludeTableFilter> includes(IncludeTableFilter ... filters) {
+ SortedSet<IncludeTableFilter> includeTableFilters = new TreeSet<IncludeTableFilter>();
+ Collections.addAll(includeTableFilters, filters);
- List<DbPath> actions = filters.pathsForQueries();
- assertEquals(4L, actions.size());
- assertEquals(path("aa", "a"), actions.get(0));
- assertEquals(path("aa", "aa"), actions.get(1));
- assertEquals(path("aa", "b"), actions.get(2));
- assertEquals(path("aaa", ""), actions.get(3));
+ return includeTableFilters;
}
- @Test
- public void testActionsWithSchemasAndEmptyCatalog() throws Exception {
- FiltersConfig filters = new FiltersConfig(
- entityFilter("", "a"),
- entityFilter("", "aa"),
- entityFilter("", "aa"),
- entityFilter("", "b"),
- entityFilter("", "b"),
- entityFilter("", "b")
- );
-
-
- List<DbPath> actions = filters.pathsForQueries();
- assertEquals(3L, actions.size());
- assertEquals(path("", "b"), actions.get(2));
- assertEquals(path("", "aa"), actions.get(1));
- assertEquals(path("", "a"), actions.get(0));
-
- }
-
- @Test
- public void testFiltersOneFilter() throws Exception {
- FiltersConfig filters = new FiltersConfig(
- eFilters(path("", "a"), include("table")),
- entityFilter("", "aa"),
- entityFilter("", "aa"),
- entityFilter("", "b"),
- entityFilter("", "b"),
- entityFilter("", "b")
- );
-
- assertEquals(eFilters(path("", "a"), include("table")),
- filters.filter(path("", "a")));
- }
-
- @Test
- public void testFiltersJoinFilters() throws Exception {
- FiltersConfig filters = new FiltersConfig(
- eFilters(path("", "a"), include("table")),
- eFilters(path("", "a"), exclude("table")),
- entityFilter("", "aa"),
- entityFilter("", "aa")
- );
-
- assertEquals(eFilters(path("", "a"), list(include("table"), exclude("table"))),
- filters.filter(path("", "a")));
-
- assertEquals(entityFilter("", "aa"), filters.filter(path("", "aa")));
- }
-
- @Test
- public void testFiltersJoinFiltersWithNull() throws Exception {
- FiltersConfig filters = new FiltersConfig(
- eFilters(path("", "a"), include("table")),
- eFilters(path("", "a"), exclude("table")),
- eFilters(path("", "a"), null)
- );
-
- assertEquals(eFilters(path("", "a"), list(include("table"), exclude("table"))),
- filters.filter(path("", "a")));
- }
-
- @Test
- public void testFiltersTopLevelTables() throws Exception {
- FiltersConfig filters = new FiltersConfig(
- eFilters(path(null, null), include("TableName"))
- );
-
- assertEquals(eFilters(path(null, null), include("TableName")),
- filters.filter(path("", "APP")));
- }
-
- @Test
- public void testFiltersFor2Schemas() throws Exception {
- FiltersConfig filters = new FiltersConfig(
- eFilters(path(null, "schema_01"), include("TableName_01")),
- eFilters(path(null, "schema_02"), include("TableName_01"))
- );
-
- assertEquals(
- eFilters(path(null, "schema_01"), include("TableName_01")),
- filters.filter(path("", "schema_01")));
-
- assertEquals("In case we don't have filter that cover path we should return null filter ",
- eFilters(path("", "app"), null),
- filters.filter(path("", "app")));
- }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/FiltersFactory.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/FiltersFactory.java b/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/FiltersFactory.java
deleted file mode 100644
index 1ef7428..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/FiltersFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.
- */
-package org.apache.cayenne.access.loader.filters;
-
-/**
- * @since 3.2.
- */
-public class FiltersFactory {
-
- public static DbPath path(String catalog, String schema, String table) {
- return new DbPath(catalog, schema, table);
- }
-
- public static DbPath path(String catalog, String schema) {
- return new DbPath(catalog, schema);
- }
-
- public static DbPath path() {
- return new DbPath();
- }
-
- public static EntityFilters eFilters(DbPath path, Filter<String> tableFilter) {
- return new EntityFilters(path, tableFilter, null, null);
- }
- public static EntityFilters eFilters(DbPath path, Filter<String> table, Filter<String> column, Filter<String> proc) {
- return new EntityFilters(path, table, column, proc);
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/IncludeFilterTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/IncludeFilterTest.java b/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/IncludeFilterTest.java
index 2208c5c..c8cbe5b 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/IncludeFilterTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/IncludeFilterTest.java
@@ -21,17 +21,14 @@ package org.apache.cayenne.access.loader.filters;
import org.junit.Test;
-import static org.apache.cayenne.access.loader.filters.FilterFactory.pattern;
-import static org.junit.Assert.*;
-
public class IncludeFilterTest {
@Test
public void testIsInclude() throws Exception {
- IncludeFilter filter = new IncludeFilter(pattern("^v_.*$"));
- assertTrue(filter.isInclude("v_new_view"));
- assertFalse(filter.isInclude("new_view"));
- assertFalse(filter.isInclude("view"));
- assertFalse(filter.isInclude("girl"));
+// IncludeFilter filter = new IncludeFilter(pattern("^v_.*$"));
+// assertTrue(filter.isInclude("v_new_view"));
+// assertFalse(filter.isInclude("new_view"));
+// assertFalse(filter.isInclude("view"));
+// assertFalse(filter.isInclude("girl"));
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/PatternFilterTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/PatternFilterTest.java b/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/PatternFilterTest.java
new file mode 100644
index 0000000..5bd07d4
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/PatternFilterTest.java
@@ -0,0 +1,78 @@
+/*****************************************************************
+ * 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.
+ ****************************************************************/
+package org.apache.cayenne.access.loader.filters;
+
+import junit.framework.TestCase;
+
+public class PatternFilterTest extends TestCase {
+
+ public void testInclude() throws Exception {
+ PatternFilter filter = new PatternFilter()
+ .include("aaa")
+ .include("bbb");
+
+ assertTrue(filter.isInclude("aaa"));
+ assertTrue(filter.isInclude("bbb"));
+ assertFalse(filter.isInclude("aaaa"));
+ assertFalse(filter.isInclude("aa"));
+ assertFalse(filter.isInclude("abb"));
+
+ filter = new PatternFilter().include("^v_.*$");
+ assertTrue(filter.isInclude("v_new_view"));
+ assertFalse(filter.isInclude("new_view"));
+ assertFalse(filter.isInclude("view"));
+ assertFalse(filter.isInclude("girl"));
+ }
+
+ public void testExclude() throws Exception {
+ PatternFilter filter = new PatternFilter()
+ .exclude("aaa")
+ .exclude("bbb");
+
+ assertFalse(filter.isInclude("aaa"));
+ assertFalse(filter.isInclude("bbb"));
+ assertTrue(filter.isInclude("aaaa"));
+ assertTrue(filter.isInclude("aa"));
+ assertTrue(filter.isInclude("abb"));
+ }
+
+ public void testIncludeExclude() throws Exception {
+ PatternFilter filter = new PatternFilter()
+ .include("aa.*")
+ .exclude("aaa");
+
+ assertFalse(filter.isInclude("aaa"));
+ assertFalse(filter.isInclude("bbb"));
+ assertTrue(filter.isInclude("aaaa"));
+ assertTrue(filter.isInclude("aa"));
+ assertFalse(filter.isInclude("abb"));
+ }
+
+ public void testIncludeAllFilter() {
+ assertTrue(PatternFilter.INCLUDE_EVERYTHING.isInclude("qwe"));
+ assertTrue(PatternFilter.INCLUDE_EVERYTHING.isInclude(""));
+ assertTrue(PatternFilter.INCLUDE_EVERYTHING.isInclude(null));
+ }
+
+ public void testIncludeNoneFilter() {
+ assertFalse(PatternFilter.INCLUDE_NOTHING.isInclude("qwe"));
+ assertFalse(PatternFilter.INCLUDE_NOTHING.isInclude(""));
+ assertFalse(PatternFilter.INCLUDE_NOTHING.isInclude(null));
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/TableFilterTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/TableFilterTest.java b/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/TableFilterTest.java
new file mode 100644
index 0000000..4fad476
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/TableFilterTest.java
@@ -0,0 +1,91 @@
+/*****************************************************************
+ * 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.
+ ****************************************************************/
+package org.apache.cayenne.access.loader.filters;
+
+import junit.framework.TestCase;
+
+import java.util.TreeSet;
+import java.util.regex.Pattern;
+
+public class TableFilterTest extends TestCase {
+
+ public void testIncludeEverything() {
+ TableFilter filter = TableFilter.everything();
+
+ assertNotNull(filter.isIncludeTable("table"));
+ assertNotNull(filter.isIncludeTable("aaaa"));
+ assertNotNull(filter.isIncludeTable(""));
+ assertNotNull(filter.isIncludeTable("alex"));
+ }
+
+ public void testInclude() {
+ TreeSet<IncludeTableFilter> includes = new TreeSet<IncludeTableFilter>();
+ includes.add(new IncludeTableFilter("aaa"));
+ includes.add(new IncludeTableFilter("bb"));
+
+ TableFilter filter = new TableFilter(includes, new TreeSet<Pattern>(PatternFilter.PATTERN_COMPARATOR));
+
+ assertNotNull(filter.isIncludeTable("aaa"));
+ assertNull(filter.isIncludeTable("aa"));
+ assertNull(filter.isIncludeTable("aaaa"));
+
+ assertNotNull(filter.isIncludeTable("bb"));
+ assertNull(filter.isIncludeTable(""));
+ assertNull(filter.isIncludeTable("bbbb"));
+ }
+
+
+ public void testExclude() {
+ TreeSet<Pattern> excludes = new TreeSet<Pattern>(PatternFilter.PATTERN_COMPARATOR);
+ excludes.add(Pattern.compile("aaa"));
+ excludes.add(Pattern.compile("bb"));
+
+ TreeSet<IncludeTableFilter> includes = new TreeSet<IncludeTableFilter>();
+ includes.add(new IncludeTableFilter(null, PatternFilter.INCLUDE_EVERYTHING));
+
+ TableFilter filter = new TableFilter(includes, excludes);
+
+ assertNull(filter.isIncludeTable("aaa"));
+ assertNotNull(filter.isIncludeTable("aa"));
+ assertNotNull(filter.isIncludeTable("aaaa"));
+
+ assertNull(filter.isIncludeTable("bb"));
+ assertNotNull(filter.isIncludeTable(""));
+ assertNotNull(filter.isIncludeTable("bbbb"));
+ }
+
+ public void testIncludeExclude() {
+ TreeSet<Pattern> excludes = new TreeSet<Pattern>(PatternFilter.PATTERN_COMPARATOR);
+ excludes.add(Pattern.compile("aaa"));
+ excludes.add(Pattern.compile("bb"));
+
+ TreeSet<IncludeTableFilter> includes = new TreeSet<IncludeTableFilter>();
+ includes.add(new IncludeTableFilter("aa.*"));
+
+ TableFilter filter = new TableFilter(includes, excludes);
+
+ assertNull(filter.isIncludeTable("aaa"));
+ assertNotNull(filter.isIncludeTable("aa"));
+ assertNotNull(filter.isIncludeTable("aaaa"));
+
+ assertNull(filter.isIncludeTable("bb"));
+ assertNull(filter.isIncludeTable(""));
+ assertNull(filter.isIncludeTable("bbbb"));
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/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 9cac30b..07eebc7 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
@@ -20,8 +20,7 @@ package org.apache.cayenne.tools;
import java.io.File;
-import org.apache.cayenne.access.loader.filters.EntityFilters;
-import org.apache.cayenne.access.loader.filters.FilterFactory;
+import org.apache.cayenne.access.loader.filters.OldFilterConfigBridge;
import org.apache.cayenne.conn.DataSourceInfo;
import org.apache.cayenne.tools.dbimport.config.Catalog;
import org.apache.cayenne.tools.dbimport.config.ExcludeColumn;
@@ -51,7 +50,7 @@ public class DbImporterTask extends Task {
private final ReverseEngineering reverseEngineering = new ReverseEngineering();
- private final EntityFilters.Builder filterBuilder = new EntityFilters.Builder();
+ private final OldFilterConfigBridge filterBuilder = new OldFilterConfigBridge();
public DbImporterTask() {
config = new DbImportConfiguration();
@@ -64,7 +63,7 @@ public class DbImporterTask extends Task {
public void execute() {
config.setFiltersConfig(new FiltersConfigBuilder(reverseEngineering)
- .add(filterBuilder.build())
+ .add(filterBuilder)
.filtersConfig());
validateAttributes();
@@ -151,7 +150,7 @@ public class DbImporterTask extends Task {
}
public void setImportProcedures(boolean importProcedures) {
- filterBuilder.setProceduresFilters(importProcedures ? FilterFactory.TRUE : FilterFactory.NULL);
+ filterBuilder.setProceduresFilters(importProcedures);
}
public void setProcedurePattern(String procedurePattern) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/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 35fba65..ee39060 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
@@ -24,7 +24,7 @@ import org.apache.cayenne.access.loader.DbLoaderConfiguration;
import org.apache.cayenne.access.DbLoaderDelegate;
import org.apache.cayenne.access.loader.DefaultDbLoaderDelegate;
import org.apache.cayenne.access.loader.NameFilter;
-import org.apache.cayenne.access.loader.filters.DbPath;
+import org.apache.cayenne.access.loader.filters.CatalogFilter;
import org.apache.cayenne.access.loader.filters.FiltersConfig;
import org.apache.cayenne.configuration.DataNodeDescriptor;
import org.apache.cayenne.conn.DataSourceInfo;
@@ -256,12 +256,12 @@ public class DbImportConfiguration {
dataMap.setDefaultPackage(defaultPackage);
}
- List<DbPath> dbPaths = dbLoaderConfiguration.getFiltersConfig().getDbPaths();
- if (!dbPaths.isEmpty()) {
+ CatalogFilter[] catalogs = dbLoaderConfiguration.getFiltersConfig().catalogs;
+ if (catalogs.length > 0) {
// do not override default catalog of existing DataMap unless it is
// explicitly requested by the plugin caller, and the provided catalog is
// not a pattern
- String catalog = dbPaths.get(0).catalog;
+ String catalog = catalogs[0].name;
if (isNotEmpty(catalog) && catalog.indexOf('%') < 0) {
dataMap.setDefaultCatalog(catalog);
}
@@ -269,7 +269,7 @@ public class DbImportConfiguration {
// do not override default schema of existing DataMap unless it is
// explicitly requested by the plugin caller, and the provided schema is
// not a pattern
- String schema = dbPaths.get(0).schema;
+ String schema = catalogs[0].schemas[0].name;
if (isNotEmpty(schema) && schema.indexOf('%') < 0) {
dataMap.setDefaultSchema(schema);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Catalog.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Catalog.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Catalog.java
index 8a01502..e260e96 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Catalog.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Catalog.java
@@ -95,4 +95,16 @@ public class Catalog extends FilterContainer {
}
return true;
}
+
+ public StringBuilder toString(StringBuilder res, String prefix) {
+ res.append(prefix).append("Catalog: ").append(name).append("\n");
+
+ if (!isBlank(schemas)) {
+ for (Schema schema : schemas) {
+ schema.toString(res, prefix + " ");
+ }
+ }
+
+ return super.toString(res, prefix + " ");
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FilterContainer.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FilterContainer.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FilterContainer.java
index ff9ddd7..a69540b 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FilterContainer.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FilterContainer.java
@@ -113,4 +113,32 @@ public class FilterContainer {
&& includeTables.isEmpty() && excludeTables.isEmpty()
&& includeProcedures.isEmpty() && excludeProcedures.isEmpty();
}
+
+ public static boolean isBlank(Collection<?> collection) {
+ return collection == null || collection.isEmpty();
+ }
+
+ @Override
+ public String toString() {
+ return toString(new StringBuilder(), "").toString();
+ }
+
+ public StringBuilder toString(StringBuilder res, String prefix) {
+ appendCollection(res, prefix, includeTables);
+ appendCollection(res, prefix, excludeTables);
+ appendCollection(res, prefix, includeColumns);
+ appendCollection(res, prefix, excludeColumns);
+ appendCollection(res, prefix, includeProcedures);
+ appendCollection(res, prefix, excludeProcedures);
+
+ return res;
+ }
+
+ protected void appendCollection(StringBuilder res, String prefix, Collection<? extends PatternParam> collection) {
+ if (!isBlank(collection)) {
+ for (PatternParam item : collection) {
+ item.toString(res, prefix);
+ }
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilder.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilder.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilder.java
index 7b5819d..272db1b 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilder.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilder.java
@@ -18,20 +18,21 @@
****************************************************************/
package org.apache.cayenne.tools.dbimport.config;
-import static org.apache.cayenne.access.loader.filters.FilterFactory.NULL;
-import static org.apache.cayenne.access.loader.filters.FilterFactory.TRUE;
+import org.apache.cayenne.access.loader.filters.OldFilterConfigBridge;
+import org.apache.cayenne.access.loader.filters.CatalogFilter;
+import org.apache.cayenne.access.loader.filters.IncludeTableFilter;
+import org.apache.cayenne.access.loader.filters.SchemaFilter;
+import org.apache.cayenne.access.loader.filters.TableFilter;
+import org.apache.cayenne.access.loader.filters.FiltersConfig;
+import org.apache.cayenne.access.loader.filters.PatternFilter;
+import org.apache.cayenne.tools.ExcludeTable;
-import java.lang.reflect.Method;
import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.regex.Pattern;
-import org.apache.cayenne.access.loader.filters.DbPath;
-import org.apache.cayenne.access.loader.filters.EntityFilters;
-import org.apache.cayenne.access.loader.filters.Filter;
-import org.apache.cayenne.access.loader.filters.FilterFactory;
-import org.apache.cayenne.access.loader.filters.FiltersConfig;
-import org.apache.cayenne.access.loader.filters.ListFilter;
+import static org.apache.commons.lang.StringUtils.isBlank;
/**
* @since 3.2.
@@ -39,133 +40,328 @@ import org.apache.cayenne.access.loader.filters.ListFilter;
public final class FiltersConfigBuilder {
private final ReverseEngineering engineering;
- private final List<EntityFilters> filters = new LinkedList<EntityFilters>();
public FiltersConfigBuilder(ReverseEngineering engineering) {
this.engineering = engineering;
}
- public FiltersConfigBuilder add(EntityFilters filter) {
- if (!filter.isEmpty()) {
- this.filters.add(filter);
- } else if (!filter.getDbPath().equals(new DbPath())) {
- this.filters.add(defaultFilter(filter.getDbPath()));
+ public FiltersConfig filtersConfig() {
+ compact();
+
+ return new FiltersConfig(transformCatalogs(engineering.getCatalogs()));
+ }
+
+ private CatalogFilter[] transformCatalogs(Collection<Catalog> catalogs) {
+ CatalogFilter[] catalogFilters = new CatalogFilter[catalogs.size()];
+ int i = 0;
+ for (Catalog catalog : catalogs) {
+ catalogFilters[i] = new CatalogFilter(catalog.getName(), transformSchemas(catalog.getSchemas()));
+ i++;
}
+
+ return catalogFilters;
+ }
- return this;
+ private SchemaFilter[] transformSchemas(Collection<Schema> schemas) {
+ SchemaFilter[] schemaFilters = new SchemaFilter[schemas.size()];
+ int i = 0;
+ for (Schema schema : schemas) {
+ schemaFilters[i] = new SchemaFilter(schema.getName(),
+ new TableFilter(transformIncludeTable(schema.getIncludeTables()),
+ transformExcludeTable(schema.getExcludeTables())),
+ transform(schema.getIncludeProcedures(), schema.getExcludeProcedures()));
+ i++;
+ }
+
+ return schemaFilters;
}
- public FiltersConfig filtersConfig() {
- DbPath path = new DbPath();
+ private SortedSet<Pattern> transformExcludeTable(Collection<ExcludeTable> excludeTables) {
+ SortedSet<Pattern> res = new TreeSet<Pattern>(PatternFilter.PATTERN_COMPARATOR);
+ for (ExcludeTable exclude : excludeTables) {
+ res.add(PatternFilter.pattern(exclude.getPattern()));
+ }
+ return res;
+ }
+
+ private SortedSet<IncludeTableFilter> transformIncludeTable(Collection<IncludeTable> includeTables) {
+ SortedSet<IncludeTableFilter> includeTableFilters = new TreeSet<IncludeTableFilter>();
+ for (IncludeTable includeTable : includeTables) {
+ includeTableFilters.add(new IncludeTableFilter(includeTable.getPattern(),
+ transform(includeTable.getIncludeColumns(), includeTable.getExcludeColumns())));
+ }
+
+ return includeTableFilters;
+ }
- filters.addAll(processFilters(path, engineering));
- filters.addAll(processSchemas(path, engineering.getSchemas()));
- filters.addAll(processCatalog(path, engineering.getCatalogs()));
+ private PatternFilter transform(Collection<? extends PatternParam> include,
+ Collection<? extends PatternParam> exclude) {
+ PatternFilter filter = new PatternFilter();
- if (filters.isEmpty()) {
- filters.add(defaultFilter(path));
+ for (PatternParam patternParam : include) {
+ filter.include(patternParam.getPattern());
}
- return new FiltersConfig(filters);
+
+ for (PatternParam patternParam : exclude) {
+ filter.exclude(patternParam.getPattern());
+ }
+
+ return filter;
+
+ }
+
+ /**
+ * Goal of this method transform ReverseEngineering config into more regular form
+ * From
+ * ReverseEngineering
+ * Catalog
+ * Schema
+ * IncludeTable
+ * IncludeColumn
+ * ExcludeColumn
+ * ExcludeTable
+ * IncludeProcedures
+ * ExcludeProcedures
+ * IncludeColumn
+ * ExcludeColumn
+ * IncludeTable
+ * IncludeColumn
+ * ExcludeColumn
+ * ExcludeTable
+ * IncludeProcedures
+ * ExcludeProcedures
+ * IncludeColumn
+ * ExcludeColumn
+ * Schema
+ * IncludeTable
+ * IncludeColumn
+ * ExcludeColumn
+ * ExcludeTable
+ * IncludeProcedures
+ * ExcludeProcedures
+ * IncludeColumn
+ * ExcludeColumn
+ * IncludeTable
+ * IncludeColumn
+ * ExcludeColumn
+ * ExcludeTable
+ * IncludeProcedures
+ * ExcludeProcedures
+ * IncludeColumn
+ * ExcludeColumn
+ *
+ * Into
+ * ReverseEngineering
+ * Catalog
+ * Schema
+ * IncludeTable
+ * IncludeColumn
+ * ExcludeColumn
+ * ExcludeTable
+ * IncludeProcedures
+ * ExcludeProcedures
+ *
+ *
+ * */
+ public void compact() {
+ addEmptyElements();
+
+ compactColumnFilters();
+ compactTableFilter();
+ compactProcedureFilter();
+ compactSchemas();
}
- private EntityFilters defaultFilter(DbPath path) {
- return new EntityFilters(path, TRUE, TRUE, NULL);
+ private void compactSchemas() {
+ for (Catalog catalog : engineering.getCatalogs()) {
+ catalog.getSchemas().addAll(engineering.getSchemas());
+ engineering.setSchemas(null);
+ }
}
- private Collection<? extends EntityFilters> processSchemas(DbPath root, Collection<Schema> schemas) {
- List<EntityFilters> filters = new LinkedList<EntityFilters>();
- for (Schema schema : schemas) {
- DbPath path = new DbPath(root.catalog, schema.getName());
- List<EntityFilters> schemaFilters = processFilters(path, schema);
- if (schemaFilters.isEmpty()) {
- schemaFilters.add(defaultFilter(path));
+ private void compactProcedureFilter() {
+ Collection<IncludeProcedure> engIncludeProcedures = engineering.getIncludeProcedures();
+ Collection<ExcludeProcedure> engExcludeProcedures = engineering.getExcludeProcedures();
+
+ engineering.setIncludeProcedures(null);
+ engineering.setExcludeProcedures(null);
+
+ for (Catalog catalog : engineering.getCatalogs()) {
+ Collection<IncludeProcedure> catalogIncludeProcedures = catalog.getIncludeProcedures();
+ Collection<ExcludeProcedure> catalogExcludeProcedures = catalog.getExcludeProcedures();
+
+ catalog.setIncludeProcedures(null);
+ catalog.setExcludeProcedures(null);
+
+ for (Schema schema : catalog.getSchemas()) {
+ schema.getIncludeProcedures().addAll(engIncludeProcedures);
+ schema.getIncludeProcedures().addAll(catalogIncludeProcedures);
+
+ schema.getExcludeProcedures().addAll(engExcludeProcedures);
+ schema.getExcludeProcedures().addAll(catalogExcludeProcedures);
}
+ }
- filters.addAll(schemaFilters);
+ for (Schema schema : engineering.getSchemas()) {
+ schema.getIncludeProcedures().addAll(engIncludeProcedures);
+ schema.getExcludeProcedures().addAll(engExcludeProcedures);
}
+ }
+
+ private void compactTableFilter() {
+ Collection<IncludeTable> engIncludeTables = engineering.getIncludeTables();
+ Collection<ExcludeTable> engExcludeTables = engineering.getExcludeTables();
+
+ engineering.setIncludeTables(null);
+ engineering.setExcludeTables(null);
+
+ for (Catalog catalog : engineering.getCatalogs()) {
+ Collection<IncludeTable> catalogIncludeTables = catalog.getIncludeTables();
+ Collection<ExcludeTable> catalogExcludeTables = catalog.getExcludeTables();
- return filters;
+ catalog.setIncludeTables(null);
+ catalog.setExcludeTables(null);
+
+ for (Schema schema : catalog.getSchemas()) {
+ schema.getIncludeTables().addAll(engIncludeTables);
+ schema.getIncludeTables().addAll(catalogIncludeTables);
+
+ schema.getExcludeTables().addAll(engExcludeTables);
+ schema.getExcludeTables().addAll(catalogExcludeTables);
+ }
+ }
+
+ for (Schema schema : engineering.getSchemas()) {
+ schema.getIncludeTables().addAll(engIncludeTables);
+ schema.getExcludeTables().addAll(engExcludeTables);
+ }
}
- private Collection<? extends EntityFilters> processCatalog(DbPath root, Collection<Catalog> catalogs) {
- List<EntityFilters> filters = new LinkedList<EntityFilters>();
- for (Catalog catalog: catalogs) {
- DbPath path = new DbPath(catalog.getName());
+ private void compactColumnFilters() {
+ Collection<IncludeColumn> engIncludeColumns = engineering.getIncludeColumns();
+ Collection<ExcludeColumn> engExcludeColumns = engineering.getExcludeColumns();
+
+ engineering.setIncludeColumns(null);
+ engineering.setExcludeColumns(null);
+
+ for (Catalog catalog : engineering.getCatalogs()) {
+ Collection<IncludeColumn> catalogIncludeColumns = catalog.getIncludeColumns();
+ Collection<ExcludeColumn> catalogExcludeColumns = catalog.getExcludeColumns();
+
+ catalog.setIncludeColumns(null);
+ catalog.setExcludeColumns(null);
+
+ for (Schema schema : catalog.getSchemas()) {
+ Collection<IncludeColumn> schemaIncludeColumns = schema.getIncludeColumns();
+ Collection<ExcludeColumn> schemaExcludeColumns = schema.getExcludeColumns();
+
+ schema.setIncludeColumns(null);
+ schema.setExcludeColumns(null);
- List<EntityFilters> catalogFilters = new LinkedList<EntityFilters>();
- catalogFilters.addAll(processFilters(path, catalog));
- catalogFilters.addAll(processSchemas(path, catalog.getSchemas()));
+ for (IncludeTable includeTable : schema.getIncludeTables()) {
+ includeTable.getIncludeColumns().addAll(engIncludeColumns);
+ includeTable.getIncludeColumns().addAll(catalogIncludeColumns);
+ includeTable.getIncludeColumns().addAll(schemaIncludeColumns);
- if (catalogFilters.isEmpty()) {
- catalogFilters.add(defaultFilter(path));
+ includeTable.getExcludeColumns().addAll(engExcludeColumns);
+ includeTable.getExcludeColumns().addAll(catalogExcludeColumns);
+ includeTable.getExcludeColumns().addAll(schemaExcludeColumns);
+ }
}
- filters.addAll(catalogFilters);
+ for (IncludeTable includeTable : catalog.getIncludeTables()) {
+ includeTable.getIncludeColumns().addAll(engIncludeColumns);
+ includeTable.getIncludeColumns().addAll(catalogIncludeColumns);
+
+ includeTable.getExcludeColumns().addAll(engExcludeColumns);
+ includeTable.getExcludeColumns().addAll(catalogExcludeColumns);
+ }
}
- return filters;
- }
+ for (Schema schema : engineering.getSchemas()) {
+ Collection<IncludeColumn> schemaIncludeColumns = schema.getIncludeColumns();
+ Collection<ExcludeColumn> schemaExcludeColumns = schema.getExcludeColumns();
- private List<EntityFilters> processFilters(DbPath root, FilterContainer container) {
- LinkedList<EntityFilters> res = new LinkedList<EntityFilters>();
- res.addAll(processTableFilters(root, container.getIncludeTables()));
+ schema.setIncludeColumns(null);
+ schema.setExcludeColumns(null);
- EntityFilters filter = new EntityFilters(
- root,
- processIncludes(container.getIncludeTables()).join(processExcludes(container.getExcludeTables())),
- processIncludes(container.getIncludeColumns()).join(processExcludes(container.getExcludeColumns())),
- processIncludes(container.getIncludeProcedures()).join(processExcludes(container.getExcludeProcedures()))
- );
+ for (IncludeTable includeTable : schema.getIncludeTables()) {
+ includeTable.getIncludeColumns().addAll(engIncludeColumns);
+ includeTable.getIncludeColumns().addAll(schemaIncludeColumns);
- if (!filter.isEmpty()) {
- res.add(filter);
+ includeTable.getExcludeColumns().addAll(engExcludeColumns);
+ includeTable.getExcludeColumns().addAll(schemaExcludeColumns);
+ }
}
- return res;
+ for (IncludeTable includeTable : engineering.getIncludeTables()) {
+ includeTable.getIncludeColumns().addAll(engIncludeColumns);
+ includeTable.getExcludeColumns().addAll(engExcludeColumns);
+ }
}
- private List<EntityFilters> processTableFilters(DbPath root, Collection<IncludeTable> tables) {
- List<EntityFilters> list = new LinkedList<EntityFilters>();
- for (IncludeTable includeTable : tables) {
- Filter<String> filter = TRUE
- .join(processIncludes(includeTable.getIncludeColumns()))
- .join(processExcludes(includeTable.getExcludeColumns()));
+ private void addEmptyElements() {
+ if (engineering.getCatalogs().isEmpty()) {
+ engineering.addCatalog(new Catalog());
+ }
+
+ for (Catalog catalog : engineering.getCatalogs()) {
+ if (catalog.getSchemas().isEmpty()
+ && engineering.getSchemas().isEmpty()) {
+ catalog.addSchema(new Schema());
+ }
- DbPath dbPath = new DbPath(root.catalog, root.schema, includeTable.getPattern());
- list.add(new EntityFilters(dbPath, NULL, filter, NULL));
+ for (Schema schema : catalog.getSchemas()) {
+ if (schema.getIncludeTables().isEmpty()
+ && catalog.getIncludeTables().isEmpty()
+ && engineering.getIncludeTables().isEmpty()) {
+
+ schema.addIncludeTable(new IncludeTable());
+ }
+ }
}
- return list;
- }
- private Filter<String> processIncludes(Collection<? extends PatternParam> filters) {
- return processFilters("include", filters);
- }
+ for (Schema schema : engineering.getSchemas()) {
+ if (schema.getIncludeTables().isEmpty()
+ && engineering.getIncludeTables().isEmpty()) {
- private Filter<String> processExcludes(Collection<? extends PatternParam> excludeProcedures) {
- return processFilters("exclude", excludeProcedures);
+ schema.addIncludeTable(new IncludeTable());
+ }
+ }
}
- private Filter<String> processFilters(String factoryMethodName, Collection<? extends PatternParam> includeProcedures) {
- Method factoryMethod;
- try {
- factoryMethod = FilterFactory.class.getMethod(factoryMethodName, String.class);
- } catch (NoSuchMethodException e) {
- throw new IllegalStateException(e);
- }
-
- Collection<Filter<String>> filters = new LinkedList<Filter<String>>();
- for (PatternParam includeProcedure : includeProcedures) {
- try {
- filters.add((Filter<String>) factoryMethod.invoke(FilterFactory.class, includeProcedure.getPattern()));
- } catch (Exception e) {
- // TODO log / process exact parsing exception
- e.printStackTrace();
- }
+ public FiltersConfigBuilder add(OldFilterConfigBridge build) {
+ if (!isBlank(build.catalog())) {
+ engineering.addCatalog(new Catalog(build.catalog()));
+ }
+
+ if (!isBlank(build.schema())) {
+ engineering.addSchema(new Schema(build.schema()));
}
- if (filters.isEmpty()) {
- return NULL;
+ if (!isBlank(build.getIncludeTableFilters())) {
+ engineering.addIncludeTable(new IncludeTable(build.getIncludeTableFilters()));
}
- return new ListFilter<String>(filters);
+ if (!isBlank(build.getExcludeTableFilters())) {
+ engineering.addExcludeTable(new ExcludeTable(build.getExcludeTableFilters()));
+ }
+
+ if (!isBlank(build.getIncludeColumnFilters())) {
+ engineering.addIncludeColumn(new IncludeColumn(build.getIncludeColumnFilters()));
+ }
+ if (!isBlank(build.getExcludeColumnFilters())) {
+ engineering.addExcludeColumn(new ExcludeColumn(build.getExcludeColumnFilters()));
+ }
+
+ if (build.isLoadProcedures()) {
+ if (!isBlank(build.getIncludeProceduresFilters())) {
+ engineering.addIncludeProcedure(new IncludeProcedure(build.getIncludeProceduresFilters()));
+ }
+ if (!isBlank(build.getExcludeProceduresFilters())) {
+ engineering.addExcludeProcedure(new ExcludeProcedure(build.getExcludeProceduresFilters()));
+ }
+ }
+
+ return this;
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/IncludeTable.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/IncludeTable.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/IncludeTable.java
index e627eea..493eb88 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/IncludeTable.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/IncludeTable.java
@@ -21,6 +21,7 @@ package org.apache.cayenne.tools.dbimport.config;
import java.util.Collection;
import java.util.LinkedList;
+import static org.apache.commons.lang.StringUtils.isBlank;
import static org.apache.commons.lang.StringUtils.join;
/**
@@ -63,15 +64,22 @@ public class IncludeTable extends PatternParam {
}
@Override
- public String toString() {
- String str = "+(" + getPattern() + ") ";
+ public StringBuilder toString(StringBuilder res, String s) {
+ super.toString(res, s);
+
+ String prefix = s + " ";
if (includeColumns != null && !includeColumns.isEmpty()) {
- str += "+Columns(" + join(includeColumns, ", ") + ") ";
+ for (IncludeColumn includeColumn : includeColumns) {
+ includeColumn.toString(res, prefix);
+ }
}
if (excludeColumns != null && !excludeColumns.isEmpty()) {
- str += "-Columns(" + join(excludeColumns, ", ") + ") ";
+ for (ExcludeColumn excludeColumn : excludeColumns) {
+ excludeColumn.toString(res, prefix);
+ }
}
- return str;
+
+ return res;
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/PatternParam.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/PatternParam.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/PatternParam.java
index 3d8297c..eaab613 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/PatternParam.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/PatternParam.java
@@ -69,6 +69,11 @@ public class PatternParam {
@Override
public String toString() {
- return "RegExp(" + pattern + ")";
+ return toString(new StringBuilder(), "").toString();
+ }
+
+ public StringBuilder toString(StringBuilder res, String s) {
+ res.append(s).append(getClass().getSimpleName()).append(": ").append(pattern).append("\n");
+ return res;
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/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 8f4277b..2aabf71 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
@@ -57,4 +57,23 @@ public class ReverseEngineering extends FilterContainer {
this.catalogs.add(catalog);
}
+ @Override
+ public String toString() {
+ StringBuilder res = new StringBuilder();
+ res.append("ReverseEngineering: ").append("\n");
+
+ if (!isBlank(catalogs)) {
+ for (Catalog catalog : catalogs) {
+ catalog.toString(res, " ");
+ }
+ }
+
+ if (!isBlank(schemas)) {
+ for (Schema schema : schemas) {
+ schema.toString(res, " ");
+ }
+ }
+
+ return super.toString(res, " ").toString();
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Schema.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Schema.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Schema.java
index 1a399f0..a528eee 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Schema.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Schema.java
@@ -55,4 +55,11 @@ public class Schema extends FilterContainer {
setName(name);
}
+
+ @Override
+ public StringBuilder toString(StringBuilder res, String prefix) {
+ res.append(prefix).append("Schema: ").append(name).append("\n");
+
+ return super.toString(res, prefix + " ");
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilderTest.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilderTest.java b/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilderTest.java
index 6861e2b..0e723e0 100644
--- a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilderTest.java
+++ b/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilderTest.java
@@ -19,20 +19,244 @@
package org.apache.cayenne.tools.dbimport.config;
-import org.apache.cayenne.access.loader.filters.DbPath;
-import org.apache.cayenne.access.loader.filters.EntityFilters;
-import org.apache.cayenne.access.loader.filters.FiltersConfig;
import org.apache.cayenne.tools.ExcludeTable;
import org.junit.Test;
-import static org.apache.cayenne.access.loader.filters.FilterFactory.*;
-import static org.apache.cayenne.access.loader.filters.FiltersFactory.*;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
public class FiltersConfigBuilderTest {
@Test
+ public void testCompact_01() {
+ ReverseEngineering engineering = new ReverseEngineering();
+ engineering.addIncludeTable(new IncludeTable("table1"));
+ engineering.addIncludeTable(new IncludeTable("table2"));
+ engineering.addIncludeTable(new IncludeTable("table3"));
+
+ engineering.addIncludeColumn(new IncludeColumn("includeColumn"));
+
+ FiltersConfigBuilder builder = new FiltersConfigBuilder(engineering);
+ builder.compact();
+ assertEquals(
+ "ReverseEngineering: \n" +
+ " Catalog: null\n" +
+ " Schema: null\n" +
+ " IncludeTable: table1\n" +
+ " IncludeColumn: includeColumn\n" +
+ " IncludeTable: table2\n" +
+ " IncludeColumn: includeColumn\n" +
+ " IncludeTable: table3\n" +
+ " IncludeColumn: includeColumn\n", engineering.toString());
+ }
+
+ @Test
+ public void testCompact_02() {
+ ReverseEngineering engineering = new ReverseEngineering();
+ engineering.addCatalog(new Catalog("catalogName"));
+ engineering.addSchema(new Schema("schemaName01"));
+ engineering.addSchema(new Schema("schemaName02"));
+
+ engineering.addIncludeTable(new IncludeTable("table1"));
+ engineering.addExcludeTable(new ExcludeTable("table2"));
+
+ engineering.addIncludeColumn(new IncludeColumn("includeColumn"));
+
+ FiltersConfigBuilder builder = new FiltersConfigBuilder(engineering);
+ builder.compact();
+ assertEquals(
+ "ReverseEngineering: \n" +
+ " Catalog: catalogName\n" +
+ " Schema: schemaName01\n" +
+ " IncludeTable: table1\n" +
+ " IncludeColumn: includeColumn\n" +
+ " ExcludeTable: table2\n" +
+ " Schema: schemaName02\n" +
+ " IncludeTable: table1\n" +
+ " IncludeColumn: includeColumn\n" +
+ " ExcludeTable: table2\n", engineering.toString());
+ }
+
+
+ @Test
+ public void testCompact_03() {
+ ReverseEngineering engineering = new ReverseEngineering();
+ engineering.addCatalog(new Catalog("APP"));
+
+ engineering.addExcludeTable(new ExcludeTable("SYS_.*"));
+ engineering.addExcludeColumn(new ExcludeColumn("calculated_.*"));
+
+ FiltersConfigBuilder builder = new FiltersConfigBuilder(engineering);
+ builder.compact();
+ assertEquals(
+ "ReverseEngineering: \n" +
+ " Catalog: APP\n" +
+ " Schema: null\n" +
+ " IncludeTable: null\n" +
+ " ExcludeColumn: calculated_.*\n" +
+ " ExcludeTable: SYS_.*\n", engineering.toString());
+ }
+
+ @Test
+ public void testCompact_04() {
+ ReverseEngineering engineering = new ReverseEngineering();
+ engineering.addSchema(new Schema("s"));
+
+ FiltersConfigBuilder builder = new FiltersConfigBuilder(engineering);
+ builder.compact();
+ assertEquals(
+ "ReverseEngineering: \n" +
+ " Catalog: null\n" +
+ " Schema: s\n" +
+ " IncludeTable: null\n", engineering.toString());
+ }
+
+ @Test
+ public void testCompact_full() {
+ ReverseEngineering engineering = new ReverseEngineering();
+ Catalog cat01 = new Catalog("cat_01");
+
+ Schema sch01 = new Schema("sch_01");
+
+ sch01.addIncludeTable(includeTable("t1", "c11", "c12"));
+ sch01.addExcludeTable(new ExcludeTable("t2"));
+ sch01.addIncludeProcedure(new IncludeProcedure("p1"));
+ sch01.addExcludeProcedure(new ExcludeProcedure("p2"));
+ sch01.addIncludeColumn(new IncludeColumn("c_x1"));
+ sch01.addExcludeColumn(new ExcludeColumn("c_x2"));
+
+ cat01.addSchema(sch01);
+
+ cat01.addIncludeTable(includeTable("t3", "c31", "c32"));
+ cat01.addExcludeTable(new ExcludeTable("t4"));
+ cat01.addIncludeProcedure(new IncludeProcedure("p3"));
+ cat01.addExcludeProcedure(new ExcludeProcedure("p4"));
+ cat01.addIncludeColumn(new IncludeColumn("c_xx1"));
+ cat01.addExcludeColumn(new ExcludeColumn("c_xx2"));
+
+ engineering.addCatalog(cat01);
+
+ Schema sch02 = new Schema("sch_02");
+
+ sch02.addIncludeTable(includeTable("t5", "c51", "c52"));
+ sch02.addExcludeTable(new ExcludeTable("t6"));
+ sch02.addIncludeProcedure(new IncludeProcedure("p5"));
+ sch02.addExcludeProcedure(new ExcludeProcedure("p6"));
+ sch02.addIncludeColumn(new IncludeColumn("c2_x1"));
+ sch02.addExcludeColumn(new ExcludeColumn("c2_x2"));
+
+ engineering.addSchema(sch02);
+
+ engineering.addIncludeTable(includeTable("t7", "c71", "c72"));
+ engineering.addExcludeTable(new ExcludeTable("t8"));
+ engineering.addIncludeProcedure(new IncludeProcedure("p7"));
+ engineering.addExcludeProcedure(new ExcludeProcedure("p8"));
+ engineering.addIncludeColumn(new IncludeColumn("c_xxx1"));
+ engineering.addExcludeColumn(new ExcludeColumn("c_xxx2"));
+
+ FiltersConfigBuilder builder = new FiltersConfigBuilder(engineering);
+ assertEquals("Original ReverseEngineering should be",
+ "ReverseEngineering: \n" +
+ " Catalog: cat_01\n" +
+ " Schema: sch_01\n" +
+ " IncludeTable: t1\n" +
+ " IncludeColumn: c11\n" +
+ " ExcludeColumn: c12\n" +
+ " ExcludeTable: t2\n" +
+ " IncludeColumn: c_x1\n" +
+ " ExcludeColumn: c_x2\n" +
+ " IncludeProcedure: p1\n" +
+ " ExcludeProcedure: p2\n" +
+ " IncludeTable: t3\n" +
+ " IncludeColumn: c31\n" +
+ " ExcludeColumn: c32\n" +
+ " ExcludeTable: t4\n" +
+ " IncludeColumn: c_xx1\n" +
+ " ExcludeColumn: c_xx2\n" +
+ " IncludeProcedure: p3\n" +
+ " ExcludeProcedure: p4\n" +
+ " Schema: sch_02\n" +
+ " IncludeTable: t5\n" +
+ " IncludeColumn: c51\n" +
+ " ExcludeColumn: c52\n" +
+ " ExcludeTable: t6\n" +
+ " IncludeColumn: c2_x1\n" +
+ " ExcludeColumn: c2_x2\n" +
+ " IncludeProcedure: p5\n" +
+ " ExcludeProcedure: p6\n" +
+ " IncludeTable: t7\n" +
+ " IncludeColumn: c71\n" +
+ " ExcludeColumn: c72\n" +
+ " ExcludeTable: t8\n" +
+ " IncludeColumn: c_xxx1\n" +
+ " ExcludeColumn: c_xxx2\n" +
+ " IncludeProcedure: p7\n" +
+ " ExcludeProcedure: p8\n", engineering.toString());
+
+
+ builder.compact();
+ assertEquals(
+ "ReverseEngineering: \n" +
+ " Catalog: cat_01\n" +
+ " Schema: sch_01\n" +
+ " IncludeTable: t1\n" +
+ " IncludeColumn: c11\n" +
+ " IncludeColumn: c_xxx1\n" +
+ " IncludeColumn: c_xx1\n" +
+ " IncludeColumn: c_x1\n" +
+ " ExcludeColumn: c12\n" +
+ " ExcludeColumn: c_xxx2\n" +
+ " ExcludeColumn: c_xx2\n" +
+ " ExcludeColumn: c_x2\n" +
+ " IncludeTable: t7\n" +
+ " IncludeColumn: c71\n" +
+ " IncludeColumn: c_xxx1\n" +
+ " ExcludeColumn: c72\n" +
+ " ExcludeColumn: c_xxx2\n" +
+ " IncludeTable: t3\n" +
+ " IncludeColumn: c31\n" +
+ " IncludeColumn: c_xxx1\n" +
+ " IncludeColumn: c_xx1\n" +
+ " ExcludeColumn: c32\n" +
+ " ExcludeColumn: c_xxx2\n" +
+ " ExcludeColumn: c_xx2\n" +
+ " ExcludeTable: t2\n" +
+ " ExcludeTable: t8\n" +
+ " ExcludeTable: t4\n" +
+ " IncludeProcedure: p1\n" +
+ " IncludeProcedure: p7\n" +
+ " IncludeProcedure: p3\n" +
+ " ExcludeProcedure: p2\n" +
+ " ExcludeProcedure: p8\n" +
+ " ExcludeProcedure: p4\n" +
+ " Schema: sch_02\n" +
+ " IncludeTable: t5\n" +
+ " IncludeColumn: c51\n" +
+ " IncludeColumn: c_xxx1\n" +
+ " IncludeColumn: c2_x1\n" +
+ " ExcludeColumn: c52\n" +
+ " ExcludeColumn: c_xxx2\n" +
+ " ExcludeColumn: c2_x2\n" +
+ " IncludeTable: t7\n" +
+ " IncludeColumn: c71\n" +
+ " IncludeColumn: c_xxx1\n" +
+ " ExcludeColumn: c72\n" +
+ " ExcludeColumn: c_xxx2\n" +
+ " ExcludeTable: t6\n" +
+ " ExcludeTable: t8\n" +
+ " IncludeProcedure: p5\n" +
+ " IncludeProcedure: p7\n" +
+ " ExcludeProcedure: p6\n" +
+ " ExcludeProcedure: p8\n", engineering.toString());
+ }
+
+ protected IncludeTable includeTable(String name, String incCol, String excCol) {
+ IncludeTable incTable01 = new IncludeTable(name);
+ incTable01.addIncludeColumn(new IncludeColumn(incCol));
+ incTable01.addExcludeColumn(new ExcludeColumn(excCol));
+ return incTable01;
+ }
+
+ /*@Test
public void testEmptyDbEntitiesFilters() throws Exception {
ReverseEngineering engineering = new ReverseEngineering();
FiltersConfig executions = new FiltersConfigBuilder(engineering).filtersConfig();
@@ -150,5 +374,5 @@ public class FiltersConfigBuilderTest {
EntityFilters filter = builder.filtersConfig().filter(path);
assertFalse(filter.isEmpty());
- }
+ }*/
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
index 64fc8c6..feb4a49 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
@@ -19,25 +19,12 @@
package org.apache.cayenne.modeler.dialog.db;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-import javax.swing.JFrame;
-import javax.swing.JOptionPane;
-import javax.swing.SwingUtilities;
-
import org.apache.cayenne.CayenneException;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DbLoader;
import org.apache.cayenne.access.DbLoaderDelegate;
import org.apache.cayenne.access.loader.DbLoaderConfiguration;
-import org.apache.cayenne.access.loader.filters.EntityFilters;
-import org.apache.cayenne.access.loader.filters.FilterFactory;
-import org.apache.cayenne.access.loader.filters.FiltersConfig;
+import org.apache.cayenne.access.loader.filters.OldFilterConfigBridge;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.configuration.event.DataMapEvent;
import org.apache.cayenne.dba.DbAdapter;
@@ -60,7 +47,13 @@ import org.apache.cayenne.util.Util;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import static org.apache.cayenne.access.loader.filters.FilterFactory.NULL;
+import javax.swing.*;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
/**
* Stateful helper class that encapsulates access to DbLoader.
@@ -89,7 +82,7 @@ public class DbLoaderHelper {
protected boolean meaningfulPk;
protected List<String> schemas;
- private final EntityFilters.Builder filterBuilder = new EntityFilters.Builder();
+ private final OldFilterConfigBridge filterBuilder = new OldFilterConfigBridge();
protected String loadStatusNote;
@@ -176,7 +169,7 @@ public class DbLoaderHelper {
this.filterBuilder.schema(dialog.getSelectedSchema());
this.filterBuilder.includeTables(dialog.getTableNamePattern());
- this.filterBuilder.setProceduresFilters(dialog.isLoadingProcedures() ? FilterFactory.TRUE : FilterFactory.NULL);
+ this.filterBuilder.setProceduresFilters(dialog.isLoadingProcedures());
this.filterBuilder.includeProcedures(dialog.getProcedureNamePattern());
this.meaningfulPk = dialog.isMeaningfulPk();
@@ -387,14 +380,15 @@ public class DbLoaderHelper {
}
private void importingProcedures() {
- if (!filterBuilder.proceduresFilters().equals(NULL)) {
+ if (!filterBuilder.isLoadProcedures()) {
return;
}
loadStatusNote = "Importing procedures...";
try {
DbLoaderConfiguration configuration = new DbLoaderConfiguration();
- configuration.setFiltersConfig(new FiltersConfig(filterBuilder.build()));
+ configuration.setFiltersConfig(new FiltersConfigBuilder(new ReverseEngineering())
+ .add(filterBuilder).filtersConfig());
loader.loadProcedures(dataMap, new DbLoaderConfiguration());
} catch (Throwable th) {
@@ -411,7 +405,7 @@ public class DbLoaderHelper {
DbLoaderConfiguration configuration = new DbLoaderConfiguration();
configuration.setFiltersConfig(new FiltersConfigBuilder(new ReverseEngineering())
- .add(filterBuilder.build()).filtersConfig());
+ .add(filterBuilder).filtersConfig());
loader.load(dataMap, configuration);
/**
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f438729f/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java
index dc05932..decc675 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java
@@ -19,44 +19,17 @@
package org.apache.cayenne.modeler.dialog.db;
-import java.awt.Component;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.sql.DataSource;
-import javax.swing.JFileChooser;
-import javax.swing.JOptionPane;
-import javax.swing.WindowConstants;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-
import org.apache.cayenne.access.loader.DbLoaderConfiguration;
-import org.apache.cayenne.access.loader.filters.DbPath;
-import org.apache.cayenne.access.loader.filters.EntityFilters;
+import org.apache.cayenne.access.loader.filters.TableFilter;
import org.apache.cayenne.access.loader.filters.FiltersConfig;
+import org.apache.cayenne.access.loader.filters.PatternFilter;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.configuration.DataNodeDescriptor;
import org.apache.cayenne.dba.JdbcAdapter;
-import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.DbRelationship;
-import org.apache.cayenne.map.ObjAttribute;
-import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.map.ObjRelationship;
+import org.apache.cayenne.map.*;
import org.apache.cayenne.map.event.EntityEvent;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.merge.AbstractToDbToken;
-import org.apache.cayenne.merge.DbMerger;
-import org.apache.cayenne.merge.ExecutingMergerContext;
-import org.apache.cayenne.merge.MergeDirection;
-import org.apache.cayenne.merge.MergerContext;
-import org.apache.cayenne.merge.MergerToken;
-import org.apache.cayenne.merge.ModelMergeDelegate;
+import org.apache.cayenne.merge.*;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.dialog.ValidationResultBrowser;
import org.apache.cayenne.modeler.event.AttributeDisplayEvent;
@@ -70,6 +43,18 @@ import org.apache.cayenne.swing.BindingBuilder;
import org.apache.cayenne.swing.ObjectBinding;
import org.apache.cayenne.validation.ValidationResult;
+import javax.sql.DataSource;
+import javax.swing.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import java.awt.*;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Iterator;
+import java.util.List;
+
public class MergerOptions extends CayenneController {
protected MergerOptionsView view;
@@ -170,7 +155,7 @@ public class MergerOptions extends CayenneController {
merger = new DbMerger(adapter.mergerFactory());
DbLoaderConfiguration config = new DbLoaderConfiguration();
- config.setFiltersConfig(new FiltersConfig(new EntityFilters(new DbPath(null, defaultSchema))));
+ config.setFiltersConfig(FiltersConfig.create(null, defaultSchema, TableFilter.everything(), PatternFilter.INCLUDE_NOTHING));
List<MergerToken> mergerTokens = merger.createMergeTokens(
connectionInfo.makeDataSource(getApplication().getClassLoadingService()),