Merge branch 'master' into 5.x # Conflicts: # CHANGES.md # cassandra/pom.xml # core/pom.xml # couchdb/pom.xml # csv/pom.xml # elasticsearch/common/pom.xml # elasticsearch/native/pom.xml # elasticsearch/pom.xml # elasticsearch/rest/pom.xml # elasticsearch/rest/src/main/java/org/apache/metamodel/elasticsearch/rest/ElasticSearchRestDataContext.java # excel/pom.xml # fixedwidth/pom.xml # fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthColumnSpec.java # fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthConfiguration.java # fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthConfigurationReader.java # full/pom.xml # hadoop/pom.xml # hbase/pom.xml # jdbc/pom.xml # jdbc/src/test/java/org/apache/metamodel/jdbc/integrationtests/PostgresqlTest.java # json/pom.xml # mongodb/common/pom.xml # mongodb/mongo2/pom.xml # mongodb/mongo3/pom.xml # mongodb/pom.xml # neo4j/pom.xml # openoffice/pom.xml # pojo/pom.xml # pom.xml # salesforce/pom.xml # spring/pom.xml # sugarcrm/pom.xml # xml/pom.xml
Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/c4788a27 Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/c4788a27 Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/c4788a27 Branch: refs/heads/5.x Commit: c4788a27270110ee630e0337402f4f48b6147ac1 Parents: 02397db b0cfe3a Author: Kasper Sørensen <i.am.kasper.soren...@gmail.com> Authored: Tue May 9 20:40:08 2017 -0700 Committer: Kasper Sørensen <i.am.kasper.soren...@gmail.com> Committed: Tue May 9 20:53:48 2017 -0700 ---------------------------------------------------------------------- .gitattributes | 2 + CHANGES.md | 36 +- README.md | 77 ++-- cassandra/.gitignore | 1 + .../cassandra/CassandraDataContext.java | 74 +++- .../cassandra/CassandraDataContextTest.java | 18 +- .../metamodel/factory/DataContextFactory.java | 16 + .../insert/AbstractRowInsertionBuilder.java | 5 +- .../metamodel/query/DefaultCompiledQuery.java | 2 +- .../org/apache/metamodel/query/FilterItem.java | 12 +- .../apache/metamodel/query/OperatorType.java | 6 +- .../metamodel/query/OperatorTypeImpl.java | 74 ++-- .../query/builder/AbstractFilterBuilder.java | 24 ++ .../builder/AbstractQueryFilterBuilder.java | 21 + .../metamodel/query/builder/FilterBuilder.java | 22 ++ .../query/builder/GroupedQueryBuilder.java | 5 + .../builder/GroupedQueryBuilderCallback.java | 16 + .../query/builder/GroupedQueryBuilderImpl.java | 30 +- .../query/builder/HavingBuilderImpl.java | 100 +++-- .../query/builder/SatisfiedQueryBuilder.java | 4 +- .../apache/metamodel/util/WildcardPattern.java | 13 +- .../ResourceFactoryRegistryImplTest.java | 3 +- .../insert/AbstractRowInsertionBuilderTest.java | 49 +++ .../apache/metamodel/query/FilterItemTest.java | 28 ++ .../query/builder/SyntaxExamplesTest.java | 5 + .../query/builder/WhereBuilderImplTest.java | 28 ++ .../metamodel/util/WildcardPatternTest.java | 11 + .../apache/metamodel/csv/CsvConfiguration.java | 2 +- .../metamodel/csv/CsvDataContextTest.java | 23 ++ dynamodb/.gitignore | 4 + dynamodb/pom.xml | 61 +++ .../metamodel/dynamodb/DynamoDbDataContext.java | 306 +++++++++++++++ .../metamodel/dynamodb/DynamoDbDataSet.java | 68 ++++ .../dynamodb/DynamoDbRowInsertionBuilder.java | 57 +++ .../dynamodb/DynamoDbTableCreationBuilder.java | 112 ++++++ .../dynamodb/DynamoDbTableDropBuilder.java | 46 +++ .../dynamodb/DynamoDbUpdateCallback.java | 85 +++++ .../metamodel/dynamodb/DynamoDbUtils.java | 105 +++++ .../DynamoDbDataContextIntegrationTest.java | 211 +++++++++++ .../ElasticSearchDataContextFactory.java | 165 ++++++++ ....apache.metamodel.factory.DataContextFactory | 1 + .../rest/ElasticSearchRestDataContext.java | 24 +- .../ElasticSearchRestDataContextFactory.java | 106 ++++++ ....apache.metamodel.factory.DataContextFactory | 1 + ...del-integrationtest-configuration.properties | 7 + .../metamodel/excel/ExcelDataContextTest.java | 17 + fixedwidth/pom.xml | 46 +-- .../fixedwidth/EbcdicConfiguration.java | 67 ++++ .../metamodel/fixedwidth/EbcdicReader.java | 79 ++++ .../fixedwidth/FixedWidthConfiguration.java | 199 +++++----- .../FixedWidthConfigurationReader.java | 18 +- .../fixedwidth/FixedWidthDataContext.java | 25 +- .../metamodel/fixedwidth/FixedWidthDataSet.java | 3 +- .../fixedwidth/FixedWidthLineParser.java | 121 ++++++ .../metamodel/fixedwidth/FixedWidthReader.java | 379 +++++++++++-------- .../apache/metamodel/fixedwidth/EBCDICTest.java | 95 +++++ .../fixedwidth/FixedWidthConfigurationTest.java | 11 +- .../fixedwidth/FixedWidthDataContextTest.java | 20 +- .../fixedwidth/FixedWidthLineParserTest.java | 66 ++++ .../fixedwidth/FixedWidthReaderTest.java | 103 ++++- .../test/resources/example_diacritics_utf8.txt | 4 + .../src/test/resources/example_simple3.txt | 4 + .../test/resources/fixed-width-2-7-10-10.ebc | 1 + .../apache/metamodel/DataContextFactory.java | 22 +- jdbc/pom.xml | 13 +- .../apache/metamodel/jdbc/JdbcDataContext.java | 68 ++-- .../org/apache/metamodel/jdbc/JdbcDataSet.java | 53 +-- .../metamodel/jdbc/JdbcDeleteBuilder.java | 2 +- .../metamodel/jdbc/JdbcInsertBuilder.java | 2 +- .../metamodel/jdbc/JdbcUpdateBuilder.java | 4 +- .../org/apache/metamodel/jdbc/JdbcUtils.java | 140 +------ .../org/apache/metamodel/jdbc/SqlKeywords.java | 69 ++-- .../jdbc/dialects/AbstractQueryRewriter.java | 197 +++++++++- .../jdbc/dialects/DB2QueryRewriter.java | 2 +- .../jdbc/dialects/DefaultQueryRewriter.java | 9 +- .../jdbc/dialects/HiveQueryRewriter.java | 12 +- .../metamodel/jdbc/dialects/IQueryRewriter.java | 30 ++ .../jdbc/dialects/MysqlQueryRewriter.java | 2 +- .../jdbc/dialects/OffsetFetchQueryRewriter.java | 69 ++++ .../jdbc/dialects/OracleQueryRewriter.java | 19 +- .../jdbc/dialects/PostgresqlQueryRewriter.java | 69 +++- .../jdbc/dialects/SQLServerQueryRewriter.java | 13 +- .../dialects/SQLServerQueryRewriterTest.java | 19 +- .../metamodel/jdbc/JdbcTestTemplates.java | 22 ++ .../jdbc/dialects/OracleQueryRewriterTest.java | 134 +++++++ .../dialects/PostgresqlQueryRewriterTest.java | 49 +++ .../integrationtests/HiveIntegrationTest.java | 69 +++- .../jdbc/integrationtests/PostgresqlTest.java | 102 +++-- pom.xml | 3 + salesforce/pom.xml | 12 +- .../salesforce/SalesforceDataContext.java | 24 ++ .../metamodel/salesforce/SalesforceTable.java | 2 +- 92 files changed, 3763 insertions(+), 792 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/CHANGES.md ---------------------------------------------------------------------- diff --cc CHANGES.md index bb64682,ebc7e66..3356b5d --- a/CHANGES.md +++ b/CHANGES.md @@@ -1,12 -1,31 +1,37 @@@ +### Apache MetaModel 5.0 + + * [METAMODEL-6] - Added update summary containing information about changes on returning UpdateableDataContext.executeUpdate(..) + * [METAMODEL-222] - Added support for Java 8 lambdas, removed support for Java 7. + * [METAMODEL-1087] - Removed deprecated APIs from MetaModel's codebase. + - ### Apache MetaModel 4.5.4 (work in progress) + ### Apache MetaModel 4.6.0 + + * [METAMODEL-1136] - New connector for Amazon DynamoDB. + * [METAMODEL-1134] - Added NOT IN and NOT LIKE operators to WHERE filters. + * [METAMODEL-1133] - Made PojoDataContext thread-safe. + + ### Apache MetaModel 4.5.5 + + * [METAMODEL-1132] - Support native paging on SQL Server and Oracle database. + * [METAMODEL-1128] - Fixed bug pertaining to ElasticSearch REST data set scrolling. + * [METAMODEL-1118] - Fixed bug pertaining to cloning of FilterItem.LogicalOperator in compiled queries. + * [METAMODEL-1111] - Added WHERE rewrite for Oracle when empty strings are considered as NULL. + * [METAMODEL-1122] - Optimized the way the Cassandra module executes primary key lookup queries. + * [METAMODEL-1109] - Fixed diacritics/encoding issue with Fixed Width reader. + * [METAMODEL-1115] - Added support for passing your own PartnerConnection object to the Salesforce.com connector. + * [METAMODEL-1113] - Fixed support for ColumnNamingStrategy in CSV connector. + * [METAMODEL-1114] - Added support for ColumnNamingStrategy in EBCDIC connector. + * [METAMODEL-1119] - Worked around Hive JDBC driver issues, avoiding non-compliant metadata calls. + * [METAMODEL-1123] - Fixed the treatment of a Salesforce.com 'currency' value as a number, not a string. + * [METAMODEL-1124] - Fixed the date formatting of date values in MS SQL server. + * [METAMODEL-1127] - Fixed setting of null Map on postgres + + ### Apache MetaModel 4.5.4 * [METAMODEL-1099] - Created a new DataContextFactory SPI and a extensible registry of implementations based on ServiceLoader. + * [METAMODEL-1099] - Implemented DataContextFactory SPI for connectors: JDBC, CSV, ElasticSearch + * [METAMODEL-250] - Added support for EBCDIC files (part of 'fixedwidth' module). + * [METAMODEL-1103] - Fixed a bug pertaining to anchoring of wildcards in LIKE operands. * [METAMODEL-1088] - Add support for aliases in MongoDB. * [METAMODEL-1086] - Fixed encoding issue when CsvDataContext is instantiated with InputStream. * [METAMODEL-1094] - Added support for Apache Cassandra version 3.x. http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/core/src/main/java/org/apache/metamodel/query/FilterItem.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/core/src/main/java/org/apache/metamodel/query/builder/AbstractFilterBuilder.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/core/src/main/java/org/apache/metamodel/query/builder/AbstractQueryFilterBuilder.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/core/src/main/java/org/apache/metamodel/query/builder/FilterBuilder.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/dynamodb/pom.xml ---------------------------------------------------------------------- diff --cc dynamodb/pom.xml index 0000000,ec95902..1de0cb3 mode 000000,100644..100644 --- a/dynamodb/pom.xml +++ b/dynamodb/pom.xml @@@ -1,0 -1,61 +1,61 @@@ + <?xml version="1.0" encoding="UTF-8" ?> + <!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + --> + <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <artifactId>MetaModel</artifactId> + <groupId>org.apache.metamodel</groupId> - <version>4.6.1-SNAPSHOT</version> ++ <version>5.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>MetaModel-dynamodb</artifactId> + <name>MetaModel module for Amazon AWS DynamoDB.</name> + <dependencies> + <dependency> + <groupId>org.apache.metamodel</groupId> + <artifactId>MetaModel-core</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>com.amazonaws</groupId> + <artifactId>aws-java-sdk-dynamodb</artifactId> + <version>1.11.81</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jcl-over-slf4j</artifactId> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-nop</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + </project> http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/elasticsearch/rest/src/main/java/org/apache/metamodel/elasticsearch/rest/ElasticSearchRestDataContext.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/excel/src/test/java/org/apache/metamodel/excel/ExcelDataContextTest.java ---------------------------------------------------------------------- diff --cc excel/src/test/java/org/apache/metamodel/excel/ExcelDataContextTest.java index eef29ae,f8406c3..ecd6691 --- a/excel/src/test/java/org/apache/metamodel/excel/ExcelDataContextTest.java +++ b/excel/src/test/java/org/apache/metamodel/excel/ExcelDataContextTest.java @@@ -34,13 -36,11 +34,14 @@@ import org.apache.metamodel.query.Query import org.apache.metamodel.schema.Column; import org.apache.metamodel.schema.Schema; import org.apache.metamodel.schema.Table; + import org.apache.metamodel.schema.naming.CustomColumnNamingStrategy; import org.apache.metamodel.util.DateUtils; import org.apache.metamodel.util.FileHelper; +import org.apache.metamodel.util.FileResource; import org.apache.metamodel.util.Month; +import junit.framework.TestCase; + public class ExcelDataContextTest extends TestCase { /** http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/fixedwidth/pom.xml ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthDataContext.java ---------------------------------------------------------------------- diff --cc fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthDataContext.java index 28ee300,027cdab..952c4b5 --- a/fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthDataContext.java +++ b/fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthDataContext.java @@@ -69,9 -89,24 +69,9 @@@ public class FixedWidthDataContext exte } /** - * Gets the file being read. - * - * @return a file - * - * @deprecated use {@link #getResource()} instead. - */ - @Deprecated - public File getFile() { - if (_resource instanceof FileResource) { - return ((FileResource) _resource).getFile(); - } - return null; - } - - /** * Gets the resource being read * - * @return + * @return a {@link Resource} object */ public Resource getResource() { return _resource; http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/jdbc/pom.xml ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcDataContext.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcDeleteBuilder.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcInsertBuilder.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcUpdateBuilder.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/jdbc/src/test/java/org/apache/metamodel/jdbc/JdbcTestTemplates.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/jdbc/src/test/java/org/apache/metamodel/jdbc/integrationtests/PostgresqlTest.java ---------------------------------------------------------------------- diff --cc jdbc/src/test/java/org/apache/metamodel/jdbc/integrationtests/PostgresqlTest.java index ef3ae28,2668df9..6f8fb09 --- a/jdbc/src/test/java/org/apache/metamodel/jdbc/integrationtests/PostgresqlTest.java +++ b/jdbc/src/test/java/org/apache/metamodel/jdbc/integrationtests/PostgresqlTest.java @@@ -22,8 -22,9 +22,10 @@@ import java.lang.reflect.Method import java.sql.Connection; import java.sql.DatabaseMetaData; import java.util.Arrays; + import java.util.HashMap; import java.util.List; +import java.util.Optional; + import java.util.Map; import java.util.concurrent.TimeUnit; import javax.swing.table.TableModel; @@@ -434,42 -478,6 +481,42 @@@ public class PostgresqlTest extends Abs } } + public void testGetGeneratedKeys() throws Exception { + if (!isConfigured()) { + return; + } + + final JdbcDataContext dc = new JdbcDataContext(getConnection()); + final Schema schema = dc.getDefaultSchema(); + final String tableName = "my_table_with_generated_keys"; + + if (schema.getTableByName(tableName) != null) { + dc.executeUpdate(new DropTable(schema, tableName)); + } + + final UpdateSummary updateSummary = dc.executeUpdate(new UpdateScript() { + @Override + public void run(UpdateCallback cb) { + Table table = cb.createTable(schema, tableName).withColumn("id").ofType(ColumnType.INTEGER) + .ofNativeType("SERIAL").nullable(false).asPrimaryKey().withColumn("foo").ofType( + ColumnType.STRING).execute(); + assertEquals(tableName, table.getName()); + + cb.insertInto(table).value("foo", "hello").execute(); + cb.insertInto(table).value("foo", "world").execute(); + } + }); + + final Optional<Integer> insertedRows = updateSummary.getInsertedRows(); + assertTrue(insertedRows.isPresent()); + assertEquals(2, insertedRows.get().intValue()); + + final Optional<Iterable<Object>> generatedKeys = updateSummary.getGeneratedKeys(); + assertTrue(generatedKeys.isPresent()); + assertEquals("[1, 2]", generatedKeys.get().toString()); + + } - ++ public void testBlob() throws Exception { if (!isConfigured()) { return; http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/pom.xml ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/salesforce/pom.xml ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/c4788a27/salesforce/src/main/java/org/apache/metamodel/salesforce/SalesforceDataContext.java ----------------------------------------------------------------------