You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ka...@apache.org on 2014/09/30 09:21:28 UTC

[1/2] git commit: METAMODEL-76: Fixed.

Repository: incubator-metamodel
Updated Branches:
  refs/heads/master cdd037a9f -> d6e8d5422


METAMODEL-76: Fixed.

Project: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/commit/401cfa0d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/tree/401cfa0d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/diff/401cfa0d

Branch: refs/heads/master
Commit: 401cfa0dc29f6ee71effc029575011f210c80af2
Parents: cd147b2
Author: Kasper Sørensen <i....@gmail.com>
Authored: Sun Sep 28 19:55:02 2014 +0200
Committer: Kasper Sørensen <i....@gmail.com>
Committed: Sun Sep 28 19:55:02 2014 +0200

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../org/apache/metamodel/query/FilterItem.java  | 13 ++++-----
 .../apache/metamodel/query/OperatorType.java    | 30 ++++++++++----------
 .../java/org/apache/metamodel/query/Query.java  | 10 +++++--
 .../QueryPostprocessDataContextTest.java        | 15 ++++++++++
 .../metamodel/mongodb/MongoDbDataContext.java   |  3 --
 6 files changed, 44 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/401cfa0d/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 9ecdc7b..3a61db7 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -2,6 +2,7 @@ Apache MetaModel 4.3.0-incubating
 
  * [METAMODEL-77] - New module 'elasticsearch' for connecting and modeling ElasticSearch indexes through MetaModel.
  * [METAMODEL-74] - Fixed bug related to skipping blank values when applying an aggregate function (SUM, AVG etc.)
+ * [METAMODEL-76] - Query parser improved to handle filters without spaces inbetween operator and operands.
 
 Apache MetaModel 4.2.0-incubating
 

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/401cfa0d/core/src/main/java/org/apache/metamodel/query/FilterItem.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/query/FilterItem.java b/core/src/main/java/org/apache/metamodel/query/FilterItem.java
index 4a6d0af..8893fb1 100644
--- a/core/src/main/java/org/apache/metamodel/query/FilterItem.java
+++ b/core/src/main/java/org/apache/metamodel/query/FilterItem.java
@@ -235,7 +235,7 @@ public class FilterItem extends BaseObject implements QueryItem, Cloneable, IRow
         }
         return this;
     }
-    
+
     @Override
     public String toSql() {
         return toSql(false);
@@ -262,7 +262,8 @@ public class FilterItem extends BaseObject implements QueryItem, Cloneable, IRow
                 final Object operand = appendOperator(sb, _operand, _operator);
 
                 if (operand instanceof SelectItem) {
-                    final String selectItemString = ((SelectItem) operand).getSameQueryAlias(includeSchemaInColumnPaths);
+                    final String selectItemString = ((SelectItem) operand)
+                            .getSameQueryAlias(includeSchemaInColumnPaths);
                     sb.append(selectItemString);
                 } else {
                     ColumnType columnType = _selectItem.getExpectedColumnType();
@@ -287,7 +288,6 @@ public class FilterItem extends BaseObject implements QueryItem, Cloneable, IRow
         return sb.toString();
     }
 
-    @SuppressWarnings("deprecation")
     public static Object appendOperator(StringBuilder sb, Object operand, OperatorType operator) {
         switch (operator) {
         case DIFFERENT_FROM:
@@ -300,11 +300,9 @@ public class FilterItem extends BaseObject implements QueryItem, Cloneable, IRow
             sb.append(" LIKE ");
             break;
         case GREATER_THAN:
-        case HIGHER_THAN:
             sb.append(" > ");
             break;
         case LESS_THAN:
-        case LOWER_THAN:
             sb.append(" < ");
             break;
         case IN:
@@ -374,16 +372,15 @@ public class FilterItem extends BaseObject implements QueryItem, Cloneable, IRow
         }
     }
 
-    @SuppressWarnings("deprecation")
     private boolean compare(Object selectItemValue, Object operandValue) {
         Comparator<Object> comparator = ObjectComparator.getComparator();
         if (_operator == OperatorType.DIFFERENT_FROM) {
             return comparator.compare(selectItemValue, operandValue) != 0;
         } else if (_operator == OperatorType.EQUALS_TO) {
             return comparator.compare(selectItemValue, operandValue) == 0;
-        } else if (_operator == OperatorType.GREATER_THAN || _operator == OperatorType.HIGHER_THAN) {
+        } else if (_operator == OperatorType.GREATER_THAN) {
             return comparator.compare(selectItemValue, operandValue) > 0;
-        } else if (_operator == OperatorType.LESS_THAN || _operator == OperatorType.LOWER_THAN) {
+        } else if (_operator == OperatorType.LESS_THAN) {
             return comparator.compare(selectItemValue, operandValue) < 0;
         } else if (_operator == OperatorType.LIKE) {
             WildcardPattern matcher = new WildcardPattern((String) operandValue, '%');

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/401cfa0d/core/src/main/java/org/apache/metamodel/query/OperatorType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/query/OperatorType.java b/core/src/main/java/org/apache/metamodel/query/OperatorType.java
index a2d68b9..5a0d281 100644
--- a/core/src/main/java/org/apache/metamodel/query/OperatorType.java
+++ b/core/src/main/java/org/apache/metamodel/query/OperatorType.java
@@ -25,31 +25,31 @@ package org.apache.metamodel.query;
  */
 public enum OperatorType {
 
-    EQUALS_TO("="), DIFFERENT_FROM("<>"), LIKE("LIKE"), GREATER_THAN(">"), LESS_THAN("<"), IN("IN"),
-
-    /**
-     * @deprecated use {@link #LESS_THAN} instead.
-     */
-    @Deprecated
-    LOWER_THAN("<"),
-
-    /**
-     * @deprecated use {@link #GREATER_THAN} instead.
-     */
-    @Deprecated
-    HIGHER_THAN(">");
+    EQUALS_TO("=", false), DIFFERENT_FROM("<>", false), LIKE("LIKE", true), GREATER_THAN(">", false), LESS_THAN("<",
+            false), IN("IN", true);
 
     private final String _sql;
+    private final boolean _spaceDelimited;
 
-    private OperatorType(String sql) {
+    private OperatorType(String sql, boolean spaceDelimited) {
         _sql = sql;
+        _spaceDelimited = spaceDelimited;
+    }
+
+/**
+     * Determines if this operator requires a space delimitor. Operators that are written using letters usually require space delimitation whereas sign-based operators such as "=" and "<" can be applied even without any delimitaton.
+     * 
+     * @return
+     */
+    public boolean isSpaceDelimited() {
+        return _spaceDelimited;
     }
 
     public String toSql() {
         return _sql;
     }
 
-    /**
+/**
      * Converts from SQL string literals to an OperatorType. Valid SQL values
      * are "=", "<>", "LIKE", ">" and "<".
      * 

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/401cfa0d/core/src/main/java/org/apache/metamodel/query/Query.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/query/Query.java b/core/src/main/java/org/apache/metamodel/query/Query.java
index 1b0f6d3..f46b007 100644
--- a/core/src/main/java/org/apache/metamodel/query/Query.java
+++ b/core/src/main/java/org/apache/metamodel/query/Query.java
@@ -323,11 +323,17 @@ public final class Query extends BaseObject implements Cloneable, Serializable {
             String rightSideCandidate = null;
             final OperatorType[] operators = OperatorType.values();
             for (OperatorType operatorCandidate : operators) {
-                final int operatorIndex = expression.indexOf(' ' + operatorCandidate.toSql() + ' ');
+                final String searchStr;
+                if (operatorCandidate.isSpaceDelimited()) {
+                    searchStr = ' ' + operatorCandidate.toSql() + ' ';
+                } else {
+                    searchStr = operatorCandidate.toSql();
+                }
+                final int operatorIndex = expression.indexOf(searchStr);
                 if (operatorIndex > 0) {
                     operator = operatorCandidate;
                     leftSide = expression.substring(0, operatorIndex).trim();
-                    rightSideCandidate = expression.substring(operatorIndex + operator.toSql().length() + 2).trim();
+                    rightSideCandidate = expression.substring(operatorIndex + searchStr.length()).trim();
                     break;
                 }
             }

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/401cfa0d/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java b/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java
index 0949e1e..3b2be2f 100644
--- a/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java
+++ b/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java
@@ -965,4 +965,19 @@ public class QueryPostprocessDataContextTest extends MetaModelTestCase {
         assertEquals("Row[values=[hello world]]", result.getRow().toString());
         assertFalse(result.next());
     }
+
+    public void testQueryWithDotInTableName() throws Exception {
+        MockDataContext dc = new MockDataContext("folder", "file.csv", "foo");
+
+        Table table = dc.getDefaultSchema().getTableByName("file.csv");
+        assertNotNull(table);
+
+        Query q = dc.parseQuery("SELECT foo FROM file.csv WHERE \r\nfoo='bar'");
+        assertNotNull(q);
+
+        FilterItem item = q.getWhereClause().getItem(0);
+        assertNull(item.getExpression());
+
+        assertEquals("file.csv.foo = 'bar'", item.toSql());
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/401cfa0d/mongodb/src/main/java/org/apache/metamodel/mongodb/MongoDbDataContext.java
----------------------------------------------------------------------
diff --git a/mongodb/src/main/java/org/apache/metamodel/mongodb/MongoDbDataContext.java b/mongodb/src/main/java/org/apache/metamodel/mongodb/MongoDbDataContext.java
index 9da4ecf..fb8c8a8 100644
--- a/mongodb/src/main/java/org/apache/metamodel/mongodb/MongoDbDataContext.java
+++ b/mongodb/src/main/java/org/apache/metamodel/mongodb/MongoDbDataContext.java
@@ -409,7 +409,6 @@ public class MongoDbDataContext extends QueryPostprocessDataContext implements U
         }
     }
 
-    @SuppressWarnings("deprecation")
     private String getOperatorName(FilterItem item) {
         final String operatorName;
         switch (item.getOperator()) {
@@ -417,11 +416,9 @@ public class MongoDbDataContext extends QueryPostprocessDataContext implements U
             operatorName = null;
             break;
         case LESS_THAN:
-        case LOWER_THAN:
             operatorName = "$lt";
             break;
         case GREATER_THAN:
-        case HIGHER_THAN:
             operatorName = "$gt";
             break;
         case DIFFERENT_FROM:


[2/2] git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-metamodel.git

Posted by ka...@apache.org.
Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/incubator-metamodel.git

Conflicts:
	CHANGES.txt


Project: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/commit/d6e8d542
Tree: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/tree/d6e8d542
Diff: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/diff/d6e8d542

Branch: refs/heads/master
Commit: d6e8d5422f3d0780c6f09c6db0e549bb6c2b22bc
Parents: 401cfa0 cdd037a
Author: Kasper Sørensen <i....@gmail.com>
Authored: Tue Sep 30 09:21:03 2014 +0200
Committer: Kasper Sørensen <i....@gmail.com>
Committed: Tue Sep 30 09:21:03 2014 +0200

----------------------------------------------------------------------
 CHANGES.md    | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 CHANGES.txt   | 54 ------------------------------------------------------
 CONTRIBUTE.md | 28 +++++++++++++++++++++-------
 README        | 38 --------------------------------------
 README.md     | 39 +++++++++++++++++++++++++++++++++++++++
 pom.xml       |  7 +------
 6 files changed, 115 insertions(+), 105 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/d6e8d542/CHANGES.md
----------------------------------------------------------------------
diff --cc CHANGES.md
index 0000000,6d30684..6959c71
mode 000000,100644..100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@@ -1,0 -1,53 +1,54 @@@
+ ### Apache MetaModel 4.3.0-incubating
+ 
+  * [METAMODEL-77] - New module 'elasticsearch' for connecting and modeling ElasticSearch indexes through MetaModel.
+  * [METAMODEL-74] - Fixed bug related to skipping blank values when applying an aggregate function (SUM, AVG etc.)
++ * [METAMODEL-76] - Query parser improved to handle filters without spaces inbetween operator and operands.
+ 
+ ### Apache MetaModel 4.2.0-incubating
+ 
+  * [METAMODEL-38] - New module 'json' for handling json files (containing JSON arrays of documents or line-delimited JSON documents)
+  * [METAMODEL-54] - ColumnType converted from enum to interface to allow for further specialization in modules.
+  * [METAMODEL-57] - Changed the column type VARCHAR into STRING for the modules: CSV, Fixedwidth, Excel and XML.
+  * [METAMODEL-56] - Made separate column types for converted JDBC LOBs - "CLOB as String" and "BLOB as bytes".
+  * [METAMODEL-46] - Improved row-lookup by primary key (ID) in CouchDB
+  * [METAMODEL-58] - Fixed a bug related to using CreateTable class and primary keys not getting created.
+  * [METAMODEL-3]  - Improved writing of Byte-Order-Mark (BOM) for various encoding spelling variants.
+  * [METAMODEL-70] - Made the build compatible with both JDK versions 6 and 7.
+  * [METAMODEL-59] - Fixed a bug related to handling of date/time literals in MS SQL Server queries.
+  * [METAMODEL-60] - Fixed a bug related to DISTINCT and TOP keywords in MS SQL Server queries.
+  * [METAMODEL-45] - Improved and standardized way of handling integration test connection information towards external databases.
+  * [METAMODEL-62] - Fixed a bug related to fault-tolerant handling of malformed CSV lines when reading CSVs in single-line mode
+  * [METAMODEL-68] - Made it possible to create a CSV table without a header line in the file, if the user configures it.
+  * [METAMODEL-67] - Upgraded Jackson (JSON library) dependency from org.codehaus namespace to the newer com.fasterxml namespace.
+  * [METAMODEL-69] - Fixed issue with deserialization of ColumnType into the new interface instead of the old enum.
+ 
+ ### Apache MetaModel 4.1.0-incubating
+ 
+  * [METAMODEL-13] - Added support for Apache HBase via the new module "MetaModel-hbase"
+  * [METAMODEL-41] - Added a parser for SimpleTableDef objects (SimpleTableDefParser). It parses statements similar to CREATE TABLE statements, although without the "CREATE TABLE" prefix. For example: foo (bar INTEGER, baz VARCHAR)
+  * [METAMODEL-11] - New module "MetaModel-spring" which adds a convenient FactoryBean to produce various types of DataContext objects based on externalizable parameters, for Spring framework users.
+  * [METAMODEL-32] - Fixed thread-safety issue in Excel module when tables (sheets) metadata is updated.
+  * [METAMODEL-47] - Fixed issue in Excel of loading schema if query is fired based on metadata from a previous DataContext instance.
+  * [METAMODEL-35] - Improved query rewriting for DB2 when paged queries contain ORDER BY clause.
+  * [METAMODEL-44] - Added an optional method for QueryPostprocessDataContext implementations to do a row-lookup by primary key value.
+  * [METAMODEL-43] - Made CSV datastores skip empty lines in file instead of treating them of rows with null values.
+  * [METAMODEL-39] - Added pooling of active/used Connections and PreparedStatements in JDBC compiled queries.
+  * [METAMODEL-34] - Updated LICENSE file to not include bundled dependencies' licenses.
+  * [METAMODEL-33] - Ensured that Apache Rat plugin for Maven is properly activated.
+  * [METAMODEL-37] - Removed old site sources from project.
+ 
+ ### Apache MetaModel 4.0.0-incubating
+ 
+  * [METAMODEL-9] - SalesforceDataSet is throwing exception for insert sql of record having date/time.
+  * [METAMODEL-4] - Use folder name as schema name for file based DataContexts
+  * [METAMODEL-5] - Faster CsvDataContext implementation for single-line values
+  * [METAMODEL-26] - Provide endpoint URL with SalesforceDataContext
+  * Upgraded Apache POI dependency to v. 3.9
+  * Improved fluent Query builder API by adding string parameter based methods for joining tables
+  * Added a utility ObjectInputStream for deserializing legacy MetaModel objects
+  * Performance improvement to CSV reading when values are only single line based
+  * Setting up the project on apache infrastructure
+  * [METAMODEL-10] - Exclude Jackcess dependency (Access module) from MetaModel
+  * Renaming the package hierarchy from org.eobjects.metamodel to org.apache.metamodel
+  * [METAMODEL-29] - Fixed issue in CreateTable builder class, causing it to only support a single column definition
+  * [METAMODEL-30] - Fixed issue with count(*) queries on CSV resources that does not provide a byte stream length