You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ko...@apache.org on 2015/04/24 00:13:01 UTC
[16/17] cayenne git commit: Merge remote-tracking branch
'apache/master'
Merge remote-tracking branch 'apache/master'
Conflicts:
cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
cayenne-server/src/main/java/org/apache/cayenne/access/loader/BooleanNameFilter.java
cayenne-server/src/main/java/org/apache/cayenne/access/loader/filters/DbPath.java
cayenne-server/src/main/java/org/apache/cayenne/access/loader/filters/EntityFilters.java
cayenne-server/src/main/java/org/apache/cayenne/access/loader/filters/FilterFactory.java
cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/DbPathTest.java
cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/FiltersFactory.java
cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Catalog.java
cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FilterContainer.java
cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilder.java
cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/ReverseEngineering.java
cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Schema.java
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java
plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
pom.xml
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/cd4e9eed
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/cd4e9eed
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/cd4e9eed
Branch: refs/heads/master
Commit: cd4e9eed2a8dd99a4a63716424708d5657fee5a1
Parents: f438729 2782e8d
Author: Alex Kolonitsky <Al...@gmail.com>
Authored: Fri Apr 24 01:08:17 2015 +0300
Committer: Alex Kolonitsky <Al...@gmail.com>
Committed: Fri Apr 24 01:08:17 2015 +0300
----------------------------------------------------------------------
assembly/pom.xml | 5 +-
.../main/resources/assemblies/assembly-src.xml | 5 +
build-tools/cayenne-checkers/pom.xml | 2 +-
build-tools/cayenne-coverage/pom.xml | 2 +-
build-tools/cayenne-legal/pom.xml | 2 +-
build-tools/cayenne-test-utilities/pom.xml | 2 +-
build-tools/pom.xml | 5 +-
cayenne-client/pom.xml | 40 +-
cayenne-crypto/pom.xml | 39 +-
.../value/DefaultValueTransformerFactory.java | 22 +-
cayenne-di/pom.xml | 39 +-
cayenne-lifecycle/pom.xml | 35 +-
cayenne-project/pom.xml | 36 +-
.../validation/DbAttributeValidator.java | 5 +-
.../validation/ProcedureParameterValidator.java | 5 +-
cayenne-server/pom.xml | 90 +-
.../java/org/apache/cayenne/BaseContext.java | 29 +-
.../java/org/apache/cayenne/ObjectContext.java | 43 +-
.../org/apache/cayenne/ResultBatchIterator.java | 79 ++
.../java/org/apache/cayenne/ResultIterator.java | 7 +-
.../org/apache/cayenne/access/DataPort.java | 533 ++++---
.../org/apache/cayenne/access/DbLoader.java | 621 ++++----
.../apache/cayenne/access/DbLoaderDelegate.java | 27 +-
.../access/HierarchicalObjectResolver.java | 3 +-
.../cayenne/access/OperationObserver.java | 4 +-
.../cayenne/access/PrefetchProcessorNode.java | 35 +-
.../org/apache/cayenne/access/QueryResult.java | 267 ----
.../access/loader/DbLoaderConfiguration.java | 42 +-
.../access/loader/DefaultDbLoaderDelegate.java | 15 +-
.../access/loader/LoggingDbLoaderDelegate.java | 76 +
.../loader/ManyToManyCandidateEntity.java | 19 +-
.../cayenne/access/loader/NameFilter.java | 2 +-
.../mapper/DefaultJdbc2JavaTypeMapper.java | 7 +-
.../loader/mapper/Jdbc2JavaTypeMapper.java | 2 +-
.../ejbql/EJBQLOrderByTranslator.java | 6 +
.../translator/select/QualifierTranslator.java | 52 +-
.../translator/select/SelectTranslator.java | 91 +-
.../apache/cayenne/access/types/CharType.java | 70 +-
.../access/util/DoNothingOperationObserver.java | 80 ++
.../server/DataContextFactory.java | 1 +
.../server/SyntheticNodeDataDomainProvider.java | 6 +
.../org/apache/cayenne/dba/AutoAdapter.java | 13 +-
.../java/org/apache/cayenne/dba/DbAdapter.java | 18 +-
.../org/apache/cayenne/dba/JdbcAdapter.java | 38 +-
.../org/apache/cayenne/dba/TypesHandler.java | 2 +-
.../org/apache/cayenne/dba/TypesMapping.java | 393 +++---
.../apache/cayenne/dba/derby/DerbyAdapter.java | 64 +-
.../cayenne/dba/firebird/FirebirdAdapter.java | 33 +-
.../dba/frontbase/FrontBasePkGenerator.java | 191 +--
.../apache/cayenne/dba/mysql/MySQLAdapter.java | 19 +
.../dba/oracle/Oracle8LOBBatchQueryWrapper.java | 2 +-
.../cayenne/dba/oracle/OracleAdapter.java | 40 +-
.../cayenne/dba/postgres/PostgresAdapter.java | 115 +-
.../dba/postgres/PostgresSelectTranslator.java | 76 +-
.../cayenne/dba/sqlite/SQLiteAdapter.java | 20 +
.../java/org/apache/cayenne/exp/Expression.java | 91 +-
.../cayenne/exp/LikeExpressionHelper.java | 1 -
.../apache/cayenne/exp/parser/Evaluator.java | 143 ++
.../java/org/apache/cayenne/map/DataMap.java | 40 +-
.../org/apache/cayenne/map/DbAttribute.java | 25 +
.../org/apache/cayenne/map/DbRelationship.java | 19 +
.../org/apache/cayenne/map/ObjAttribute.java | 6 +
.../org/apache/cayenne/map/ObjRelationship.java | 2 +
.../org/apache/cayenne/map/Relationship.java | 13 +-
.../apache/cayenne/map/naming/ExportedKey.java | 173 ++-
.../cayenne/merge/AddRelationshipToDb.java | 8 +-
.../cayenne/merge/AddRelationshipToModel.java | 38 +-
.../java/org/apache/cayenne/merge/DbMerger.java | 152 +-
.../apache/cayenne/merge/DbMergerConfig.java | 63 +
.../cayenne/merge/DropRelationshipToDb.java | 2 +-
.../cayenne/merge/DropRelationshipToModel.java | 4 +-
.../cayenne/merge/ProxyModelMergeDelegate.java | 108 ++
.../org/apache/cayenne/query/ObjectSelect.java | 69 +-
.../org/apache/cayenne/query/SQLSelect.java | 114 +-
.../org/apache/cayenne/query/SQLTemplate.java | 22 +-
.../cayenne/query/SQLTemplateMetadata.java | 117 +-
.../java/org/apache/cayenne/query/Select.java | 82 ++
.../org/apache/cayenne/query/SelectById.java | 149 +-
.../org/apache/cayenne/query/SelectQuery.java | 49 +-
.../apache/cayenne/reflect/BeanAccessor.java | 182 +--
.../org/apache/cayenne/reflect/MapAccessor.java | 52 +
.../apache/cayenne/reflect/PropertyUtils.java | 582 +++-----
.../cayenne/remote/IncrementalSelectQuery.java | 42 +-
.../apache/cayenne/util/EntityMergeSupport.java | 54 +-
.../apache/cayenne/velocity/BindDirective.java | 9 +-
.../apache/cayenne/velocity/ChainDirective.java | 2 +-
.../cayenne/velocity/VelocityParamSequence.java | 68 -
.../velocity/VelocitySQLTemplateProcessor.java | 20 +-
.../org/apache/cayenne/ejbql/EJBQLParser.jjt | 5 +-
.../org/apache/cayenne/dba/db2/types.xml | 12 +
.../org/apache/cayenne/dba/derby/types.xml | 12 +
.../org/apache/cayenne/dba/firebird/types.xml | 6 +
.../org/apache/cayenne/dba/h2/types.xml | 15 +
.../org/apache/cayenne/dba/hsqldb/types.xml | 12 +
.../org/apache/cayenne/dba/mysql/types.xml | 15 +
.../org/apache/cayenne/dba/oracle/types.xml | 18 +
.../org/apache/cayenne/dba/postgres/types.xml | 15 +
.../org/apache/cayenne/dba/sqlite/types.xml | 12 +
.../org/apache/cayenne/dba/sqlserver/types.xml | 14 +
.../org/apache/cayenne/dba/sybase/types.xml | 15 +
.../resources/org/apache/cayenne/dba/types.xml | 18 +
.../org/apache/cayenne/CayenneDataObjectIT.java | 260 ++--
.../org/apache/cayenne/MockBaseContext.java | 11 +-
.../cayenne/access/DataContextBlobIT.java | 4 +-
.../apache/cayenne/access/DataContextIT.java | 28 +
.../org/apache/cayenne/access/DbLoaderIT.java | 227 +--
.../cayenne/access/DbLoaderPartialIT.java | 8 +-
.../cayenne/access/NestedDataContextReadIT.java | 14 +
.../cayenne/access/ReturnTypesMappingIT.java | 88 ++
...ectActionWithUnsupportedDistinctTypesIT.java | 163 +++
.../cayenne/access/types/CharTypeTest.java | 17 +-
.../server/ServerRuntimeBuilderIT.java | 38 +
.../datafactory/CombinedValueProvider.java | 25 +
.../apache/cayenne/datafactory/DataFactory.java | 407 ++++++
.../datafactory/DictionaryValueProvider.java | 104 ++
.../cayenne/datafactory/ValueProvider.java | 707 ++++++++++
.../cayenne/exp/Expression_ParamsTest.java | 6 +-
.../cayenne/exp/LikeExpressionHelperTest.java | 83 ++
.../org/apache/cayenne/exp/PropertyTest.java | 36 +-
.../cayenne/exp/parser/EvaluatorTest.java | 133 ++
.../org/apache/cayenne/map/DataMapTest.java | 6 +-
.../java/org/apache/cayenne/map/DbEntityIT.java | 4 +-
.../apache/cayenne/map/DbRelationshipIT.java | 4 +-
.../apache/cayenne/map/ObjRelationshipIT.java | 14 +-
.../apache/cayenne/map/RelationshipTest.java | 2 +-
.../map/naming/LegacyNameGeneratorTest.java | 4 +-
.../org/apache/cayenne/merge/DbMergerTest.java | 25 +-
.../cayenne/merge/DropColumnToModelIT.java | 8 +-
.../merge/DropRelationshipToModelIT.java | 43 +-
.../org/apache/cayenne/merge/MergeCase.java | 25 +-
.../apache/cayenne/merge/MergerFactoryIT.java | 58 +-
.../merge/builders/DbAttributeBuilder.java | 15 +-
.../cayenne/merge/builders/DefaultBuilder.java | 2 +-
.../org/apache/cayenne/query/EJBQLQueryIT.java | 43 +
.../cayenne/query/ObjectSelect_RunIT.java | 85 +-
.../org/apache/cayenne/query/SQLSelectIT.java | 284 +++-
.../org/apache/cayenne/query/SQLSelectTest.java | 56 +-
.../org/apache/cayenne/query/SQLTemplateIT.java | 27 +-
.../cayenne/query/SelectQueryBasicsTest.java | 159 ---
.../org/apache/cayenne/query/SelectQueryIT.java | 1335 ++++++++++--------
.../apache/cayenne/query/SelectQueryTest.java | 190 +++
.../cayenne/reflect/PropertyUtilsTest.java | 649 +++++----
.../cayenne/testdo/lob/NClobTestEntity.java | 28 +
.../testdo/lob/auto/_NClobTestEntity.java | 55 +
.../return_types/auto/_ReturnTypesMap1.java | 21 +
.../return_types/auto/_ReturnTypesMapLobs1.java | 8 +
.../unsupported_distinct_types/Customer.java | 27 +
.../unsupported_distinct_types/Product.java | 27 +
.../UnsupportedDistinctTypes.java | 36 +
.../auto/_Customer.java | 48 +
.../auto/_Product.java | 79 ++
.../auto/_UnsupportedDistinctTypes.java | 12 +
.../cayenne/unit/di/server/CayenneProjects.java | 1 +
.../cayenne/unit/di/server/SchemaBuilder.java | 2 +-
.../cayenne/util/EntityMergeSupportIT.java | 4 +-
.../cayenne-unsupported-distinct-types.xml | 4 +
cayenne-server/src/test/resources/lob.map.xml | 7 +
.../src/test/resources/return-types.map.xml | 8 +
.../src/test/resources/things.map.xml | 8 +-
.../unsupported-distinct-types.map.xml | 57 +
cayenne-tools/pom.xml | 45 +-
.../java/org/apache/cayenne/gen/Artifact.java | 1 +
.../cayenne/gen/ClassGenerationAction.java | 32 +-
.../cayenne/tools/CayenneGeneratorTask.java | 25 +-
.../apache/cayenne/tools/DbImporterTask.java | 54 +-
.../org/apache/cayenne/tools/ExcludeTable.java | 2 +-
.../cayenne/tools/dbimport/DbImportAction.java | 123 +-
.../tools/dbimport/DbImportConfiguration.java | 40 +-
.../dbimport/DbImportDbLoaderDelegate.java | 15 +-
.../tools/dbimport/config/AntNestedElement.java | 6 +-
.../cayenne/tools/dbimport/config/Catalog.java | 2 +-
.../config/DefaultReverseEngineeringLoader.java | 20 +-
.../config/DefaultTypeMapperBuilder.java | 2 +-
.../tools/dbimport/config/ExcludeColumn.java | 2 +-
.../tools/dbimport/config/ExcludeProcedure.java | 2 +-
.../tools/dbimport/config/FilterContainer.java | 4 +-
.../dbimport/config/FiltersConfigBuilder.java | 2 +-
.../tools/dbimport/config/IncludeColumn.java | 2 +-
.../tools/dbimport/config/IncludeProcedure.java | 2 +-
.../tools/dbimport/config/IncludeTable.java | 2 +-
.../tools/dbimport/config/PatternParam.java | 2 +-
.../dbimport/config/ReverseEngineering.java | 58 +-
.../config/ReverseEngineeringLoader.java | 2 +-
.../cayenne/tools/dbimport/config/Schema.java | 2 +-
.../cayenne/tools/dbimport/config/Type.java | 2 +-
.../tools/dbimport/config/TypeMapper.java | 2 +-
.../src/main/resources/reverseEngineering.xsd | 139 ++
.../templates/v1_2/client-superclass.vm | 6 +-
.../templates/v1_2/embeddable-singleclass.vm | 5 +-
.../templates/v1_2/embeddable-superclass.vm | 5 +-
.../resources/templates/v1_2/singleclass.vm | 6 +-
.../main/resources/templates/v1_2/superclass.vm | 6 +-
.../map/naming/DefaultNameGeneratorTest.java | 6 +-
.../cayenne/tools/DbImporterTaskTest.java | 28 +-
.../tools/dbimport/DbImportActionTest.java | 30 +
.../dbimport/DbImportDbLoaderDelegateTest.java | 7 -
.../DefaultReverseEngineeringLoaderTest.java | 38 +
.../tools/build-skip-primary-key-loading.xml | 37 +
.../tools/build-skip-relationships-loading.xml | 37 +
.../apache/cayenne/tools/build-table-types.xml | 40 +
...reverseEngineering-skipPrimaryKeyLoading.xml | 23 +
...erseEngineering-skipRelationshipsLoading.xml | 23 +
.../config/reverseEngineering-tableTypes.xml | 29 +
docs/doc/pom.xml | 2 +-
docs/doc/src/main/resources/KEYS | 39 +
docs/doc/src/main/resources/RELEASE-NOTES.txt | 31 +-
docs/doc/src/main/resources/UPGRADE.txt | 9 +
docs/docbook/cayenne-guide/pom.xml | 2 +-
.../src/docbkx/including-cayenne-in-project.xml | 6 +
.../src/docbkx/performance-tuning.xml | 10 +-
docs/docbook/docbook-stylesheets/pom.xml | 2 +-
docs/docbook/getting-started-rop/pom.xml | 2 +-
docs/docbook/getting-started/pom.xml | 2 +-
docs/docbook/pom.xml | 4 +-
docs/docbook/upgrade-guide/pom.xml | 2 +-
.../upgrade-guide/src/docbkx/new-features.xml | 298 ++--
docs/pom.xml | 2 +-
itests/cayenne-tools-itest/pom.xml | 2 +-
itests/pom.xml | 2 +-
modeler/cayenne-modeler-generic-ext/pom.xml | 41 +-
modeler/cayenne-modeler-generic/pom.xml | 41 +-
modeler/cayenne-modeler-mac-ext/pom.xml | 40 +-
modeler/cayenne-modeler-mac-legacy/pom.xml | 40 +-
modeler/cayenne-modeler-mac/pom.xml | 38 +-
modeler/cayenne-modeler-win/pom.xml | 23 +-
modeler/cayenne-modeler/pom.xml | 44 +-
.../modeler/CayenneModelerController.java | 11 +-
.../cayenne/modeler/ProjectController.java | 24 +-
.../apache/cayenne/modeler/ProjectTreeView.java | 59 +-
.../cayenne/modeler/dialog/FindDialog.java | 104 +-
.../cayenne/modeler/dialog/LogConsole.java | 23 +-
.../cayenne/modeler/dialog/LogConsoleView.java | 69 +-
.../dialog/ResolveDbRelationshipDialog.java | 2 +-
.../InferRelationshipsController.java | 2 +-
.../InferRelationshipsControllerBase.java | 2 +-
.../dialog/codegen/CustomModeController.java | 6 +
.../modeler/dialog/codegen/CustomModePanel.java | 10 +-
.../codegen/CustomPreferencesUpdater.java | 17 +-
.../dialog/codegen/StandardModeController.java | 4 +-
.../dialog/codegen/StandardModePanel.java | 9 +
.../modeler/dialog/db/DbLoaderHelper.java | 127 +-
.../modeler/dialog/db/DbLoaderMergeDialog.java | 131 --
.../dialog/db/DbLoaderOptionsDialog.java | 72 +-
.../modeler/dialog/db/MergerOptions.java | 46 +-
.../dialog/objentity/ObjRelationshipInfo.java | 12 +-
.../ObjEntityAttributeRelationshipTab.java | 14 +
.../editor/ObjRelationshipTableModel.java | 2 +-
.../modeler/editor/ProcedureTabbedView.java | 14 +-
.../modeler/editor/SQLTemplateScriptsTab.java | 54 +-
.../DbEntityAttributeRelationshipTab.java | 14 +
.../dbentity/DbRelationshipTableModel.java | 2 +-
.../modeler/pref/ProjectStatePreferences.java | 323 +++++
.../util/state/AttributeDisplayEventType.java | 107 ++
.../util/state/DataMapDisplayEventType.java | 58 +
.../util/state/DataNodeDisplayEventType.java | 55 +
.../modeler/util/state/DisplayEventType.java | 76 +
.../modeler/util/state/DisplayEventTypes.java | 198 +++
.../util/state/DomainDisplayEventType.java | 49 +
.../EmbeddableAttributeDisplayEventType.java | 98 ++
.../util/state/EmbeddableDisplayEventType.java | 62 +
.../util/state/EntityDisplayEventType.java | 84 ++
.../state/MultipleObjectsDisplayEventType.java | 166 +++
.../util/state/ProcedureDisplayEventType.java | 63 +
.../ProcedureParameterDisplayEventType.java | 93 ++
.../modeler/util/state/ProjectStateUtil.java | 72 +
.../util/state/QueryDisplayEventType.java | 62 +
.../state/RelationshipDisplayEventType.java | 107 ++
.../apache/cayenne/modeler/images/popupmenu.gif | Bin 0 -> 285 bytes
modeler/cayenne-wocompat/pom.xml | 39 +-
.../cayenne/wocompat/EOModelProcessor.java | 4 +-
modeler/pom.xml | 2 +-
plugins/maven-cayenne-modeler-plugin/pom.xml | 40 +-
plugins/maven-cayenne-plugin/pom.xml | 40 +-
.../cayenne/tools/CayenneGeneratorMojo.java | 60 +-
.../apache/cayenne/tools/DbGeneratorMojo.java | 22 +-
.../apache/cayenne/tools/DbImporterMojo.java | 80 +-
.../tools/DbImporterMojoConfigurationTest.java | 38 +-
.../cayenne/tools/DbImporterMojoTest.java | 263 ++--
.../org/apache/cayenne/tools/DerbyManager.java | 63 +
.../cayenne/tools/config/pom-schema-2.xml | 41 +
.../config/pom-skip-primary-key-loading.xml | 39 +
.../config/pom-skip-relationships-loading.xml | 39 +
.../cayenne/tools/config/pom-table-types.xml | 41 +
.../cayenne/tools/dbimport/testOneToOne-pom.xml | 39 +
.../tools/dbimport/testOneToOne.map.xml-result | 58 +
.../cayenne/tools/dbimport/testOneToOne.sql | 41 +
.../dbimport/testPreserveRelationships-pom.xml | 44 +
.../dbimport/testPreserveRelationships.map.xml | 44 +
.../testPreserveRelationships.map.xml-result | 34 +
.../dbimport/testPreserveRelationships.sql | 28 +
.../dbimport/testSkipPrimaryKeyLoading-pom.xml | 43 +
.../dbimport/testSkipPrimaryKeyLoading.map.xml | 35 +
.../testSkipPrimaryKeyLoading.map.xml-result | 41 +
.../dbimport/testSkipPrimaryKeyLoading.sql | 30 +
.../testSkipRelationshipsLoading-pom.xml | 43 +
.../testSkipRelationshipsLoading.map.xml | 55 +
.../testSkipRelationshipsLoading.map.xml-result | 55 +
.../dbimport/testSkipRelationshipsLoading.sql | 36 +
...SupportsCatalogsOnReverseEngineering-pom.xml | 41 +
...SupportsCatalogsOnReverseEngineering.map.xml | 25 +
.../tools/dbimport/testTableTypes-pom.xml | 43 +
.../dbimport/testTableTypes.map.xml-result | 29 +
.../cayenne/tools/dbimport/testTableTypes.sql | 25 +
.../dbimport/testUnFlattensManyToMany-pom.xml | 40 +
.../dbimport/testUnFlattensManyToMany.map.xml | 55 +
.../testUnFlattensManyToMany.map.xml-result | 88 ++
.../tools/dbimport/testUnFlattensManyToMany.sql | 64 +
plugins/pom.xml | 61 +-
pom.xml | 378 +++--
tutorials/pom.xml | 2 +-
tutorials/tutorial-rop-client/pom.xml | 2 +-
tutorials/tutorial-rop-server/pom.xml | 2 +-
tutorials/tutorial/pom.xml | 2 +-
313 files changed, 13081 insertions(+), 5288 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
----------------------------------------------------------------------
diff --cc cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
index 8e2d82f,27007e8..c1622b8
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
@@@ -18,28 -18,13 +18,25 @@@
****************************************************************/
package org.apache.cayenne.access;
- import java.sql.Connection;
- import java.sql.DatabaseMetaData;
- import java.sql.ResultSet;
- import java.sql.SQLException;
++import java.sql.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
- import org.apache.cayenne.CayenneException;
import org.apache.cayenne.access.loader.DbLoaderConfiguration;
+ import org.apache.cayenne.access.loader.DefaultDbLoaderDelegate;
import org.apache.cayenne.access.loader.ManyToManyCandidateEntity;
-import org.apache.cayenne.access.loader.filters.DbPath;
-import org.apache.cayenne.access.loader.filters.EntityFilters;
-import org.apache.cayenne.access.loader.filters.Filter;
-import org.apache.cayenne.access.loader.filters.FiltersConfig;
+import org.apache.cayenne.access.loader.filters.*;
+import org.apache.cayenne.access.loader.filters.CatalogFilter;
+import org.apache.cayenne.access.loader.filters.SchemaFilter;
+import org.apache.cayenne.access.loader.filters.TableFilter;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.TypesMapping;
import org.apache.cayenne.map.DataMap;
@@@ -213,24 -213,22 +205,24 @@@ public class DbLoader
/**
* Returns all tables for given combination of the criteria. Tables returned
* as DbEntities without any attributes or relationships.
- *
*
* @param config
- *
- * @param types
- * The types of table names to retrieve, null returns all types.
+ * @param types The types of table names to retrieve, null returns all types.
* @return
- * @since 3.2
+ * @since 4.0
*/
- public Map<DbPath, Map<String, DbEntity>> getTables(DbLoaderConfiguration config, String[] types)
+ public Map<DbEntity, PatternFilter> getTables(DbLoaderConfiguration config, String[] types)
throws SQLException {
+ if (types == null || types.length == 0) {
+ types = getDefaultTableTypes();
+ }
- Map<DbPath, Map<String, DbEntity>> tables = new HashMap<DbPath, Map<String, DbEntity>>();
+ Map<DbEntity, PatternFilter> tables = new HashMap<DbEntity, PatternFilter>();
FiltersConfig filters = config.getFiltersConfig();
- for (DbPath path : filters.pathsForQueries()) {
- tables.put(path, getDbEntities(filters, path, types));
+ for (CatalogFilter o : filters.catalogs) {
+ for (SchemaFilter schema : o.schemas) {
+ tables.putAll(getDbEntities(filters, o.name, schema.name, types));
+ }
}
return tables;
@@@ -278,84 -282,60 +270,59 @@@
/**
* Loads dbEntities for the specified tables.
- * @param map
- * DataMap to be populated with DbEntities.
- * @param tables
+ *
+ * @param map DataMap to be populated with DbEntities.
* @param config
+ * @param tables The list of org.apache.cayenne.ashwood.dbutil.Table objects
+ * for which DbEntities must be created. @return false if loading must be immediately aborted.
*/
- public List<DbEntity> loadDbEntities(DataMap map, DbLoaderConfiguration config, Map<DbPath, Map<String, DbEntity>> tables) throws SQLException {
+ public List<DbEntity> loadDbEntities(DataMap map, Map<DbEntity, PatternFilter> tables, DbLoaderConfiguration config) throws SQLException {
/** List of db entities to process. */
-
List<DbEntity> dbEntityList = new ArrayList<DbEntity>();
- for (Map.Entry<DbPath, Map<String, DbEntity>> tablesMap : tables.entrySet()) {
- for (DbEntity dbEntity : tablesMap.getValue().values()) {
+ for (Entry<DbEntity, PatternFilter> entry : tables.entrySet()) {
+ DbEntity dbEntity = entry.getKey();
+ PatternFilter tableFilter = entry.getValue();
- // Check if there already is a DbEntity under such name
- // if so, consult the delegate what to do
- DbEntity oldEnt = map.getDbEntity(dbEntity.getName());
- if (oldEnt != null) {
- if (delegate == null) {
- break; // no delegate, don't know what to do, cancel import
- // TODO continue?
- }
-
- try {
- if (delegate.overwriteDbEntity(oldEnt)) {
- LOGGER.debug("Overwrite: " + oldEnt.getName());
- map.removeDbEntity(oldEnt.getName(), true);
- delegate.dbEntityRemoved(oldEnt);
- } else {
- LOGGER.debug("Keep old: " + oldEnt.getName());
-
- // cay-479 - need to track entities that were not loaded for
- // relationships exported to entities that were
- skippedEntities.add(oldEnt);
- continue;
+ // Check if there already is a DbEntity under such name
+ // if so, consult the delegate what to do
+ DbEntity oldEnt = map.getDbEntity(dbEntity.getName());
+ if (oldEnt != null) {
+ Collection<ObjEntity> oldObjEnt = map.getMappedEntities(oldEnt);
+ if (!oldObjEnt.isEmpty()) {
+ for (ObjEntity objEntity : oldObjEnt) {
+ LOGGER.debug("Delete ObjEntity: " + objEntity.getName());
+ map.removeObjEntity(objEntity.getName(), true);
+ delegate.objEntityRemoved(objEntity);
+ }
}
- } catch (CayenneException ex) {
- LOGGER.debug("Load canceled.");
- return null; // cancel immediately
+ LOGGER.debug("Overwrite DbEntity: " + oldEnt.getName());
+ map.removeDbEntity(oldEnt.getName(), true);
+ delegate.dbEntityRemoved(oldEnt);
}
- }
-
-
- map.addDbEntity(dbEntity);
+ map.addDbEntity(dbEntity);
- // notify delegate
- if (delegate != null) {
delegate.dbEntityAdded(dbEntity);
- }
- loadDbAttributes(dbEntity, tableFilter);
- // delegate might have thrown this entity out... so check if it is still
- // around before continuing processing
- if (map.getDbEntity(dbEntity.getName()) == dbEntity) {
- dbEntityList.add(dbEntity);
+ // delegate might have thrown this entity out... so check if it is still
+ // around before continuing processing
+ if (map.getDbEntity(dbEntity.getName()) == dbEntity) {
+ dbEntityList.add(dbEntity);
+ }
}
- }
- // get primary keys for each table and store it in dbEntity
- getPrimaryKeysForEachTableAndStoreItInDbEntity(map, tables);
+ loadDbAttributes(config.getFiltersConfig(), tablesMap.getKey(), tablesMap.getValue());
- // cay-479 - iterate skipped DbEntities to populate exported keys
- for (DbEntity skippedEntity : skippedEntities) {
- loadDbRelationships(map, skippedEntity, config);
- }
+ if (!config.isSkipPrimaryKeyLoading()) {
+ getPrimaryKeyForTable(tablesMap.getValue());
+ }
- }
return dbEntityList;
-
}
- private void getPrimaryKeysForEachTableAndStoreItInDbEntity(DataMap map, Map<DbEntity, PatternFilter> tables)
- throws SQLException {
-
- for (DbEntity dbEntity : map.getDbEntities()) {
- if (tables.get(dbEntity) == null) { // TODO is it ok? equals is not overridden
- continue;
- }
-
+ private void getPrimaryKeyForTable(Map<String, DbEntity> tables) throws SQLException {
+ for (DbEntity dbEntity : tables.values()) {
ResultSet rs = getMetaData().getPrimaryKeys(dbEntity.getCatalog(), dbEntity.getSchema(), dbEntity.getName());
try {
while (rs.next()) {
@@@ -382,10 -363,12 +349,12 @@@
}
}
- private void loadDbAttributes(FiltersConfig filters, DbPath path, Map<String, DbEntity> entities) throws SQLException {
- ResultSet rs = getMetaData().getColumns(path.catalog, path.schema, WILDCARD, WILDCARD);
+ private void loadDbAttributes(DbEntity dbEntity, PatternFilter columnFilter) throws SQLException {
+ ResultSet rs = getMetaData().getColumns(dbEntity.getCatalog(), dbEntity.getSchema(), dbEntity.getName(), "%");
try {
+ Set<String> columns = new HashSet<String>();
+
while (rs.next()) {
// for a reason not quiet apparent to me, Oracle sometimes
// returns duplicate record sets for the same table, messing up table
@@@ -398,14 -383,13 +369,14 @@@
continue;
}
- DbAttribute attr = loadDbAttribute(rs);
+ DbAttribute attr = loadDbAttribute(columns, rs);
attr.setEntity(dbEntity);
- Filter<DbAttribute> filter = filters.filter(new DbPath(dbEntity.getCatalog(), dbEntity.getSchema(), dbEntity.getName())).columnFilter();
- if (!filter.isInclude(attr)) {
+
+ if (!columnFilter.isInclude(attr.getName())) {
if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("Skip column for '" + attr.getEntity().getName() + "." + attr.getName()
- + "' (Path: " + path + "; Filter: " + filter + ")");
+ LOGGER.debug("Importing: attribute '" + attr.getEntity().getName() + "." + attr.getName()
+ + "' is skipped (Path: " + dbEntity.getCatalog() + "/" + dbEntity.getSchema() + "/"
+ + dbEntity.getName() + "; Filter: " + columnFilter + ")");
}
continue;
}
@@@ -699,9 -737,11 +724,9 @@@
* Performs database reverse engineering and generates DataMap that contains
* default mapping of the tables and views. By default will include regular
* tables and views.
- *
+ *
* @since 1.0.7
* @deprecated since 4.0 use
- * {@link #load(org.apache.cayenne.map.DataMap, DbLoaderConfiguration)}
- * method that supports catalogs.
*/
@Deprecated
public DataMap loadDataMapFromDB(String schemaPattern, String tablePattern, DataMap dataMap) throws SQLException {
@@@ -718,8 -758,10 +743,10 @@@
* Performs database reverse engineering and generates DataMap object that
* contains default mapping of the tables and views. Allows to limit types
* of tables to read.
- *
+ *
* @deprecated since 4.0 use
- * {@link #load(org.apache.cayenne.map.DataMap, DbLoaderConfiguration)}
- * method that supports catalogs.
++ * {@link #load(org.apache.cayenne.map.DataMap, DbLoaderConfiguration, String...)}
++ * method that supports catalogs.
*/
@Deprecated
public DataMap loadDataMapFromDB(String schemaPattern, String tablePattern, String[] tableTypes, DataMap dataMap)
@@@ -727,36 -769,65 +754,55 @@@
dataMap.clear();
DbLoaderConfiguration config = new DbLoaderConfiguration();
- config.setFiltersConfig(new FiltersConfig(new EntityFilters(
- new DbPath(null, schemaPattern), transformPatternToFilter(tablePattern), TRUE, NULL)));
+ config.setFiltersConfig(FiltersConfig.create(null, schemaPattern,
+ TableFilter.include(tablePattern), PatternFilter.INCLUDE_NOTHING));
config.setTableTypes(tableTypes);
-
+
load(dataMap, config);
return dataMap;
}
- private Filter<String> transformPatternToFilter(String tablePattern) {
- Filter<String> table;
- if (tablePattern == null) {
- table = NULL;
- } else {
- table = include(tablePattern.replaceAll("%", ".*"));
- }
- return table;
- }
-
/**
- * Performs database reverse engineering based on the specified config
+ * Performs database reverse engineering based on the specified config
* and fills the specified
* DataMap object with DB and object mapping info.
*
* @since 4.0
*/
- public void load(DataMap dataMap, DbLoaderConfiguration config) throws SQLException {
+ public void load(DataMap dataMap, DbLoaderConfiguration config) throws SQLException {
+ LOGGER.info("Schema loading...");
- Map<DbPath, Map<String, DbEntity>> tables = getTables(config, config.getTableTypes());
- List<DbEntity> entities = loadDbEntities(dataMap, config, tables);
+ String[] tableTypes = config.getTableTypes() == null ? this.getDefaultTableTypes() : config.getTableTypes();
+ List<DbEntity> entities = loadDbEntities(dataMap, getTables(config, tableTypes), config);
- if (entities != null) {
- loadDbRelationships(dataMap, config, entities);
- loadObjEntities(dataMap, config, entities);
+ if (entities != null) {
+ loadDbRelationships(config, tables);
+
+ prepareObjLayer(dataMap, config, entities);
+ }
+ }
+
+ public void prepareObjLayer(DataMap dataMap, DbLoaderConfiguration config, Collection<DbEntity> entities) {
+ Collection<ObjEntity> loadedObjEntities = loadObjEntities(dataMap, config, entities);
+ flattenManyToManyRelationships(dataMap, loadedObjEntities, getNameGenerator());
+ fireObjEntitiesAddedEvents(loadedObjEntities);
+ }
+
+ /**
+ * Performs database reverse engineering to match the specified catalog,
+ * schema, table name and table type patterns and fills the specified
+ * DataMap object with DB and object mapping info.
+ *
+ * @since 4.0
+ */
+ public DataMap load(DbLoaderConfiguration config) throws SQLException {
- flattenManyToManyRelationships(dataMap);
- fireObjEntitiesAddedEvents(dataMap);
- }
+ DataMap dataMap = new DataMap();
+ load(dataMap, config);
+ loadProcedures(dataMap, config);
- loadProcedures(dataMap, config);
- }
+ return dataMap;
+ }
/**
* Loads database stored procedures into the DataMap.
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/cayenne-server/src/main/java/org/apache/cayenne/access/loader/DbLoaderConfiguration.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
----------------------------------------------------------------------
diff --cc cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
index a9f4e5b,a9fccc4..7355740
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
@@@ -421,187 -407,187 +443,4 @@@ public class DbLoaderIT extends ServerC
private static String attrMismatch(String attrName, String msg) {
return "[Error loading attribute '" + attrName + "': " + msg + "]";
}
--
--/*
-- TODO
--
-- @Test
-- public void testCreateLoader() throws Exception {
--
-- DbLoader loader = parameters.createLoader(mock(DbAdapter.class), connection,
-- mock(DbLoaderDelegate.class));
-- assertNotNull(loader);
-- assertSame(connection, loader.getConnection());
--
-- assertTrue(loader.includeTableName("dummy"));
-- }
--
-- @Test
-- public void testCreateLoader_IncludeExclude() throws Exception {
-- DbImportConfiguration parameters = new DbImportConfiguration();
-- parameters.setIncludeTables("a,b,c*");
--
-- DbLoader loader1 = parameters.createLoader(mock(DbAdapter.class), mock(Connection.class),
-- mock(DbLoaderDelegate.class));
--
-- assertFalse(loader1.includeTableName("dummy"));
-- assertFalse(loader1.includeTableName("ab"));
-- assertTrue(loader1.includeTableName("a"));
-- assertTrue(loader1.includeTableName("b"));
-- assertTrue(loader1.includeTableName("cd"));
--
-- parameters.setExcludeTables("cd");
--
-- DbLoader loader2 = parameters.createLoader(mock(DbAdapter.class), mock(Connection.class),
-- mock(DbLoaderDelegate.class));
--
-- assertFalse(loader2.includeTableName("dummy"));
-- assertFalse(loader2.includeTableName("ab"));
-- assertTrue(loader2.includeTableName("a"));
-- assertTrue(loader2.includeTableName("b"));
-- assertFalse(loader2.includeTableName("cd"));
-- assertTrue(loader2.includeTableName("cx"));
-- }
--
--
-- @Test
-- public void testCreateLoader_MeaningfulPk_Default() throws Exception {
-- DbImportConfiguration parameters = new DbImportConfiguration();
-- assertNull(parameters.getMeaningfulPkTables());
--
-- DbLoader loader1 = parameters.createLoader(mock(DbAdapter.class), mock(Connection.class),
-- mock(DbLoaderDelegate.class));
--
-- DataMap map = new DataMap();
--
-- DbEntity e1 = new DbEntity("e1");
-- DbAttribute pk = new DbAttribute("pk", Types.INTEGER, e1);
-- pk.setPrimaryKey(true);
-- e1.addAttribute(pk);
-- DbAttribute nonPk = new DbAttribute("nonPk", Types.INTEGER, e1);
-- e1.addAttribute(nonPk);
--
-- map.addDbEntity(e1);
--
-- // DbLoader is so ugly and hard to test..
-- Field dbEntityList = DbLoader.class.getDeclaredField("dbEntityList");
-- dbEntityList.setAccessible(true);
-- List<DbEntity> entities = (List<DbEntity>) dbEntityList.get(loader1);
-- entities.add(e1);
--
-- loader1.loadObjEntities(map, entities);
--
-- ObjEntity oe1 = map.getObjEntity("E1");
-- assertEquals(1, oe1.getAttributes().size());
-- assertNotNull(oe1.getAttribute("nonPk"));
-- }
--
-- @Test
-- public void testCreateLoader_MeaningfulPk_Specified() throws Exception {
-- DbImportConfiguration parameters = new DbImportConfiguration();
-- parameters.setMeaningfulPkTables("a*");
--
-- DbLoader loader1 = parameters.createLoader(mock(DbAdapter.class), mock(Connection.class),
-- mock(DbLoaderDelegate.class));
--
-- // DbLoader is so ugly and hard to test..
-- Field dbEntityList = DbLoader.class.getDeclaredField("dbEntityList");
-- dbEntityList.setAccessible(true);
-- Collection<DbEntity> entities = (List<DbEntity>) dbEntityList.get(loader1);
--
-- DataMap map = new DataMap();
--
-- DbEntity e1 = new DbEntity("e1");
-- DbAttribute pk = new DbAttribute("pk", Types.INTEGER, e1);
-- pk.setPrimaryKey(true);
-- e1.addAttribute(pk);
-- DbAttribute nonPk = new DbAttribute("nonPk", Types.INTEGER, e1);
-- e1.addAttribute(nonPk);
--
-- map.addDbEntity(e1);
-- entities.add(e1);
--
-- DbEntity a1 = new DbEntity("a1");
-- DbAttribute apk = new DbAttribute("pk", Types.INTEGER, a1);
-- apk.setPrimaryKey(true);
-- a1.addAttribute(apk);
-- DbAttribute anonPk = new DbAttribute("nonPk", Types.INTEGER, a1);
-- a1.addAttribute(anonPk);
--
-- map.addDbEntity(a1);
-- entities.add(a1);
--
-- loader1.loadObjEntities(map, entities);
--
-- ObjEntity oe1 = map.getObjEntity("E1");
-- assertEquals(1, oe1.getAttributes().size());
-- assertNotNull(oe1.getAttribute("nonPk"));
--
-- ObjEntity oe2 = map.getObjEntity("A1");
-- assertEquals(2, oe2.getAttributes().size());
-- assertNotNull(oe2.getAttribute("nonPk"));
-- assertNotNull(oe2.getAttribute("pk"));
-- }
--
-- @Test
-- public void testCreateLoader_UsePrimitives_False() throws Exception {
-- DbImportConfiguration parameters = new DbImportConfiguration();
-- parameters.setUsePrimitives(false);
--
-- DbLoader loader1 = parameters.createLoader(mock(DbAdapter.class), mock(Connection.class),
-- mock(DbLoaderDelegate.class));
--
-- DataMap map = new DataMap();
--
-- DbEntity e1 = new DbEntity("e1");
-- DbAttribute nonPk = new DbAttribute("nonPk", Types.INTEGER, e1);
-- e1.addAttribute(nonPk);
--
-- map.addDbEntity(e1);
--
-- // DbLoader is so ugly and hard to test..
-- Field dbEntityList = DbLoader.class.getDeclaredField("dbEntityList");
-- dbEntityList.setAccessible(true);
-- List<DbEntity> entities = (List<DbEntity>) dbEntityList.get(loader1);
-- entities.add(e1);
--
-- loader1.loadObjEntities(map, entities);
--
-- ObjEntity oe1 = map.getObjEntity("E1");
--
-- ObjAttribute oa1 = oe1.getAttribute("nonPk");
-- assertEquals("java.lang.Integer", oa1.getType());
-- }
--
-- @Test
-- public void testCreateLoader_UsePrimitives_True() throws Exception {
-- DbImportConfiguration parameters = new DbImportConfiguration();
-- parameters.setUsePrimitives(true);
--
-- DbLoader loader1 = parameters.createLoader(mock(DbAdapter.class), mock(Connection.class),
-- mock(DbLoaderDelegate.class));
--
-- DataMap map = new DataMap();
--
-- DbEntity e1 = new DbEntity("e1");
-- DbAttribute nonPk = new DbAttribute("nonPk", Types.INTEGER, e1);
-- e1.addAttribute(nonPk);
--
-- map.addDbEntity(e1);
--
-- // DbLoader is so ugly and hard to test..
-- Field dbEntityList = DbLoader.class.getDeclaredField("dbEntityList");
-- dbEntityList.setAccessible(true);
-- List<DbEntity> entities = (List<DbEntity>) dbEntityList.get(loader1);
-- entities.add(e1);
--
-- loader1.loadObjEntities(map, entities);
--
-- ObjEntity oe1 = map.getObjEntity("E1");
--
-- ObjAttribute oa1 = oe1.getAttribute("nonPk");
-- assertEquals("int", oa1.getType());
-- }
--*/
--
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderPartialIT.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
----------------------------------------------------------------------
diff --cc cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
index 07eebc7,de60b65..7ff45ea
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
@@@ -18,10 -18,21 +18,19 @@@
****************************************************************/
package org.apache.cayenne.tools;
-import org.apache.cayenne.access.loader.filters.EntityFilters;
-import org.apache.cayenne.access.loader.filters.FilterFactory;
-import org.apache.cayenne.configuration.DataNodeDescriptor;
-import org.apache.cayenne.configuration.server.DataSourceFactory;
-import org.apache.cayenne.configuration.server.DbAdapterFactory;
+import java.io.File;
+
+import org.apache.cayenne.access.loader.filters.OldFilterConfigBridge;
import org.apache.cayenne.conn.DataSourceInfo;
+ import org.apache.cayenne.dba.DbAdapter;
+ import org.apache.cayenne.di.DIBootstrap;
+ import org.apache.cayenne.di.Injector;
+ import org.apache.cayenne.map.naming.DefaultNameGenerator;
+ import org.apache.cayenne.tools.configuration.ToolsModule;
+ import org.apache.cayenne.tools.dbimport.DbImportAction;
+ import org.apache.cayenne.tools.dbimport.DbImportConfiguration;
+ import org.apache.cayenne.tools.dbimport.DbImportModule;
+ import org.apache.cayenne.tools.dbimport.config.AntNestedElement;
import org.apache.cayenne.tools.dbimport.config.Catalog;
import org.apache.cayenne.tools.dbimport.config.ExcludeColumn;
import org.apache.cayenne.tools.dbimport.config.ExcludeProcedure;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
----------------------------------------------------------------------
diff --cc cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
index ee39060,594e99a..0914fb5
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
@@@ -23,8 -23,9 +23,9 @@@ import org.apache.cayenne.access.DbLoad
import org.apache.cayenne.access.loader.DbLoaderConfiguration;
import org.apache.cayenne.access.DbLoaderDelegate;
import org.apache.cayenne.access.loader.DefaultDbLoaderDelegate;
+ import org.apache.cayenne.access.loader.LoggingDbLoaderDelegate;
import org.apache.cayenne.access.loader.NameFilter;
-import org.apache.cayenne.access.loader.filters.DbPath;
+import org.apache.cayenne.access.loader.filters.CatalogFilter;
import org.apache.cayenne.access.loader.filters.FiltersConfig;
import org.apache.cayenne.configuration.DataNodeDescriptor;
import org.apache.cayenne.conn.DataSourceInfo;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Catalog.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FilterContainer.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilder.java
----------------------------------------------------------------------
diff --cc cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilder.java
index 272db1b,d553a6e..ac16fb3
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilder.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilder.java
@@@ -18,24 -18,23 +18,24 @@@
****************************************************************/
package org.apache.cayenne.tools.dbimport.config;
-import static org.apache.cayenne.access.loader.filters.FilterFactory.NULL;
-import static org.apache.cayenne.access.loader.filters.FilterFactory.TRUE;
+import org.apache.cayenne.access.loader.filters.OldFilterConfigBridge;
+import org.apache.cayenne.access.loader.filters.CatalogFilter;
+import org.apache.cayenne.access.loader.filters.IncludeTableFilter;
+import org.apache.cayenne.access.loader.filters.SchemaFilter;
+import org.apache.cayenne.access.loader.filters.TableFilter;
+import org.apache.cayenne.access.loader.filters.FiltersConfig;
+import org.apache.cayenne.access.loader.filters.PatternFilter;
+import org.apache.cayenne.tools.ExcludeTable;
-import java.lang.reflect.Method;
import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.regex.Pattern;
-import org.apache.cayenne.access.loader.filters.DbPath;
-import org.apache.cayenne.access.loader.filters.EntityFilters;
-import org.apache.cayenne.access.loader.filters.Filter;
-import org.apache.cayenne.access.loader.filters.FilterFactory;
-import org.apache.cayenne.access.loader.filters.FiltersConfig;
-import org.apache.cayenne.access.loader.filters.ListFilter;
+import static org.apache.commons.lang.StringUtils.isBlank;
/**
- * @since 3.2.
+ * @since 4.0.
*/
public final class FiltersConfigBuilder {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/IncludeTable.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/PatternParam.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/ReverseEngineering.java
----------------------------------------------------------------------
diff --cc cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/ReverseEngineering.java
index 2aabf71,ad42297..07f1795
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/ReverseEngineering.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/ReverseEngineering.java
@@@ -59,21 -108,22 +108,28 @@@ public class ReverseEngineering extend
@Override
public String toString() {
- StringBuilder res = new StringBuilder(" ReverseEngineering: ");
- for (Catalog catalog : catalogs) {
- res.append("\n").append(catalog.toString(" "));
+ StringBuilder res = new StringBuilder();
+ res.append("ReverseEngineering: ").append("\n");
+
+ if (!isBlank(catalogs)) {
+ for (Catalog catalog : catalogs) {
+ catalog.toString(res, " ");
+ }
}
- for (Schema schema : schemas) {
- res.append("\n").append(schema.toString(" "));
+
+ if (!isBlank(schemas)) {
+ for (Schema schema : schemas) {
+ schema.toString(res, " ");
+ }
}
+ if (skipRelationshipsLoading != null && skipRelationshipsLoading) {
+ res.append("\n").append(" Skip Relationships Loading");
+ }
+ if (skipPrimaryKeyLoading != null && skipPrimaryKeyLoading) {
+ res.append("\n").append(" Skip PrimaryKey Loading");
+ }
- res.append(super.toString(" "));
+
- return res.toString();
+ return super.toString(res, " ").toString();
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Schema.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
----------------------------------------------------------------------
diff --cc modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
index feb4a49,15b49cc..caf0e4d
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
@@@ -19,12 -19,13 +19,13 @@@
package org.apache.cayenne.modeler.dialog.db;
+import org.apache.cayenne.CayenneException;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DbLoader;
- import org.apache.cayenne.access.DbLoaderDelegate;
import org.apache.cayenne.access.loader.DbLoaderConfiguration;
+ import org.apache.cayenne.access.loader.DefaultDbLoaderDelegate;
-import org.apache.cayenne.access.loader.filters.EntityFilters;
-import org.apache.cayenne.access.loader.filters.FilterFactory;
+ import org.apache.cayenne.access.loader.filters.FiltersConfig;
+import org.apache.cayenne.access.loader.filters.OldFilterConfigBridge;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.configuration.event.DataMapEvent;
import org.apache.cayenne.dba.DbAdapter;
@@@ -47,13 -49,17 +48,23 @@@ import org.apache.cayenne.util.Util
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+ import javax.swing.JFrame;
+ import javax.swing.JOptionPane;
+ import javax.swing.SwingUtilities;
+ import java.sql.Connection;
+ import java.sql.SQLException;
+ import java.util.ArrayList;
+ import java.util.Arrays;
+ import java.util.Collection;
+ import java.util.List;
+
-import static org.apache.cayenne.access.loader.filters.FilterFactory.NULL;
+import javax.swing.*;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
/**
* Stateful helper class that encapsulates access to DbLoader.
@@@ -81,8 -84,10 +89,10 @@@ public class DbLoaderHelper
protected DataMap dataMap;
protected boolean meaningfulPk;
protected List<String> schemas;
+ protected List<String> catalogs;
+ protected DbAdapter adapter;
- private final EntityFilters.Builder filterBuilder = new EntityFilters.Builder();
+ private final OldFilterConfigBridge filterBuilder = new OldFilterConfigBridge();
protected String loadStatusNote;
@@@ -167,9 -163,10 +168,10 @@@
return;
}
+ this.filterBuilder.catalog(dialog.getSelectedCatalog());
this.filterBuilder.schema(dialog.getSelectedSchema());
this.filterBuilder.includeTables(dialog.getTableNamePattern());
- this.filterBuilder.setProceduresFilters(dialog.isLoadingProcedures() ? FilterFactory.TRUE : FilterFactory.NULL);
+ this.filterBuilder.setProceduresFilters(dialog.isLoadingProcedures());
this.filterBuilder.includeProcedures(dialog.getProcedureNamePattern());
this.meaningfulPk = dialog.isMeaningfulPk();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java
----------------------------------------------------------------------
diff --cc modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java
index decc675,8684f28..bd2cf69
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java
@@@ -19,10 -19,7 +19,25 @@@
package org.apache.cayenne.modeler.dialog.db;
++import java.awt.Component;
++import java.io.File;
++import java.io.FileWriter;
++import java.io.IOException;
++import java.io.PrintWriter;
++import java.util.Iterator;
++import java.util.List;
++
++import javax.sql.DataSource;
++import javax.swing.JFileChooser;
++import javax.swing.JOptionPane;
++import javax.swing.WindowConstants;
++import javax.swing.event.ChangeEvent;
++import javax.swing.event.ChangeListener;
++
import org.apache.cayenne.access.loader.DbLoaderConfiguration;
+import org.apache.cayenne.access.loader.filters.TableFilter;
+import org.apache.cayenne.access.loader.filters.FiltersConfig;
+import org.apache.cayenne.access.loader.filters.PatternFilter;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.configuration.DataNodeDescriptor;
import org.apache.cayenne.dba.JdbcAdapter;
@@@ -41,20 -50,25 +68,11 @@@ import org.apache.cayenne.project.Proje
import org.apache.cayenne.resource.Resource;
import org.apache.cayenne.swing.BindingBuilder;
import org.apache.cayenne.swing.ObjectBinding;
+ import org.apache.cayenne.tools.dbimport.config.FiltersConfigBuilder;
+ import org.apache.cayenne.tools.dbimport.config.ReverseEngineering;
+ import org.apache.cayenne.tools.dbimport.config.Schema;
import org.apache.cayenne.validation.ValidationResult;
--import javax.sql.DataSource;
- import javax.swing.*;
-import javax.swing.JFileChooser;
-import javax.swing.JOptionPane;
-import javax.swing.WindowConstants;
--import javax.swing.event.ChangeEvent;
--import javax.swing.event.ChangeListener;
- import java.awt.*;
-import java.awt.Component;
--import java.io.File;
--import java.io.FileWriter;
--import java.io.IOException;
--import java.io.PrintWriter;
--import java.util.Iterator;
--import java.util.List;
--
public class MergerOptions extends CayenneController {
protected MergerOptionsView view;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
----------------------------------------------------------------------
diff --cc plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
index c86fae8,0073268..0d3376f
--- a/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
+++ b/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
@@@ -18,9 -18,12 +18,12 @@@
****************************************************************/
package org.apache.cayenne.tools;
- import java.io.File;
-
-import org.apache.cayenne.access.loader.filters.EntityFilters;
-import org.apache.cayenne.access.loader.filters.FilterFactory;
+import org.apache.cayenne.access.loader.filters.OldFilterConfigBridge;
+ import org.apache.cayenne.configuration.DataNodeDescriptor;
+ import org.apache.cayenne.configuration.server.DataSourceFactory;
+ import org.apache.cayenne.configuration.server.DbAdapterFactory;
+ import org.apache.cayenne.dba.DbAdapter;
++import java.io.File;
import org.apache.cayenne.di.DIBootstrap;
import org.apache.cayenne.di.Injector;
import org.apache.cayenne.tools.configuration.ToolsModule;
@@@ -260,12 -268,29 +269,33 @@@ public class DbImporterMojo extends Abs
}
}
+ private void validateDbImportConfiguration(DbImportConfiguration config, Injector injector) throws MojoExecutionException {
+ DataNodeDescriptor dataNodeDescriptor = config.createDataNodeDescriptor();
+ DataSource dataSource = null;
+ DbAdapter adapter = null;
+
+ try {
+ dataSource = injector.getInstance(DataSourceFactory.class).getDataSource(dataNodeDescriptor);
+ adapter = injector.getInstance(DbAdapterFactory.class).createAdapter(dataNodeDescriptor, dataSource);
+
+ if (!adapter.supportsCatalogsOnReverseEngineering() &&
+ reverseEngineering.getCatalogs() != null && !reverseEngineering.getCatalogs().isEmpty()) {
+ String message = "Your database does not support catalogs on reverse engineering. " +
+ "It allows to connect to only one at the moment. Please don't note catalogs as param.";
+ throw new MojoExecutionException(message);
+ }
+ } catch (Exception e) {
+ throw new MojoExecutionException("Error creating DataSource ("
+ + dataSource + ") or DbAdapter (" + adapter + ") for DataNodeDescriptor (" + dataNodeDescriptor + ")", e);
+ }
+ }
+
DbImportConfiguration toParameters() {
- DbImportConfiguration config = new DbImportConfiguration();
+ if (config != null) {
+ return config;
+ }
+
+ config = new DbImportConfiguration();
config.setAdapter(adapter);
config.setDefaultPackage(defaultPackage);
config.setDriver(driver);
@@@ -278,7 -303,10 +308,11 @@@
config.setUsername(username);
config.setUsePrimitives(usePrimitives);
config.setFiltersConfig(new FiltersConfigBuilder(reverseEngineering)
- .add(filterBuilder.build()).filtersConfig());
+ .add(filterBuilder).filtersConfig());
+ config.setSkipRelationshipsLoading(reverseEngineering.getSkipRelationshipsLoading());
+ config.setSkipPrimaryKeyLoading(reverseEngineering.getSkipPrimaryKeyLoading());
+ config.setTableTypes(reverseEngineering.getTableTypes());
++
return config;
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cd4e9eed/pom.xml
----------------------------------------------------------------------