Remove TokenComparator as MergerTokens are now directly comparable
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/a026d830 Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/a026d830 Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/a026d830 Branch: refs/heads/master Commit: a026d83049b9b6918f017a6acea1ee4d2a557b16 Parents: 67e951b Author: Nikita Timofeev <stari...@gmail.com> Authored: Thu Dec 15 18:13:08 2016 +0300 Committer: Nikita Timofeev <stari...@gmail.com> Committed: Thu Dec 15 18:13:08 2016 +0300 ---------------------------------------------------------------------- .../cayenne/dbsync/merge/DataMapMerger.java | 3 +- .../dbsync/merge/token/TokenComparator.java | 35 ----- .../dbsync/merge/token/TokenComparatorTest.java | 157 ------------------- .../dbsync/merge/token/TokenSortTest.java | 150 ++++++++++++++++++ .../tools/dbimport/DefaultDbImportAction.java | 3 +- .../db/MergerTokenSelectorController.java | 3 +- .../tools/dbimport/testComplexChangeOrder.sql | 12 +- 7 files changed, 157 insertions(+), 206 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cayenne/blob/a026d830/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 b5bfd40..7b78321 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 @@ -22,7 +22,6 @@ package org.apache.cayenne.dbsync.merge; import org.apache.cayenne.dbsync.merge.factory.MergerTokenFactory; import org.apache.cayenne.dbsync.merge.token.EmptyValueForNullProvider; import org.apache.cayenne.dbsync.merge.token.MergerToken; -import org.apache.cayenne.dbsync.merge.token.TokenComparator; import org.apache.cayenne.dbsync.merge.token.ValueForNullProvider; import org.apache.cayenne.dbsync.reverse.filters.FiltersConfig; import org.apache.cayenne.dbsync.reverse.filters.PatternFilter; @@ -76,7 +75,7 @@ public class DataMapMerger implements Merger<DataMap> { for(AbstractMerger<?, ?> merger : mergerList) { tokens.addAll(merger.createMergeTokens()); } - Collections.sort(tokens, new TokenComparator()); + Collections.sort(tokens); return tokens; } http://git-wip-us.apache.org/repos/asf/cayenne/blob/a026d830/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/TokenComparator.java ---------------------------------------------------------------------- diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/TokenComparator.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/TokenComparator.java deleted file mode 100644 index abbdb77..0000000 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/TokenComparator.java +++ /dev/null @@ -1,35 +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.dbsync.merge.token; - -import java.util.Comparator; - -/** - * Simple sort of merge tokens. - * Just move all relationships creation tokens to the end of the list. - * @since 4.0 - */ -public class TokenComparator implements Comparator<MergerToken> { - - @Override - public int compare(MergerToken o1, MergerToken o2) { - return o1.compareTo(o2); - } -} http://git-wip-us.apache.org/repos/asf/cayenne/blob/a026d830/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/TokenComparatorTest.java ---------------------------------------------------------------------- diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/TokenComparatorTest.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/TokenComparatorTest.java deleted file mode 100644 index d731f2f..0000000 --- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/TokenComparatorTest.java +++ /dev/null @@ -1,157 +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.dbsync.merge.token; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import org.apache.cayenne.dbsync.merge.token.db.AddColumnToDb; -import org.apache.cayenne.dbsync.merge.token.db.AddRelationshipToDb; -import org.apache.cayenne.dbsync.merge.token.db.CreateTableToDb; -import org.apache.cayenne.dbsync.merge.token.db.DropColumnToDb; -import org.apache.cayenne.dbsync.merge.token.db.DropRelationshipToDb; -import org.apache.cayenne.dbsync.merge.token.db.DropTableToDb; -import org.apache.cayenne.dbsync.merge.token.model.AddColumnToModel; -import org.apache.cayenne.dbsync.merge.token.model.AddRelationshipToModel; -import org.apache.cayenne.dbsync.merge.token.model.CreateTableToModel; -import org.apache.cayenne.dbsync.merge.token.model.DropColumnToModel; -import org.apache.cayenne.dbsync.merge.token.model.DropRelationshipToModel; -import org.apache.cayenne.dbsync.merge.token.model.DropTableToModel; -import org.junit.Before; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class TokenComparatorTest { - - TokenComparator comparator; - - @Before - public void setUp() { - comparator = new TokenComparator(); - } - - private List<String> toClassesNames(List<MergerToken> sort) { - List<String> res = new ArrayList<String>(sort.size()); - for (MergerToken mergerToken : sort) { - res.add(mergerToken.getClass().getSimpleName()); - } - return res; - } - - @Test - public void testSortStability() throws Exception { - List<MergerToken> tokens = Arrays.<MergerToken>asList( - new AddRelationshipToModel(null, null), - new AddColumnToModel(null, null), - new AddColumnToDb(null, null), - new CreateTableToModel(null), - new DropTableToModel(null), - new DropColumnToModel(null, null), - new DropRelationshipToModel(null, null) - ); - Collections.sort(tokens, comparator); - List<String> actual = toClassesNames(tokens); - - List<String> expected = Arrays.asList( - "DropRelationshipToModel", - "DropColumnToModel", - "DropTableToModel", - "CreateTableToModel", - "AddColumnToDb", - "AddColumnToModel", - "AddRelationshipToModel" - ); - - assertEquals(expected, actual); - - Collections.sort(tokens, comparator); - actual = toClassesNames(tokens); - assertEquals(expected, actual); - - List<MergerToken> tokens2 = Arrays.<MergerToken>asList( - new AddColumnToModel(null, null), - new AddRelationshipToModel(null, null), - new CreateTableToModel(null), - new AddColumnToDb(null, null), - new DropColumnToModel(null, null), - new DropRelationshipToModel(null, null), - new DropTableToModel(null) - ); - Collections.sort(tokens2, comparator); - actual = toClassesNames(tokens); - assertEquals(expected, actual); - } - - @Test - public void testToModelTokensCompare() throws Exception { - List<MergerToken> tokens = Arrays.<MergerToken>asList( - new DropColumnToModel(null, null), - new DropRelationshipToModel(null, null), - new DropTableToModel(null), - new AddColumnToDb(null, null), - new AddRelationshipToModel(null, null), - new AddColumnToModel(null, null), - new CreateTableToModel(null)); - Collections.sort(tokens, comparator); - - List<String> actual = toClassesNames(tokens); - List<String> expected = Arrays.asList( - "DropRelationshipToModel", - "DropColumnToModel", - "DropTableToModel", - "CreateTableToModel", - "AddColumnToDb", - "AddColumnToModel", - "AddRelationshipToModel" - ); - - assertEquals(expected, actual); - } - - @Test - public void testToDbTokensCompare() throws Exception { - List<MergerToken> tokens = Arrays.<MergerToken>asList( - new DropColumnToDb(null, null), - new DropRelationshipToDb(null, null), - new DropTableToDb(null), - new AddColumnToModel(null, null), - new AddRelationshipToDb(null, null), - new AddColumnToDb(null, null), - new CreateTableToDb(null)); - Collections.sort(tokens, comparator); - - List<String> actual = toClassesNames(tokens); - List<String> expected = Arrays.asList( - "DropRelationshipToDb", - "DropColumnToDb", - "DropTableToDb", - "CreateTableToDb", - "AddColumnToDb", - "AddColumnToModel", - "AddRelationshipToDb" - ); - - assertEquals(expected, actual); - } - -} http://git-wip-us.apache.org/repos/asf/cayenne/blob/a026d830/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/TokenSortTest.java ---------------------------------------------------------------------- diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/TokenSortTest.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/TokenSortTest.java new file mode 100644 index 0000000..27703a2 --- /dev/null +++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/TokenSortTest.java @@ -0,0 +1,150 @@ +/***************************************************************** + * 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.merge.token; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.apache.cayenne.dbsync.merge.token.db.AddColumnToDb; +import org.apache.cayenne.dbsync.merge.token.db.AddRelationshipToDb; +import org.apache.cayenne.dbsync.merge.token.db.CreateTableToDb; +import org.apache.cayenne.dbsync.merge.token.db.DropColumnToDb; +import org.apache.cayenne.dbsync.merge.token.db.DropRelationshipToDb; +import org.apache.cayenne.dbsync.merge.token.db.DropTableToDb; +import org.apache.cayenne.dbsync.merge.token.model.AddColumnToModel; +import org.apache.cayenne.dbsync.merge.token.model.AddRelationshipToModel; +import org.apache.cayenne.dbsync.merge.token.model.CreateTableToModel; +import org.apache.cayenne.dbsync.merge.token.model.DropColumnToModel; +import org.apache.cayenne.dbsync.merge.token.model.DropRelationshipToModel; +import org.apache.cayenne.dbsync.merge.token.model.DropTableToModel; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class TokenSortTest { + + private List<String> toClassesNames(List<MergerToken> sort) { + List<String> res = new ArrayList<String>(sort.size()); + for (MergerToken mergerToken : sort) { + res.add(mergerToken.getClass().getSimpleName()); + } + return res; + } + + @Test + public void testSortStability() throws Exception { + List<MergerToken> tokens = Arrays.<MergerToken>asList( + new AddRelationshipToModel(null, null), + new AddColumnToModel(null, null), + new AddColumnToDb(null, null), + new CreateTableToModel(null), + new DropTableToModel(null), + new DropColumnToModel(null, null), + new DropRelationshipToModel(null, null) + ); + Collections.sort(tokens); + List<String> actual = toClassesNames(tokens); + + List<String> expected = Arrays.asList( + "DropRelationshipToModel", + "DropColumnToModel", + "DropTableToModel", + "CreateTableToModel", + "AddColumnToDb", + "AddColumnToModel", + "AddRelationshipToModel" + ); + + assertEquals(expected, actual); + + Collections.sort(tokens); + actual = toClassesNames(tokens); + assertEquals(expected, actual); + + List<MergerToken> tokens2 = Arrays.<MergerToken>asList( + new AddColumnToModel(null, null), + new AddRelationshipToModel(null, null), + new CreateTableToModel(null), + new AddColumnToDb(null, null), + new DropColumnToModel(null, null), + new DropRelationshipToModel(null, null), + new DropTableToModel(null) + ); + Collections.sort(tokens2); + actual = toClassesNames(tokens); + assertEquals(expected, actual); + } + + @Test + public void testToModelTokensCompare() throws Exception { + List<MergerToken> tokens = Arrays.<MergerToken>asList( + new DropColumnToModel(null, null), + new DropRelationshipToModel(null, null), + new DropTableToModel(null), + new AddColumnToDb(null, null), + new AddRelationshipToModel(null, null), + new AddColumnToModel(null, null), + new CreateTableToModel(null)); + Collections.sort(tokens); + + List<String> actual = toClassesNames(tokens); + List<String> expected = Arrays.asList( + "DropRelationshipToModel", + "DropColumnToModel", + "DropTableToModel", + "CreateTableToModel", + "AddColumnToDb", + "AddColumnToModel", + "AddRelationshipToModel" + ); + + assertEquals(expected, actual); + } + + @Test + public void testToDbTokensCompare() throws Exception { + List<MergerToken> tokens = Arrays.<MergerToken>asList( + new DropColumnToDb(null, null), + new DropRelationshipToDb(null, null), + new DropTableToDb(null), + new AddColumnToModel(null, null), + new AddRelationshipToDb(null, null), + new AddColumnToDb(null, null), + new CreateTableToDb(null)); + Collections.sort(tokens); + + List<String> actual = toClassesNames(tokens); + List<String> expected = Arrays.asList( + "DropRelationshipToDb", + "DropColumnToDb", + "DropTableToDb", + "CreateTableToDb", + "AddColumnToDb", + "AddColumnToModel", + "AddRelationshipToDb" + ); + + assertEquals(expected, actual); + } + +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/a026d830/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java ---------------------------------------------------------------------- diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java index bee2de1..575b0a4 100644 --- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java +++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java @@ -30,7 +30,6 @@ import org.apache.cayenne.dbsync.merge.context.MergerContext; import org.apache.cayenne.dbsync.merge.token.MergerToken; import org.apache.cayenne.dbsync.reverse.dbload.ModelMergeDelegate; import org.apache.cayenne.dbsync.reverse.dbload.ProxyModelMergeDelegate; -import org.apache.cayenne.dbsync.merge.token.TokenComparator; import org.apache.cayenne.dbsync.merge.factory.MergerTokenFactory; import org.apache.cayenne.dbsync.merge.factory.MergerTokenFactoryProvider; import org.apache.cayenne.dbsync.naming.ObjectNameGenerator; @@ -96,7 +95,7 @@ public class DefaultDbImportAction implements DbImportAction { } protected static List<MergerToken> sort(List<MergerToken> reverse) { - Collections.sort(reverse, new TokenComparator()); + Collections.sort(reverse); return reverse; } http://git-wip-us.apache.org/repos/asf/cayenne/blob/a026d830/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerTokenSelectorController.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerTokenSelectorController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerTokenSelectorController.java index 20e31e3..14112c1 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerTokenSelectorController.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerTokenSelectorController.java @@ -20,7 +20,6 @@ package org.apache.cayenne.modeler.dialog.db; import org.apache.cayenne.dbsync.merge.context.MergeDirection; import org.apache.cayenne.dbsync.merge.token.MergerToken; -import org.apache.cayenne.dbsync.merge.token.TokenComparator; import org.apache.cayenne.dbsync.merge.factory.MergerTokenFactory; import org.apache.cayenne.modeler.Application; import org.apache.cayenne.modeler.util.CayenneController; @@ -232,7 +231,7 @@ public class MergerTokenSelectorController extends CayenneController { } } - Collections.sort(selectableTokensList, new TokenComparator()); + Collections.sort(selectableTokensList); AbstractTableModel model = (AbstractTableModel) view.getTokens().getModel(); model.fireTableDataChanged(); } http://git-wip-us.apache.org/repos/asf/cayenne/blob/a026d830/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testComplexChangeOrder.sql ---------------------------------------------------------------------- diff --git a/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testComplexChangeOrder.sql b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testComplexChangeOrder.sql index 583e1db..9885bc7 100644 --- a/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testComplexChangeOrder.sql +++ b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testComplexChangeOrder.sql @@ -24,15 +24,11 @@ CREATE TABLE schema_01.address ( PRIMARY KEY (id) ); -CREATE TABLE schema_01.parent ( - id INTEGER NOT NULL, - PRIMARY KEY (id) -); - CREATE TABLE schema_01.child ( address_id INTEGER , + "date" DATE, id INTEGER , - parent_id INTEGER, - CONSTRAINT fk_address FOREIGN KEY (address_id) REFERENCES schema_01.address (id), - CONSTRAINT fk_parent FOREIGN KEY (parent_id) REFERENCES schema_01.parent (id) + name VARCHAR(30) NOT NULL, + parent_id INTEGER , + CONSTRAINT fk_address FOREIGN KEY (address_id) REFERENCES schema_01.address (id) ); \ No newline at end of file