You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2018/01/19 12:28:10 UTC
[1/5] cayenne git commit: CAY-2391 add excludeRelationship to dbImport
Repository: cayenne
Updated Branches:
refs/heads/master 1e8ed89f9 -> 84687a787
CAY-2391 add excludeRelationship to dbImport
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/66af8b36
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/66af8b36
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/66af8b36
Branch: refs/heads/master
Commit: 66af8b36f9a4881ecf6b5896e7ce862cccd365db
Parents: e0b9ebe
Author: Arseni Bulatski <an...@gmail.com>
Authored: Fri Jan 12 12:10:27 2018 +0300
Committer: Arseni Bulatski <an...@gmail.com>
Committed: Mon Jan 15 14:01:52 2018 +0300
----------------------------------------------------------------------
.../apache/cayenne/tools/DbImporterTask.java | 10 +-
.../cayenne/tools/DbImporterTaskTest.java | 39 ++---
.../testExcludeRelationshipFirst.map.xml-result | 40 ++++++
.../tools/testExcludeRelationshipFirst.xml | 38 +++++
.../tools/testExcludeRelationshipFirst.xml.sql | 37 +++++
.../cayenne/dbsync/merge/DataMapMerger.java | 2 +-
.../dbsync/merge/DbRelationshipDictionary.java | 31 +++-
.../dbsync/merge/DbRelationshipMerger.java | 9 +-
.../reverse/dbimport/ExcludeRelationship.java | 34 +++++
.../reverse/dbimport/FilterContainer.java | 26 +++-
.../dbsync/reverse/dbimport/IncludeTable.java | 29 ++++
.../reverse/dbload/RelationshipLoader.java | 39 ++---
.../reverse/filters/FiltersConfigBuilder.java | 63 +++++++-
.../cayenne/tools/model/FilterContainer.java | 20 +++
.../cayenne/tools/model/IncludeTable.java | 21 +++
.../cayenne/tools/model/PatternParam.java | 7 +
.../org/apache/cayenne/tools/DbImportIT.java | 20 +++
.../cayenne/tools/model/IncludeTableTest.java | 12 ++
.../cayenne/tools/dbimport_excludeRel.gradle | 43 ++++++
.../apache/cayenne/tools/exclude_Table.map.xml | 44 ++++++
.../org/apache/cayenne/tools/exclude_Table.sql | 40 ++++++
docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
docs/doc/src/main/resources/UPGRADE.txt | 2 +
.../cayenne/tools/DbImporterMojoTest.java | 10 ++
.../dbimport/testExcludeRelationship-pom.xml | 55 +++++++
.../dbimport/testExcludeRelationship.map.xml | 142 +++++++++++++++++++
.../testExcludeRelationship.map.xml-result | 138 ++++++++++++++++++
.../tools/dbimport/testExcludeRelationship.sql | 105 ++++++++++++++
.../testExcludeRelationshipFirst-pom.xml | 49 +++++++
.../testExcludeRelationshipFirst.map.xml-result | 40 ++++++
.../dbimport/testExcludeRelationshipFirst.sql | 37 +++++
31 files changed, 1127 insertions(+), 56 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-ant/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
----------------------------------------------------------------------
diff --git a/cayenne-ant/src/main/java/org/apache/cayenne/tools/DbImporterTask.java b/cayenne-ant/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
index 8ab949f..5d22173 100644
--- a/cayenne-ant/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
+++ b/cayenne-ant/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
@@ -24,11 +24,12 @@ import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator;
import org.apache.cayenne.dbsync.reverse.configuration.ToolsModule;
import org.apache.cayenne.dbsync.reverse.dbimport.Catalog;
import org.apache.cayenne.dbsync.reverse.dbimport.DbImportAction;
-import org.apache.cayenne.dbsync.reverse.dbimport.DbImportConfigurationValidator;
import org.apache.cayenne.dbsync.reverse.dbimport.DbImportConfiguration;
+import org.apache.cayenne.dbsync.reverse.dbimport.DbImportConfigurationValidator;
import org.apache.cayenne.dbsync.reverse.dbimport.DbImportModule;
import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeColumn;
import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeProcedure;
+import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeRelationship;
import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeTable;
import org.apache.cayenne.dbsync.reverse.dbimport.IncludeColumn;
import org.apache.cayenne.dbsync.reverse.dbimport.IncludeProcedure;
@@ -77,6 +78,13 @@ public class DbImporterTask extends Task {
reverseEngineering.addExcludeTable(excludeTable);
}
+ /**
+ * @since 4.1
+ */
+ public void addExcludeRelationship(ExcludeRelationship excludeRelationship){
+ reverseEngineering.addExcludeRelationship(excludeRelationship);
+ }
+
public void addIncludeProcedure(IncludeProcedure includeProcedure) {
reverseEngineering.addIncludeProcedure(includeProcedure);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-ant/src/test/java/org/apache/cayenne/tools/DbImporterTaskTest.java
----------------------------------------------------------------------
diff --git a/cayenne-ant/src/test/java/org/apache/cayenne/tools/DbImporterTaskTest.java b/cayenne-ant/src/test/java/org/apache/cayenne/tools/DbImporterTaskTest.java
index df746c2..71ae4e3 100644
--- a/cayenne-ant/src/test/java/org/apache/cayenne/tools/DbImporterTaskTest.java
+++ b/cayenne-ant/src/test/java/org/apache/cayenne/tools/DbImporterTaskTest.java
@@ -39,16 +39,11 @@ import java.io.IOException;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import static org.apache.cayenne.dbsync.reverse.dbimport.ReverseEngineeringUtils.*;
-import static org.apache.commons.lang.StringUtils.isBlank;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.*;
// TODO: we are only testing on Derby. We may need to dynamically switch between DBs
// based on "cayenneTestConnection", like we do in cayenne-server, etc.
@@ -104,6 +99,11 @@ public class DbImporterTaskTest {
test("build-include-table.xml");
}
+ @Test
+ public void testExcludeRelationshipFirst() throws Exception {
+ test("testExcludeRelationshipFirst.xml");
+ }
+
private DbImporterTask getCdbImport(String buildFile) {
Project project = new Project();
@@ -144,32 +144,9 @@ public class DbImporterTaskTest {
try {
cdbImport.execute();
verifyResult(mapFile, mapFileCopy);
- } finally {
- cleanDb(cdbImport.toParameters());
- }
- }
-
- private void cleanDb(DbImportConfiguration dbImportConfiguration) throws ClassNotFoundException,
- IllegalAccessException, InstantiationException, SQLException {
- Class.forName(dbImportConfiguration.getDriver()).newInstance();
- // Get a connection
- Connection connection = DriverManager.getConnection(dbImportConfiguration.getUrl());
- Statement stmt = connection.createStatement();
-
- ResultSet tables = connection.getMetaData().getTables(null, null, null, new String[]{"TABLE"});
- while (tables.next()) {
- String schema = tables.getString("TABLE_SCHEM");
- System.out.println("DROP TABLE " + (isBlank(schema) ? "" : schema + ".") + tables.getString("TABLE_NAME"));
- stmt.execute("DROP TABLE " + (isBlank(schema) ? "" : schema + ".") + tables.getString("TABLE_NAME"));
}
-
- ResultSet schemas = connection.getMetaData().getSchemas();
- while (schemas.next()) {
- String schem = schemas.getString("TABLE_SCHEM");
- if (schem.startsWith("SCHEMA")) {
- System.out.println("DROP SCHEMA " + schem);
- stmt.execute("DROP SCHEMA " + schem + " RESTRICT");
- }
+ catch (Exception ex){
+ fail();
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-ant/src/test/resources/org/apache/cayenne/tools/testExcludeRelationshipFirst.map.xml-result
----------------------------------------------------------------------
diff --git a/cayenne-ant/src/test/resources/org/apache/cayenne/tools/testExcludeRelationshipFirst.map.xml-result b/cayenne-ant/src/test/resources/org/apache/cayenne/tools/testExcludeRelationshipFirst.map.xml-result
new file mode 100644
index 0000000..15cadd2
--- /dev/null
+++ b/cayenne-ant/src/test/resources/org/apache/cayenne/tools/testExcludeRelationshipFirst.map.xml-result
@@ -0,0 +1,40 @@
+<?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/10/modelMap"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://cayenne.apache.org/schema/10/modelMap http://cayenne.apache.org/schema/10/modelMap.xsd"
+ project-version="10">
+ <property name="defaultSchema" value="SCHEMA_01"/>
+
+ <db-entity name="TEST1" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ </db-entity>
+ <db-entity name="TEST2" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ <db-attribute name="TEST1_ID" type="INTEGER" length="10"/>
+ </db-entity>
+
+ <obj-entity name="Test1" className="Test1" dbEntityName="TEST1"/>
+ <obj-entity name="Test2" className="Test2" dbEntityName="TEST2">
+ <obj-attribute name="test1Id" type="int" db-attribute-path="TEST1_ID"/>
+ </obj-entity>
+
+
+</data-map>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-ant/src/test/resources/org/apache/cayenne/tools/testExcludeRelationshipFirst.xml
----------------------------------------------------------------------
diff --git a/cayenne-ant/src/test/resources/org/apache/cayenne/tools/testExcludeRelationshipFirst.xml b/cayenne-ant/src/test/resources/org/apache/cayenne/tools/testExcludeRelationshipFirst.xml
new file mode 100644
index 0000000..a13cf96
--- /dev/null
+++ b/cayenne-ant/src/test/resources/org/apache/cayenne/tools/testExcludeRelationshipFirst.xml
@@ -0,0 +1,38 @@
+<!--
+ ~ 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="testExcludeRelationshipFirst.map.xml"
+ driver="org.apache.derby.jdbc.EmbeddedDriver"
+ url="jdbc:derby:memory:DbImporterMojoTest;create=true">
+ <schema>
+ <name>SCHEMA_01</name>
+ <excludeRelationship>test1</excludeRelationship>
+ <excludeRelationship>test2s</excludeRelationship>
+ </schema>
+ </cdbimport>
+ </target>
+
+
+</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-ant/src/test/resources/org/apache/cayenne/tools/testExcludeRelationshipFirst.xml.sql
----------------------------------------------------------------------
diff --git a/cayenne-ant/src/test/resources/org/apache/cayenne/tools/testExcludeRelationshipFirst.xml.sql b/cayenne-ant/src/test/resources/org/apache/cayenne/tools/testExcludeRelationshipFirst.xml.sql
new file mode 100644
index 0000000..140b9ca
--- /dev/null
+++ b/cayenne-ant/src/test/resources/org/apache/cayenne/tools/testExcludeRelationshipFirst.xml.sql
@@ -0,0 +1,37 @@
+-- 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 SCHEMA schema_01;
+SET SCHEMA schema_01;
+
+CREATE TABLE schema_01.TEST1(
+ ID INTEGER NOT NULL,
+ PRIMARY KEY (ID)
+);
+
+CREATE TABLE schema_01.TEST2(
+ ID INTEGER NOT NULL,
+ TEST1_ID INTEGER,
+ PRIMARY KEY (ID)
+);
+
+ALTER TABLE schema_01.TEST2
+ADD FOREIGN KEY (TEST1_ID)
+REFERENCES schema_01.TEST1 (ID)
+;
+
+
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DataMapMerger.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DataMapMerger.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DataMapMerger.java
index 80c9134..2079c48 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DataMapMerger.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DataMapMerger.java
@@ -96,7 +96,7 @@ public class DataMapMerger implements Merger<DataMap> {
private void createRelationshipMerger() {
ChainMerger<DbEntity, DbRelationship> dbRelationshipMerger = new ChainMerger<>(
tokenFactory,
- new DbRelationshipMerger(tokenFactory, skipRelationshipsTokens),
+ new DbRelationshipMerger(tokenFactory, skipRelationshipsTokens, filters),
dbEntityMerger
);
mergerList.add(dbRelationshipMerger);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbRelationshipDictionary.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbRelationshipDictionary.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbRelationshipDictionary.java
index 4d5d74c..80424db 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbRelationshipDictionary.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbRelationshipDictionary.java
@@ -20,8 +20,12 @@
package org.apache.cayenne.dbsync.merge;
import java.util.Collection;
+import java.util.LinkedList;
import java.util.TreeSet;
+import org.apache.cayenne.dbsync.reverse.filters.FiltersConfig;
+import org.apache.cayenne.dbsync.reverse.filters.PatternFilter;
+import org.apache.cayenne.dbsync.reverse.filters.TableFilter;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbJoin;
import org.apache.cayenne.map.DbRelationship;
@@ -30,8 +34,11 @@ class DbRelationshipDictionary extends MergerDictionary<DbRelationship> {
private final DbEntity container;
- DbRelationshipDictionary(DbEntity container) {
+ private final FiltersConfig filtersConfig;
+
+ DbRelationshipDictionary(DbEntity container, FiltersConfig filtersConfig) {
this.container = container;
+ this.filtersConfig = filtersConfig;
}
@Override
@@ -41,10 +48,30 @@ class DbRelationshipDictionary extends MergerDictionary<DbRelationship> {
@Override
Collection<DbRelationship> getAll() {
- return container.getRelationships();
+ return filter();
}
/**
+ * @since 4.1
+ */
+ private Collection<DbRelationship> filter() {
+ if(filtersConfig == null) {
+ return container.getRelationships();
+ }
+
+ Collection<DbRelationship> existingFiltered = new LinkedList<>();
+ TableFilter tableFilter = filtersConfig.tableFilter(container.getCatalog(), container.getSchema());
+ if(tableFilter != null && tableFilter.isIncludeTable(container.getName())){
+ PatternFilter patternFilter = tableFilter.getIncludeTableColumnFilter(container.getName());
+ for(DbRelationship rel : container.getRelationships()){
+ if(patternFilter.isIncluded(rel.getName())){
+ existingFiltered.add(rel);
+ }
+ }
+ }
+ return existingFiltered;
+ }
+ /**
* Signature of DbRelationship is sorted strings generated from its DbJoins
*/
private static class Signature {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbRelationshipMerger.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbRelationshipMerger.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbRelationshipMerger.java
index 73644b4..715507d 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbRelationshipMerger.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbRelationshipMerger.java
@@ -25,6 +25,7 @@ import java.util.List;
import org.apache.cayenne.dbsync.merge.factory.MergerTokenFactory;
import org.apache.cayenne.dbsync.merge.token.MergerToken;
+import org.apache.cayenne.dbsync.reverse.filters.FiltersConfig;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbJoin;
@@ -37,17 +38,19 @@ import org.apache.cayenne.map.DbRelationship;
public class DbRelationshipMerger extends AbstractMerger<DbEntity, DbRelationship> {
private final boolean skipRelationshipsTokens;
+ private final FiltersConfig filtersConfig;
- DbRelationshipMerger(MergerTokenFactory tokenFactory, boolean skipRelationshipsTokens) {
+ DbRelationshipMerger(MergerTokenFactory tokenFactory, boolean skipRelationshipsTokens, FiltersConfig filtersConfig) {
super(tokenFactory);
this.skipRelationshipsTokens = skipRelationshipsTokens;
+ this.filtersConfig = filtersConfig;
}
@Override
MergerDictionaryDiff<DbRelationship> createDiff(DbEntity original, DbEntity imported) {
return new MergerDictionaryDiff.Builder<DbRelationship>()
- .originalDictionary(new DbRelationshipDictionary(original))
- .importedDictionary(new DbRelationshipDictionary(imported))
+ .originalDictionary(new DbRelationshipDictionary(original, filtersConfig))
+ .importedDictionary(new DbRelationshipDictionary(imported, filtersConfig))
.build();
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/ExcludeRelationship.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/ExcludeRelationship.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/ExcludeRelationship.java
new file mode 100644
index 0000000..19a08fe
--- /dev/null
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/ExcludeRelationship.java
@@ -0,0 +1,34 @@
+/*****************************************************************
+ * 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.dbsync.reverse.dbimport;
+
+/**
+ * @since 4.1.
+ */
+public class ExcludeRelationship extends PatternParam{
+
+ public ExcludeRelationship(){
+
+ }
+
+ public ExcludeRelationship(String pattern){
+ super(pattern);
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/FilterContainer.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/FilterContainer.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/FilterContainer.java
index 03c4dee..f548863 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/FilterContainer.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/FilterContainer.java
@@ -41,6 +41,8 @@ public abstract class FilterContainer {
private final Collection<ExcludeProcedure> excludeProcedureCollection = new LinkedList<>();
+ private final Collection<ExcludeRelationship> excludeRelationshipCollection = new LinkedList<>();
+
public Collection<IncludeTable> getIncludeTables() {
return includeTableCollection;
}
@@ -65,6 +67,13 @@ public abstract class FilterContainer {
return excludeProcedureCollection;
}
+ /**
+ * @since 4.1
+ */
+ public Collection<ExcludeRelationship> getExcludeRelationship() {
+ return excludeRelationshipCollection;
+ }
+
public void addIncludeColumn(IncludeColumn includeColumn) {
this.includeColumnCollection.add(includeColumn);
}
@@ -89,6 +98,13 @@ public abstract class FilterContainer {
this.excludeProcedureCollection.add(excludeProcedure);
}
+ /**
+ * @since 4.1
+ */
+ public void addExcludeRelationship(ExcludeRelationship excludeRelationship) {
+ this.excludeRelationshipCollection.add(excludeRelationship);
+ }
+
public void clearIncludeTables() {
includeTableCollection.clear();
}
@@ -113,6 +129,13 @@ public abstract class FilterContainer {
excludeColumnCollection.clear();
}
+ /**
+ * @since 4.1
+ */
+ public void clearExcludeRelationship() {
+ excludeRelationshipCollection.clear();
+ }
+
public String getName() {
return name;
}
@@ -139,7 +162,7 @@ public abstract class FilterContainer {
public boolean isEmptyContainer() {
return includeColumnCollection.isEmpty() && excludeColumnCollection.isEmpty()
&& includeTableCollection.isEmpty() && excludeTableCollection.isEmpty()
- && includeProcedureCollection.isEmpty() && excludeProcedureCollection.isEmpty();
+ && includeProcedureCollection.isEmpty() && excludeProcedureCollection.isEmpty() && excludeRelationshipCollection.isEmpty();
}
static boolean isBlank(Collection<?> collection) {
@@ -158,6 +181,7 @@ public abstract class FilterContainer {
appendCollection(res, prefix, excludeColumnCollection);
appendCollection(res, prefix, includeProcedureCollection);
appendCollection(res, prefix, excludeProcedureCollection);
+ appendCollection(res, prefix, excludeRelationshipCollection);
return res;
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/IncludeTable.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/IncludeTable.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/IncludeTable.java
index b57e782..defa595 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/IncludeTable.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/IncludeTable.java
@@ -31,6 +31,8 @@ public class IncludeTable extends PatternParam {
private final Collection<ExcludeColumn> excludeColumns = new LinkedList<>();
+ private final Collection<ExcludeRelationship> excludeRelationship = new LinkedList<>();
+
public IncludeTable() {
}
@@ -54,6 +56,20 @@ public class IncludeTable extends PatternParam {
this.excludeColumns.addAll(excludeColumns);
}
+ /**
+ * @since 4.1
+ */
+ public Collection<ExcludeRelationship> getExcludeRelationship() {
+ return excludeRelationship;
+ }
+
+ /**
+ * @since 4.1
+ */
+ public void setExcludeRelationship (Collection<ExcludeRelationship> excludeRelationship) {
+ this.excludeRelationship.addAll(excludeRelationship);
+ }
+
public void addIncludeColumn(IncludeColumn includeColumn) {
this.includeColumns.add(includeColumn);
}
@@ -62,6 +78,13 @@ public class IncludeTable extends PatternParam {
this.excludeColumns.add(excludeColumn);
}
+ /**
+ * @since 4.1
+ */
+ public void addExcludeRelationship(ExcludeRelationship excludeRelationship){
+ this.excludeRelationship.add(excludeRelationship);
+ }
+
@Override
public StringBuilder toString(StringBuilder res, String s) {
super.toString(res, s);
@@ -79,6 +102,12 @@ public class IncludeTable extends PatternParam {
}
}
+ if(excludeRelationship != null && !excludeColumns.isEmpty()) {
+ for(ExcludeRelationship excludeRelationship : excludeRelationship) {
+ excludeRelationship.toString(res, prefix);
+ }
+ }
+
return res;
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipLoader.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipLoader.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipLoader.java
index 46a1aa0..d51db9d 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipLoader.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipLoader.java
@@ -108,22 +108,29 @@ public class RelationshipLoader extends AbstractLoader {
// set relationship names only after their joins are ready ...
// generator logic is based on relationship state...
- forwardRelationship.setName(NameBuilder
- .builder(forwardRelationship, pkEntity)
- .baseName(nameGenerator.relationshipName(forwardRelationship))
- .name());
-
- reverseRelationship.setName(NameBuilder
- .builder(reverseRelationship, fkEntity)
- .baseName(nameGenerator.relationshipName(reverseRelationship))
- .name());
-
- if (delegate.dbRelationshipLoaded(fkEntity, reverseRelationship)) {
- fkEntity.addRelationship(reverseRelationship);
- }
- if (delegate.dbRelationshipLoaded(pkEntity, forwardRelationship)) {
- pkEntity.addRelationship(forwardRelationship);
- }
+
+ setRelationshipName(pkEntity, forwardRelationship);
+ setRelationshipName(fkEntity, reverseRelationship);
+
+ checkAndAddRelationship(pkEntity, forwardRelationship);
+ checkAndAddRelationship(fkEntity, reverseRelationship);
+ }
+ }
+
+ private void setRelationshipName(DbEntity entity, DbRelationship relationship) {
+ relationship.setName(NameBuilder
+ .builder(relationship, entity)
+ .baseName(nameGenerator.relationshipName(relationship))
+ .name());
+ }
+
+ private void checkAndAddRelationship(DbEntity entity, DbRelationship relationship){
+ boolean isIncluded = config.getFiltersConfig()
+ .tableFilter(entity.getCatalog(), entity.getSchema())
+ .getIncludeTableColumnFilter(entity.getName())
+ .isIncluded(relationship.getName());
+ if (isIncluded && delegate.dbRelationshipLoaded(entity, relationship)) {
+ entity.addRelationship(relationship);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/filters/FiltersConfigBuilder.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/filters/FiltersConfigBuilder.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/filters/FiltersConfigBuilder.java
index a93681f..73e938a 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/filters/FiltersConfigBuilder.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/filters/FiltersConfigBuilder.java
@@ -21,6 +21,7 @@ package org.apache.cayenne.dbsync.reverse.filters;
import org.apache.cayenne.dbsync.reverse.dbimport.Catalog;
import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeColumn;
import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeProcedure;
+import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeRelationship;
import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeTable;
import org.apache.cayenne.dbsync.reverse.dbimport.IncludeColumn;
import org.apache.cayenne.dbsync.reverse.dbimport.IncludeProcedure;
@@ -88,7 +89,8 @@ public final class FiltersConfigBuilder {
SortedSet<IncludeTableFilter> includeTableFilters = new TreeSet<>();
for (IncludeTable includeTable : includeTables) {
includeTableFilters.add(new IncludeTableFilter(includeTable.getPattern(),
- transform(includeTable.getIncludeColumns(), includeTable.getExcludeColumns())));
+ transform(includeTable.getIncludeColumns(), includeTable.getExcludeColumns(), includeTable.getExcludeRelationship())));
+
}
return includeTableFilters;
@@ -109,6 +111,25 @@ public final class FiltersConfigBuilder {
}
+ private PatternFilter transform(Collection<? extends PatternParam> include, Collection<? extends PatternParam> exclude, Collection<? extends PatternParam> excludeRel) {
+ PatternFilter filter = new PatternFilter();
+
+ for (PatternParam patternParam : include) {
+ filter.include(patternParam.getPattern());
+ }
+
+ for (PatternParam patternParam : exclude) {
+ filter.exclude(patternParam.getPattern());
+ }
+
+ for(PatternParam patternParam : excludeRel){
+ filter.exclude(patternParam.getPattern());
+ }
+
+ return filter;
+
+ }
+
/**
* Goal of this method transform ReverseEngineering config into more regular form
* From
@@ -167,6 +188,7 @@ public final class FiltersConfigBuilder {
addEmptyElements();
compactColumnFilters();
+ compactRelationshipFilters();
compactTableFilter();
compactProcedureFilter();
compactSchemas();
@@ -226,6 +248,42 @@ public final class FiltersConfigBuilder {
}
}
+ private void compactRelationshipFilters() {
+ Collection<ExcludeRelationship> engExcludeRelationship = engineering.getExcludeRelationship();
+
+ for(Catalog catalog : engineering.getCatalogs()){
+ Collection<ExcludeRelationship> catalogExcludeRelationship = catalog.getExcludeRelationship();
+
+ for(Schema schema : catalog.getSchemas()){
+ Collection<ExcludeRelationship> schemaExcludeRelationship = schema.getExcludeRelationship();
+
+ for(IncludeTable includeTable : schema.getIncludeTables()) {
+ includeTable.getExcludeRelationship().addAll(engExcludeRelationship);
+ includeTable.getExcludeRelationship().addAll(catalogExcludeRelationship);
+ includeTable.getExcludeRelationship().addAll(schemaExcludeRelationship);
+ }
+ }
+
+ for(IncludeTable includeTable : catalog.getIncludeTables()) {
+ includeTable.getExcludeRelationship().addAll(engExcludeRelationship);
+ includeTable.getExcludeRelationship().addAll(catalogExcludeRelationship);
+ }
+ }
+
+ for (Schema schema : engineering.getSchemas()) {
+ Collection<ExcludeRelationship> schemaExcludeRelationship = schema.getExcludeRelationship();
+
+ for (IncludeTable includeTable : schema.getIncludeTables()) {
+ includeTable.getExcludeRelationship().addAll(engExcludeRelationship);
+ includeTable.getExcludeRelationship().addAll(schemaExcludeRelationship);
+ }
+ }
+
+ for (IncludeTable includeTable : engineering.getIncludeTables()) {
+ includeTable.getExcludeRelationship().addAll(engExcludeRelationship);
+ }
+ }
+
private void compactColumnFilters() {
Collection<IncludeColumn> engIncludeColumns = engineering.getIncludeColumns();
Collection<ExcludeColumn> engExcludeColumns = engineering.getExcludeColumns();
@@ -285,10 +343,12 @@ public final class FiltersConfigBuilder {
catalog.clearExcludeProcedures();
catalog.clearIncludeColumns();
catalog.clearExcludeColumns();
+ catalog.clearExcludeRelationship();
for (Schema schema : catalog.getSchemas()) {
schema.clearIncludeColumns();
schema.clearExcludeColumns();
+ schema.clearExcludeRelationship();
}
}
@@ -298,6 +358,7 @@ public final class FiltersConfigBuilder {
engineering.clearExcludeProcedures();
engineering.clearIncludeColumns();
engineering.clearExcludeColumns();
+ engineering.clearExcludeRelationship();
engineering.getSchemas().clear();
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/model/FilterContainer.java
----------------------------------------------------------------------
diff --git a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/model/FilterContainer.java b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/model/FilterContainer.java
index 734ca70..f34be96 100644
--- a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/model/FilterContainer.java
+++ b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/model/FilterContainer.java
@@ -37,6 +37,7 @@ public class FilterContainer {
private Collection<PatternParam> excludeColumns = new LinkedList<>();
private Collection<PatternParam> includeProcedures = new LinkedList<>();
private Collection<PatternParam> excludeProcedures = new LinkedList<>();
+ private Collection<PatternParam> excludeRelationships = new LinkedList<>();
FilterContainer() {
}
@@ -97,6 +98,22 @@ public class FilterContainer {
}
}
+ /**
+ * @since 4.1
+ */
+ public void excludeRelationship(String pattern) {
+ addToCollection(excludeRelationships, pattern);
+ }
+
+ /**
+ * @since 4.1
+ */
+ public void excludeRelationships(String... patterns) {
+ for(String pattern : patterns) {
+ excludeRelationship(pattern);
+ }
+ }
+
public void includeProcedure(String pattern) {
addToCollection(includeProcedures, pattern);
}
@@ -143,6 +160,9 @@ public class FilterContainer {
for(PatternParam procedure : excludeProcedures) {
container.addExcludeProcedure(procedure.toExcludeProcedure());
}
+ for(PatternParam rel : excludeRelationships) {
+ container.addExcludeRelationship(rel.toExcludeRelationship());
+ }
return container;
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/model/IncludeTable.java
----------------------------------------------------------------------
diff --git a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/model/IncludeTable.java b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/model/IncludeTable.java
index 5bd12b7..5d590fd 100644
--- a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/model/IncludeTable.java
+++ b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/model/IncludeTable.java
@@ -29,6 +29,7 @@ public class IncludeTable extends PatternParam {
private Collection<PatternParam> includeColumns = new LinkedList<>();
private Collection<PatternParam> excludeColumns = new LinkedList<>();
+ private Collection<PatternParam> excludeRelationships = new LinkedList<>();
IncludeTable() {
}
@@ -65,6 +66,22 @@ public class IncludeTable extends PatternParam {
}
}
+ /**
+ * @since 4.1
+ */
+ public void excludeRelationship(String pattern){
+ excludeRelationships.add(new PatternParam(pattern));
+ }
+
+ /**
+ * @since 4.1
+ */
+ public void excludeRelationships(String... patterns){
+ for(String pattern : patterns) {
+ excludeRelationship(pattern);
+ }
+ }
+
org.apache.cayenne.dbsync.reverse.dbimport.IncludeTable toIncludeTable() {
org.apache.cayenne.dbsync.reverse.dbimport.IncludeTable table
= new org.apache.cayenne.dbsync.reverse.dbimport.IncludeTable();
@@ -77,6 +94,10 @@ public class IncludeTable extends PatternParam {
table.addExcludeColumn(excludeColumn.toExcludeColumn());
}
+ for(PatternParam excludeRelationship : excludeRelationships){
+ table.addExcludeRelationship(excludeRelationship.toExcludeRelationship());
+ }
+
return table;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/model/PatternParam.java
----------------------------------------------------------------------
diff --git a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/model/PatternParam.java b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/model/PatternParam.java
index d6f7dfb..5d852b8 100644
--- a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/model/PatternParam.java
+++ b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/model/PatternParam.java
@@ -21,6 +21,7 @@ package org.apache.cayenne.tools.model;
import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeColumn;
import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeProcedure;
+import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeRelationship;
import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeTable;
import org.apache.cayenne.dbsync.reverse.dbimport.IncludeColumn;
import org.apache.cayenne.dbsync.reverse.dbimport.IncludeProcedure;
@@ -73,6 +74,12 @@ public class PatternParam {
return procedure;
}
+ ExcludeRelationship toExcludeRelationship(){
+ ExcludeRelationship excludeRelationship = new ExcludeRelationship();
+ excludeRelationship.setPattern(pattern);
+ return excludeRelationship;
+ }
+
public String getPattern() {
return pattern;
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-gradle-plugin/src/test/java/org/apache/cayenne/tools/DbImportIT.java
----------------------------------------------------------------------
diff --git a/cayenne-gradle-plugin/src/test/java/org/apache/cayenne/tools/DbImportIT.java b/cayenne-gradle-plugin/src/test/java/org/apache/cayenne/tools/DbImportIT.java
index 283796e..00ecbe5 100644
--- a/cayenne-gradle-plugin/src/test/java/org/apache/cayenne/tools/DbImportIT.java
+++ b/cayenne-gradle-plugin/src/test/java/org/apache/cayenne/tools/DbImportIT.java
@@ -94,6 +94,26 @@ public class DbImportIT extends BaseTaskIT {
assertTrue(result.getOutput().contains("Migration Complete Successfully."));
}
+ @Test
+ public void excludeRelDbTaskSuccess() throws Exception {
+ String dbUrl = prepareDerbyDatabase("exclude_Table");
+ File dataMap = new File(projectDir.getAbsolutePath() + "/datamap.map.xml");
+ assertFalse(dataMap.exists());
+
+ GradleRunner runner = createRunner("dbimport_excludeRel", "cdbimport", "--info", "-PdbUrl=" + dbUrl);
+
+ BuildResult result = runner.build();
+
+ assertNotNull(result.task(":cdbimport"));
+ assertEquals(TaskOutcome.SUCCESS, result.task(":cdbimport").getOutcome());
+
+ assertTrue(dataMap.exists());
+
+ // Check few lines from reverse engineering output
+ assertTrue(result.getOutput().contains("Table: SCHEMA_01.TEST1"));
+ assertTrue(result.getOutput().contains("Table: SCHEMA_01.TEST2"));
+ }
+
private String prepareDerbyDatabase(String sqlFile) throws Exception {
URL sqlUrl = Objects.requireNonNull(ResourceUtil.getResource(getClass(), sqlFile + ".sql"));
String dbUrl = "jdbc:derby:" + projectDir.getAbsolutePath() + "/build/" + sqlFile;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-gradle-plugin/src/test/java/org/apache/cayenne/tools/model/IncludeTableTest.java
----------------------------------------------------------------------
diff --git a/cayenne-gradle-plugin/src/test/java/org/apache/cayenne/tools/model/IncludeTableTest.java b/cayenne-gradle-plugin/src/test/java/org/apache/cayenne/tools/model/IncludeTableTest.java
index 2d95cf9..e618bde 100644
--- a/cayenne-gradle-plugin/src/test/java/org/apache/cayenne/tools/model/IncludeTableTest.java
+++ b/cayenne-gradle-plugin/src/test/java/org/apache/cayenne/tools/model/IncludeTableTest.java
@@ -22,6 +22,7 @@ package org.apache.cayenne.tools.model;
import java.util.Collection;
import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeColumn;
+import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeRelationship;
import org.apache.cayenne.dbsync.reverse.dbimport.IncludeColumn;
import org.junit.Test;
@@ -81,6 +82,17 @@ public class IncludeTableTest {
}
@Test
+ public void excludeRelationship() throws Exception {
+ IncludeTable table = new IncludeTable("name");
+ table.excludeRelationship("rel1");
+
+ Collection<ExcludeRelationship> rel = table.toIncludeTable().getExcludeRelationship();
+ assertNotNull(rel);
+ assertEquals(1, rel.size());
+ assertEquals("rel1", rel.iterator().next().getPattern());
+ }
+
+ @Test
public void toIncludeTable() throws Exception {
IncludeTable table = new IncludeTable("name");
table.includeColumns("column1", "column2");
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/dbimport_excludeRel.gradle
----------------------------------------------------------------------
diff --git a/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/dbimport_excludeRel.gradle b/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/dbimport_excludeRel.gradle
new file mode 100644
index 0000000..79b41db
--- /dev/null
+++ b/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/dbimport_excludeRel.gradle
@@ -0,0 +1,43 @@
+/*****************************************************************
+ * 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.
+ ****************************************************************/
+
+plugins {
+ id 'org.apache.cayenne'
+}
+
+cdbimport {
+ map 'datamap.map.xml'
+
+ adapter 'org.apache.cayenne.dba.derby.DerbyAdapter'
+
+ dataSource {
+ username 'sa'
+ password ''
+ url dbUrl
+ driver 'org.apache.derby.jdbc.EmbeddedDriver'
+ }
+ dbImport {
+ schema{
+ name 'SCHEMA_01'
+ excludeRelationship 'test2s'
+ excludeRelationship 'test1'
+ }
+
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/exclude_Table.map.xml
----------------------------------------------------------------------
diff --git a/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/exclude_Table.map.xml b/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/exclude_Table.map.xml
new file mode 100644
index 0000000..1fc3742
--- /dev/null
+++ b/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/exclude_Table.map.xml
@@ -0,0 +1,44 @@
+<?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/10/modelMap"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://cayenne.apache.org/schema/10/modelMap http://cayenne.apache.org/schema/10/modelMap.xsd"
+ project-version="10">
+
+ <property name="defaultPackage" value="org.example.cayenne.persistent"/>
+ <property name="defaultClientPackage" value="tmp"/>
+ <db-entity name="City">
+ <db-attribute name="id" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+ <db-attribute name="name" type="VARCHAR" length="255"/>
+ </db-entity>
+ <db-entity name="artist">
+ <db-attribute name="birth_date" type="DATE"/>
+ <db-attribute name="id" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+ <db-attribute name="name" type="VARCHAR" length="255"/>
+ </db-entity>
+ <obj-entity name="City" className="org.example.cayenne.persistent.City" dbEntityName="City">
+ <obj-attribute name="name" type="java.lang.String" db-attribute-path="name"/>
+ </obj-entity>
+ <obj-entity name="Artist" className="org.example.cayenne.persistent.Artist" clientClassName="tmp.Artist" dbEntityName="artist">
+ <obj-attribute name="birthDate" type="java.util.Date" db-attribute-path="birth_date"/>
+ <obj-attribute name="name" type="java.lang.String" db-attribute-path="name"/>
+ </obj-entity>
+
+</data-map>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/exclude_Table.sql
----------------------------------------------------------------------
diff --git a/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/exclude_Table.sql b/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/exclude_Table.sql
new file mode 100644
index 0000000..cca377e
--- /dev/null
+++ b/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/exclude_Table.sql
@@ -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.
+
+-- Test Schema for dbimport task test
+
+
+CREATE SCHEMA schema_01;
+SET SCHEMA schema_01;
+
+CREATE TABLE schema_01.TEST1(
+ ID INTEGER NOT NULL,
+ PRIMARY KEY (ID)
+);
+
+CREATE TABLE schema_01.TEST2(
+ ID INTEGER NOT NULL,
+ TEST1_ID INTEGER,
+ PRIMARY KEY (ID)
+);
+
+ALTER TABLE schema_01.TEST2
+ADD FOREIGN KEY (TEST1_ID)
+REFERENCES schema_01.TEST1 (ID)
+;
+
+
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index 5a32f7a..67e3e02 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -15,6 +15,7 @@ Changes/New Features:
CAY-2372 Extract new modules from cayenne-server
CAY-2377 Cleanup deprecated code.
+CAY-2391 Add excludeRelationship in dbImport
Bug Fixes:
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/docs/doc/src/main/resources/UPGRADE.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/UPGRADE.txt b/docs/doc/src/main/resources/UPGRADE.txt
index 0c9fc00..3086988 100644
--- a/docs/doc/src/main/resources/UPGRADE.txt
+++ b/docs/doc/src/main/resources/UPGRADE.txt
@@ -16,6 +16,8 @@ UPGRADING TO 4.1.M2
- cayenne-osgi module contains OSGi related functionality.
- cayenne-rop-server ROP server part.
+* Per CAY-2391 added new excludeRelationship option in dbImport.
+
UPGRADING TO 4.1.M1
* Per CAY-2351 Minimum supported Java version is now Java 8. There is no options to use Cayenne 4.1 with earlier
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
----------------------------------------------------------------------
diff --git a/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java b/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
index 1f3a29a..6b541ec 100644
--- a/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
+++ b/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
@@ -163,6 +163,16 @@ public class DbImporterMojoTest extends AbstractMojoTestCase {
test("testOneToOne");
}
+ @Test
+ public void testExcludeRelationship() throws Exception {
+ test("testExcludeRelationship");
+ }
+
+ @Test
+ public void testExcludeRelationshipFirst() throws Exception {
+ test("testExcludeRelationshipFirst");
+ }
+
/**
* Q: what happens if an attribute or relationship is unmapped in the object layer, but then the underlying table
* changes.
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship-pom.xml
----------------------------------------------------------------------
diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship-pom.xml b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship-pom.xml
new file mode 100644
index 0000000..590676f
--- /dev/null
+++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship-pom.xml
@@ -0,0 +1,55 @@
+<!--
+ ~ 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>cayenne-maven-plugin</artifactId>
+ <configuration>
+ <map>target/test-classes/org/apache/cayenne/tools/dbimport/testExcludeRelationship.map.xml</map>
+
+ <dataSource>
+ <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
+ <url>jdbc:derby:memory:DbImporterMojoTest;create=true</url>
+ </dataSource>
+
+ <dbimport>
+ <schema>
+ <name>SCHEMA_01</name>
+ <excludeRelationship>TEST1_TO_TEST2</excludeRelationship>
+ <excludeRelationship>TEST2_TO_TEST1</excludeRelationship>
+
+ <excludeRelationship>test6s</excludeRelationship>
+ <excludeRelationship>test5</excludeRelationship>
+
+ <excludeRelationship>test12s</excludeRelationship>
+ <excludeRelationship>test11</excludeRelationship>
+ </schema>
+ </dbimport>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.map.xml
----------------------------------------------------------------------
diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.map.xml b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.map.xml
new file mode 100644
index 0000000..1a35987
--- /dev/null
+++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.map.xml
@@ -0,0 +1,142 @@
+<?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/10/modelMap"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://cayenne.apache.org/schema/10/modelMap http://cayenne.apache.org/schema/10/modelMap.xsd"
+ project-version="10">
+ <property name="defaultSchema" value="SCHEMA_01"/>
+ <db-entity name="TEST1" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ </db-entity>
+ <db-entity name="TEST2" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ <db-attribute name="TEST1_ID" type="INTEGER"/>
+ </db-entity>
+
+ <db-entity name="TEST3" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ </db-entity>
+ <db-entity name="TEST4" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ <db-attribute name="TEST3_ID" type="INTEGER"/>
+ </db-entity>
+
+ <db-entity name="TEST5" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ </db-entity>
+ <db-entity name="TEST6" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ <db-attribute name="TEST5_ID" type="INTEGER"/>
+ </db-entity>
+
+ <db-entity name="TEST7" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ </db-entity>
+ <db-entity name="TEST8" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ <db-attribute name="TEST7_ID" type="INTEGER"/>
+ </db-entity>
+
+ <db-entity name="TEST9" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ </db-entity>
+ <db-entity name="TEST10" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ <db-attribute name="TEST9_ID" type="INTEGER"/>
+ </db-entity>
+
+ <db-entity name="TEST11" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ </db-entity>
+ <db-entity name="TEST12" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ <db-attribute name="TEST11_ID" type="INTEGER"/>
+ </db-entity>
+
+ <obj-entity name="Test1" className="Test1" dbEntityName="TEST1">
+ </obj-entity>
+ <obj-entity name="Test2" className="Test2" dbEntityName="TEST2">
+ </obj-entity>
+
+ <obj-entity name="Test3" className="Test3" dbEntityName="TEST3">
+ </obj-entity>
+ <obj-entity name="Test4" className="Test4" dbEntityName="TEST4">
+ </obj-entity>
+
+ <obj-entity name="Test5" className="Test5" dbEntityName="TEST5">
+ </obj-entity>
+ <obj-entity name="Test6" className="Test6" dbEntityName="TEST6">
+ </obj-entity>
+
+ <obj-entity name="Test7" className="Test7" dbEntityName="TEST7">
+ </obj-entity>
+ <obj-entity name="Test8" className="Test8" dbEntityName="TEST8">
+ </obj-entity>
+
+ <obj-entity name="Test9" className="Test9" dbEntityName="TEST9">
+ </obj-entity>
+ <obj-entity name="Test10" className="Test10" dbEntityName="TEST10">
+ </obj-entity>
+
+ <obj-entity name="Test11" className="Test11" dbEntityName="TEST11">
+ </obj-entity>
+ <obj-entity name="Test12" className="Test12" dbEntityName="TEST12">
+ </obj-entity>
+
+ <db-relationship name="TEST1_TO_TEST2" source="TEST1" target="TEST2" toMany="true">
+ <db-attribute-pair source="ID" target="TEST1_ID"/>
+ </db-relationship>
+ <db-relationship name="TEST2_TO_TEST1" source="TEST2" target="TEST1">
+ <db-attribute-pair source="TEST1_ID" target="ID"/>
+ </db-relationship>
+
+ <db-relationship name="test8s" source="TEST7" target="TEST8" toMany="true">
+ <db-attribute-pair source="ID" target="TEST7_ID"/>
+ </db-relationship>
+ <db-relationship name="test7" source="TEST8" target="TEST7">
+ <db-attribute-pair source="TEST7_ID" target="ID"/>
+ </db-relationship>
+
+ <db-relationship name="test10s" source="TEST9" target="TEST10" toMany="true">
+ <db-attribute-pair source="ID" target="TEST9_ID"/>
+ </db-relationship>
+ <db-relationship name="test9" source="TEST10" target="TEST9">
+ <db-attribute-pair source="TEST9_ID" target="ID"/>
+ </db-relationship>
+
+ <db-relationship name="test12s" source="TEST11" target="TEST12" toMany="true">
+ <db-attribute-pair source="ID" target="TEST11_ID"/>
+ </db-relationship>
+ <db-relationship name="test11" source="TEST12" target="TEST11">
+ <db-attribute-pair source="TEST11_ID" target="ID"/>
+ </db-relationship>
+
+ <obj-relationship name="test1ToTest2" source="Test1" target="Test2" deleteRule="Deny" db-relationship-path="TEST1_TO_TEST2"/>
+ <obj-relationship name="test2ToTest1" source="Test2" target="Test1" deleteRule="Nullify" db-relationship-path="TEST2_TO_TEST1"/>
+
+ <obj-relationship name="test8s" source="Test7" target="Test8" deleteRule="Deny" db-relationship-path="test8s"/>
+ <obj-relationship name="test7" source="Test8" target="Test7" deleteRule="Nullify" db-relationship-path="test7"/>
+
+ <obj-relationship name="test10s" source="Test9" target="Test10" deleteRule="Deny" db-relationship-path="test10s"/>
+ <obj-relationship name="test9" source="Test10" target="Test9" deleteRule="Nullify" db-relationship-path="test9"/>
+
+ <obj-relationship name="test12s" source="Test11" target="Test12" deleteRule="Deny" db-relationship-path="test12s"/>
+ <obj-relationship name="test1" source="Test12" target="Test11" deleteRule="Nullify" db-relationship-path="test11"/>
+</data-map>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.map.xml-result
----------------------------------------------------------------------
diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.map.xml-result b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.map.xml-result
new file mode 100644
index 0000000..b65be2b
--- /dev/null
+++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.map.xml-result
@@ -0,0 +1,138 @@
+<?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/10/modelMap"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://cayenne.apache.org/schema/10/modelMap http://cayenne.apache.org/schema/10/modelMap.xsd"
+ project-version="10">
+ <property name="defaultSchema" value="SCHEMA_01"/>
+ <db-entity name="TEST1" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ </db-entity>
+ <db-entity name="TEST2" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ <db-attribute name="TEST1_ID" type="INTEGER"/>
+ </db-entity>
+
+ <db-entity name="TEST3" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ </db-entity>
+ <db-entity name="TEST4" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ <db-attribute name="TEST3_ID" type="INTEGER"/>
+ </db-entity>
+
+ <db-entity name="TEST5" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ </db-entity>
+ <db-entity name="TEST6" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ <db-attribute name="TEST5_ID" type="INTEGER"/>
+ </db-entity>
+
+ <db-entity name="TEST7" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ </db-entity>
+ <db-entity name="TEST8" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ <db-attribute name="TEST7_ID" type="INTEGER"/>
+ </db-entity>
+
+ <db-entity name="TEST9" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ </db-entity>
+ <db-entity name="TEST10" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ <db-attribute name="TEST9_ID" type="INTEGER"/>
+ </db-entity>
+
+ <db-entity name="TEST11" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ </db-entity>
+ <db-entity name="TEST12" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ <db-attribute name="TEST11_ID" type="INTEGER"/>
+ </db-entity>
+
+ <obj-entity name="Test1" className="Test1" dbEntityName="TEST1">
+ </obj-entity>
+ <obj-entity name="Test2" className="Test2" dbEntityName="TEST2">
+ </obj-entity>
+
+ <obj-entity name="Test3" className="Test3" dbEntityName="TEST3">
+ </obj-entity>
+ <obj-entity name="Test4" className="Test4" dbEntityName="TEST4">
+ </obj-entity>
+
+ <obj-entity name="Test5" className="Test5" dbEntityName="TEST5">
+ </obj-entity>
+ <obj-entity name="Test6" className="Test6" dbEntityName="TEST6">
+ </obj-entity>
+
+ <obj-entity name="Test7" className="Test7" dbEntityName="TEST7">
+ </obj-entity>
+ <obj-entity name="Test8" className="Test8" dbEntityName="TEST8">
+ </obj-entity>
+
+ <obj-entity name="Test9" className="Test9" dbEntityName="TEST9">
+ </obj-entity>
+ <obj-entity name="Test10" className="Test10" dbEntityName="TEST10">
+ </obj-entity>
+
+ <obj-entity name="Test11" className="Test11" dbEntityName="TEST11">
+ </obj-entity>
+ <obj-entity name="Test12" className="Test12" dbEntityName="TEST12">
+ </obj-entity>
+
+ <db-relationship name="TEST1_TO_TEST2" source="TEST1" target="TEST2" toMany="true">
+ <db-attribute-pair source="ID" target="TEST1_ID"/>
+ </db-relationship>
+ <db-relationship name="TEST2_TO_TEST1" source="TEST2" target="TEST1">
+ <db-attribute-pair source="TEST1_ID" target="ID"/>
+ </db-relationship>
+ <obj-relationship name="test1ToTest2" source="Test1" target="Test2" deleteRule="Deny" db-relationship-path="TEST1_TO_TEST2"/>
+ <obj-relationship name="test2ToTest1" source="Test2" target="Test1" deleteRule="Nullify" db-relationship-path="TEST2_TO_TEST1"/>
+
+ <db-relationship name="test4s" source="TEST3" target="TEST4" toMany="true">
+ <db-attribute-pair source="ID" target="TEST3_ID"/>
+ </db-relationship>
+ <db-relationship name="test3" source="TEST4" target="TEST3">
+ <db-attribute-pair source="TEST3_ID" target="ID"/>
+ </db-relationship>
+ <obj-relationship name="test4s" source="Test3" target="Test4" deleteRule="Deny" db-relationship-path="test4s"/>
+ <obj-relationship name="test3" source="Test4" target="Test3" deleteRule="Nullify" db-relationship-path="test3"/>
+
+ <db-relationship name="test8s" source="TEST7" target="TEST8" toMany="true">
+ <db-attribute-pair source="ID" target="TEST7_ID"/>
+ </db-relationship>
+ <db-relationship name="test7" source="TEST8" target="TEST7">
+ <db-attribute-pair source="TEST7_ID" target="ID"/>
+ </db-relationship>
+ <obj-relationship name="test8s" source="Test7" target="Test8" deleteRule="Deny" db-relationship-path="test8s"/>
+ <obj-relationship name="test7" source="Test8" target="Test7" deleteRule="Nullify" db-relationship-path="test7"/>
+
+ <db-relationship name="test12s" source="TEST11" target="TEST12" toMany="true">
+ <db-attribute-pair source="ID" target="TEST11_ID"/>
+ </db-relationship>
+ <db-relationship name="test11" source="TEST12" target="TEST11">
+ <db-attribute-pair source="TEST11_ID" target="ID"/>
+ </db-relationship>
+ <obj-relationship name="test12s" source="Test11" target="Test12" deleteRule="Deny" db-relationship-path="test12s"/>
+ <obj-relationship name="test1" source="Test12" target="Test11" deleteRule="Nullify" db-relationship-path="test11"/>
+</data-map>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.sql
----------------------------------------------------------------------
diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.sql b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.sql
new file mode 100644
index 0000000..6f7a7fa
--- /dev/null
+++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.sql
@@ -0,0 +1,105 @@
+-- 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 SCHEMA schema_01;
+SET SCHEMA schema_01;
+
+CREATE TABLE schema_01.TEST1(
+ ID INTEGER NOT NULL,
+ PRIMARY KEY (ID)
+);
+
+CREATE TABLE schema_01.TEST2(
+ ID INTEGER NOT NULL,
+ TEST1_ID INTEGER,
+ PRIMARY KEY (ID)
+);
+
+CREATE TABLE schema_01.TEST3(
+ ID INTEGER NOT NULL,
+ PRIMARY KEY (ID)
+);
+
+CREATE TABLE schema_01.TEST4(
+ ID INTEGER NOT NULL,
+ TEST3_ID INTEGER,
+ PRIMARY KEY (ID)
+);
+
+ALTER TABLE schema_01.TEST4
+ADD FOREIGN KEY (TEST3_ID)
+REFERENCES schema_01.TEST3 (ID)
+;
+
+CREATE TABLE schema_01.TEST5(
+ ID INTEGER NOT NULL,
+ PRIMARY KEY (ID)
+);
+
+CREATE TABLE schema_01.TEST6(
+ ID INTEGER NOT NULL,
+ TEST5_ID INTEGER,
+ PRIMARY KEY (ID)
+);
+
+ALTER TABLE schema_01.TEST6
+ADD FOREIGN KEY (TEST5_ID)
+REFERENCES schema_01.TEST5 (ID)
+;
+
+CREATE TABLE schema_01.TEST7(
+ ID INTEGER NOT NULL,
+ PRIMARY KEY (ID)
+);
+
+CREATE TABLE schema_01.TEST8(
+ ID INTEGER NOT NULL,
+ TEST7_ID INTEGER,
+ PRIMARY KEY (ID)
+);
+
+ALTER TABLE schema_01.TEST8
+ADD FOREIGN KEY (TEST7_ID)
+REFERENCES schema_01.TEST7 (ID)
+;
+
+CREATE TABLE schema_01.TEST9(
+ ID INTEGER NOT NULL,
+ PRIMARY KEY (ID)
+);
+
+CREATE TABLE schema_01.TEST10(
+ ID INTEGER NOT NULL,
+ TEST9_ID INTEGER,
+ PRIMARY KEY (ID)
+);
+
+CREATE TABLE schema_01.TEST11(
+ ID INTEGER NOT NULL,
+ PRIMARY KEY (ID)
+);
+
+CREATE TABLE schema_01.TEST12(
+ ID INTEGER NOT NULL,
+ TEST11_ID INTEGER,
+ PRIMARY KEY (ID)
+);
+
+ALTER TABLE schema_01.TEST12
+ADD FOREIGN KEY (TEST11_ID)
+REFERENCES schema_01.TEST11 (ID)
+;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationshipFirst-pom.xml
----------------------------------------------------------------------
diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationshipFirst-pom.xml b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationshipFirst-pom.xml
new file mode 100644
index 0000000..5501d70
--- /dev/null
+++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationshipFirst-pom.xml
@@ -0,0 +1,49 @@
+<!--
+ ~ 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>cayenne-maven-plugin</artifactId>
+ <configuration>
+ <map>target/test-classes/org/apache/cayenne/tools/dbimport/testExcludeRelationshipFirst.map.xml</map>
+
+ <dataSource>
+ <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
+ <url>jdbc:derby:memory:DbImporterMojoTest;create=true</url>
+ </dataSource>
+
+ <dbimport>
+ <schema>
+ <name>SCHEMA_01</name>
+ <excludeRelationship>test2s</excludeRelationship>
+ <excludeRelationship>test1</excludeRelationship>
+ </schema>
+ </dbimport>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationshipFirst.map.xml-result
----------------------------------------------------------------------
diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationshipFirst.map.xml-result b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationshipFirst.map.xml-result
new file mode 100644
index 0000000..15cadd2
--- /dev/null
+++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationshipFirst.map.xml-result
@@ -0,0 +1,40 @@
+<?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/10/modelMap"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://cayenne.apache.org/schema/10/modelMap http://cayenne.apache.org/schema/10/modelMap.xsd"
+ project-version="10">
+ <property name="defaultSchema" value="SCHEMA_01"/>
+
+ <db-entity name="TEST1" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ </db-entity>
+ <db-entity name="TEST2" schema="SCHEMA_01">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="10"/>
+ <db-attribute name="TEST1_ID" type="INTEGER" length="10"/>
+ </db-entity>
+
+ <obj-entity name="Test1" className="Test1" dbEntityName="TEST1"/>
+ <obj-entity name="Test2" className="Test2" dbEntityName="TEST2">
+ <obj-attribute name="test1Id" type="int" db-attribute-path="TEST1_ID"/>
+ </obj-entity>
+
+
+</data-map>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/66af8b36/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationshipFirst.sql
----------------------------------------------------------------------
diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationshipFirst.sql b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationshipFirst.sql
new file mode 100644
index 0000000..140b9ca
--- /dev/null
+++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationshipFirst.sql
@@ -0,0 +1,37 @@
+-- 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 SCHEMA schema_01;
+SET SCHEMA schema_01;
+
+CREATE TABLE schema_01.TEST1(
+ ID INTEGER NOT NULL,
+ PRIMARY KEY (ID)
+);
+
+CREATE TABLE schema_01.TEST2(
+ ID INTEGER NOT NULL,
+ TEST1_ID INTEGER,
+ PRIMARY KEY (ID)
+);
+
+ALTER TABLE schema_01.TEST2
+ADD FOREIGN KEY (TEST1_ID)
+REFERENCES schema_01.TEST1 (ID)
+;
+
+
[2/5] cayenne git commit: CAY-2392 Allow to remove DataNode
Posted by nt...@apache.org.
CAY-2392 Allow to remove DataNode
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/8f67218f
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/8f67218f
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/8f67218f
Branch: refs/heads/master
Commit: 8f67218f45038b668e520c949c1bbfc920a2d215
Parents: 8d79f45
Author: Arseni Bulatski <an...@gmail.com>
Authored: Mon Jan 15 16:59:56 2018 +0300
Committer: Arseni Bulatski <an...@gmail.com>
Committed: Mon Jan 15 17:01:57 2018 +0300
----------------------------------------------------------------------
docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
.../org/apache/cayenne/modeler/action/DefaultActionManager.java | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8f67218f/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index 7958307..871929d 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -15,6 +15,7 @@ Changes/New Features:
CAY-2372 Extract new modules from cayenne-server
CAY-2377 Cleanup deprecated code.
+CAY-2392 Allow to remove DataNode
Bug Fixes:
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8f67218f/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DefaultActionManager.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DefaultActionManager.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DefaultActionManager.java
index ed865f9..1b74901 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DefaultActionManager.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DefaultActionManager.java
@@ -169,7 +169,8 @@ public class DefaultActionManager implements ActionManager {
DATA_NODE_ACTIONS = new HashSet<String>(DOMAIN_ACTIONS);
DATA_NODE_ACTIONS.addAll(Arrays.asList(
- LinkDataMapsAction.class.getName()));
+ LinkDataMapsAction.class.getName(),
+ RemoveAction.class.getName()));
DATA_MAP_ACTIONS = new HashSet<String>(DOMAIN_ACTIONS);
DATA_MAP_ACTIONS.addAll(Arrays.asList(
[3/5] cayenne git commit: Merge remote-tracking branch
'remotes/parent/pr/253' into asf-master
Posted by nt...@apache.org.
Merge remote-tracking branch 'remotes/parent/pr/253' into asf-master
# Conflicts:
# docs/doc/src/main/resources/RELEASE-NOTES.txt
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/3fa68189
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/3fa68189
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/3fa68189
Branch: refs/heads/master
Commit: 3fa68189fa90883fa4f0ecadf2da3f76408e2107
Parents: 1e8ed89 66af8b3
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Jan 19 15:21:30 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Jan 19 15:21:30 2018 +0300
----------------------------------------------------------------------
.../apache/cayenne/tools/DbImporterTask.java | 10 +-
.../cayenne/tools/DbImporterTaskTest.java | 39 ++---
.../testExcludeRelationshipFirst.map.xml-result | 40 ++++++
.../tools/testExcludeRelationshipFirst.xml | 38 +++++
.../tools/testExcludeRelationshipFirst.xml.sql | 37 +++++
.../cayenne/dbsync/merge/DataMapMerger.java | 2 +-
.../dbsync/merge/DbRelationshipDictionary.java | 31 +++-
.../dbsync/merge/DbRelationshipMerger.java | 9 +-
.../reverse/dbimport/ExcludeRelationship.java | 34 +++++
.../reverse/dbimport/FilterContainer.java | 26 +++-
.../dbsync/reverse/dbimport/IncludeTable.java | 29 ++++
.../reverse/dbload/RelationshipLoader.java | 39 ++---
.../reverse/filters/FiltersConfigBuilder.java | 63 +++++++-
.../cayenne/tools/model/FilterContainer.java | 20 +++
.../cayenne/tools/model/IncludeTable.java | 21 +++
.../cayenne/tools/model/PatternParam.java | 7 +
.../org/apache/cayenne/tools/DbImportIT.java | 20 +++
.../cayenne/tools/model/IncludeTableTest.java | 12 ++
.../cayenne/tools/dbimport_excludeRel.gradle | 43 ++++++
.../apache/cayenne/tools/exclude_Table.map.xml | 44 ++++++
.../org/apache/cayenne/tools/exclude_Table.sql | 40 ++++++
docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
docs/doc/src/main/resources/UPGRADE.txt | 2 +
.../cayenne/tools/DbImporterMojoTest.java | 10 ++
.../dbimport/testExcludeRelationship-pom.xml | 55 +++++++
.../dbimport/testExcludeRelationship.map.xml | 142 +++++++++++++++++++
.../testExcludeRelationship.map.xml-result | 138 ++++++++++++++++++
.../tools/dbimport/testExcludeRelationship.sql | 105 ++++++++++++++
.../testExcludeRelationshipFirst-pom.xml | 49 +++++++
.../testExcludeRelationshipFirst.map.xml-result | 40 ++++++
.../dbimport/testExcludeRelationshipFirst.sql | 37 +++++
31 files changed, 1127 insertions(+), 56 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fa68189/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --cc docs/doc/src/main/resources/RELEASE-NOTES.txt
index cb8b27c,67e3e02..053c8f7
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@@ -15,7 -15,7 +15,8 @@@ Changes/New Features
CAY-2372 Extract new modules from cayenne-server
CAY-2377 Cleanup deprecated code.
+ CAY-2391 Add excludeRelationship in dbImport
+CAY-2393 Add sqlserver-docker profile to automate tests on SQLServer
Bug Fixes:
[5/5] cayenne git commit: Merge remote-tracking branch
'remotes/parent/pr/254' into asf-master
Posted by nt...@apache.org.
Merge remote-tracking branch 'remotes/parent/pr/254' into asf-master
# Conflicts:
# docs/doc/src/main/resources/RELEASE-NOTES.txt
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/84687a78
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/84687a78
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/84687a78
Branch: refs/heads/master
Commit: 84687a7874b4cf0107809d0feea82c394a826b46
Parents: 8d66f55 8f67218
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Jan 19 15:27:37 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Jan 19 15:27:37 2018 +0300
----------------------------------------------------------------------
docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
.../org/apache/cayenne/modeler/action/DefaultActionManager.java | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/84687a78/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --cc docs/doc/src/main/resources/RELEASE-NOTES.txt
index f64ec84,871929d..4b6d894
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@@ -27,6 -26,6 +27,7 @@@ CAY-2382 Lack of synchronization in Dat
CAY-2387 Can't select byte[] property with ColumnSelect
CAY-2388 Modeler: Visualization issues with undo/redo actions for attributes and relationships
CAY-2389 DbEntity qualifier with DbPath expression translates into wrong SQL
++CAY-2392 Modeler: Unable to remove DataNode
----------------------------------
Release: 4.1.M1
[4/5] cayenne git commit: CAY-2395 cdbimport: add option to skip
user-defined relationships minor cleanup
Posted by nt...@apache.org.
CAY-2395 cdbimport: add option to skip user-defined relationships
minor cleanup
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/8d66f55b
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/8d66f55b
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/8d66f55b
Branch: refs/heads/master
Commit: 8d66f55b4ef919ca1ad937d43b535011c7dbf5c8
Parents: 3fa6818
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Jan 19 15:23:55 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Jan 19 15:23:55 2018 +0300
----------------------------------------------------------------------
.../cayenne/dbsync/reverse/dbimport/FilterContainer.java | 2 +-
.../cayenne/dbsync/reverse/filters/FiltersConfigBuilder.java | 6 +++---
docs/doc/src/main/resources/RELEASE-NOTES.txt | 2 +-
docs/doc/src/main/resources/UPGRADE.txt | 2 --
4 files changed, 5 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8d66f55b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/FilterContainer.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/FilterContainer.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/FilterContainer.java
index f548863..552b6e7 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/FilterContainer.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/FilterContainer.java
@@ -132,7 +132,7 @@ public abstract class FilterContainer {
/**
* @since 4.1
*/
- public void clearExcludeRelationship() {
+ public void clearExcludeRelationships() {
excludeRelationshipCollection.clear();
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8d66f55b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/filters/FiltersConfigBuilder.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/filters/FiltersConfigBuilder.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/filters/FiltersConfigBuilder.java
index 73e938a..dbc2111 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/filters/FiltersConfigBuilder.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/filters/FiltersConfigBuilder.java
@@ -343,12 +343,12 @@ public final class FiltersConfigBuilder {
catalog.clearExcludeProcedures();
catalog.clearIncludeColumns();
catalog.clearExcludeColumns();
- catalog.clearExcludeRelationship();
+ catalog.clearExcludeRelationships();
for (Schema schema : catalog.getSchemas()) {
schema.clearIncludeColumns();
schema.clearExcludeColumns();
- schema.clearExcludeRelationship();
+ schema.clearExcludeRelationships();
}
}
@@ -358,7 +358,7 @@ public final class FiltersConfigBuilder {
engineering.clearExcludeProcedures();
engineering.clearIncludeColumns();
engineering.clearExcludeColumns();
- engineering.clearExcludeRelationship();
+ engineering.clearExcludeRelationships();
engineering.getSchemas().clear();
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8d66f55b/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index 053c8f7..f64ec84 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -15,7 +15,7 @@ Changes/New Features:
CAY-2372 Extract new modules from cayenne-server
CAY-2377 Cleanup deprecated code.
-CAY-2391 Add excludeRelationship in dbImport
+CAY-2391 cdbimport: add option to skip user-defined relationships
CAY-2393 Add sqlserver-docker profile to automate tests on SQLServer
Bug Fixes:
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8d66f55b/docs/doc/src/main/resources/UPGRADE.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/UPGRADE.txt b/docs/doc/src/main/resources/UPGRADE.txt
index 3086988..0c9fc00 100644
--- a/docs/doc/src/main/resources/UPGRADE.txt
+++ b/docs/doc/src/main/resources/UPGRADE.txt
@@ -16,8 +16,6 @@ UPGRADING TO 4.1.M2
- cayenne-osgi module contains OSGi related functionality.
- cayenne-rop-server ROP server part.
-* Per CAY-2391 added new excludeRelationship option in dbImport.
-
UPGRADING TO 4.1.M1
* Per CAY-2351 Minimum supported Java version is now Java 8. There is no options to use Cayenne 4.1 with earlier