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/04/04 10:53:41 UTC
[1/2] git commit: METAMODEL-47: Fixed
Repository: incubator-metamodel
Updated Branches:
refs/heads/master f6b3373ea -> 7e4d0b984
METAMODEL-47: 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/2648a4f1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/tree/2648a4f1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/diff/2648a4f1
Branch: refs/heads/master
Commit: 2648a4f15650458a9c6d8450ef294a1185087f8a
Parents: 828c82d
Author: Kasper Sørensen <i....@gmail.com>
Authored: Fri Apr 4 10:50:13 2014 +0200
Committer: Kasper Sørensen <i....@gmail.com>
Committed: Fri Apr 4 10:50:13 2014 +0200
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../metamodel/data/RowPublisherDataSet.java | 7 +-
.../excel/DefaultSpreadsheetReaderDelegate.java | 2 -
.../metamodel/excel/ExcelDataContext.java | 4 ++
.../excel/XlsxSpreadsheetReaderDelegate.java | 2 -
.../metamodel/excel/ExcelDataContextTest.java | 72 +++++++++++++-------
6 files changed, 58 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/2648a4f1/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 764599c..6e0f69d 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -4,6 +4,7 @@
* [METAMODEL-13] - Added support for Apache HBase via the new module "MetaModel-hbase"!
* [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.
http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/2648a4f1/core/src/main/java/org/apache/metamodel/data/RowPublisherDataSet.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/data/RowPublisherDataSet.java b/core/src/main/java/org/apache/metamodel/data/RowPublisherDataSet.java
index 8717136..47f0325 100644
--- a/core/src/main/java/org/apache/metamodel/data/RowPublisherDataSet.java
+++ b/core/src/main/java/org/apache/metamodel/data/RowPublisherDataSet.java
@@ -30,8 +30,6 @@ import org.slf4j.LoggerFactory;
* instead allows a publshing action to publish rows to the dataset in a
* blocking manner, and thereby to adapt without having to load all rows into
* memory.
- *
- * @author Kasper Sørensen
*/
public final class RowPublisherDataSet extends AbstractDataSet {
@@ -59,7 +57,10 @@ public final class RowPublisherDataSet extends AbstractDataSet {
public void close() {
super.close();
_closed = true;
- _rowPublisher.finished();
+ if (_rowPublisher != null) {
+ _rowPublisher.finished();
+ _rowPublisher = null;
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/2648a4f1/excel/src/main/java/org/apache/metamodel/excel/DefaultSpreadsheetReaderDelegate.java
----------------------------------------------------------------------
diff --git a/excel/src/main/java/org/apache/metamodel/excel/DefaultSpreadsheetReaderDelegate.java b/excel/src/main/java/org/apache/metamodel/excel/DefaultSpreadsheetReaderDelegate.java
index 48a96f3..c1e2015 100644
--- a/excel/src/main/java/org/apache/metamodel/excel/DefaultSpreadsheetReaderDelegate.java
+++ b/excel/src/main/java/org/apache/metamodel/excel/DefaultSpreadsheetReaderDelegate.java
@@ -43,8 +43,6 @@ import org.slf4j.LoggerFactory;
/**
* The default {@link SpreadsheetReaderDelegate}, which uses POI's main user
* model to read spreadsheets: the Workbook class.
- *
- * @author Kasper Sørensen
*/
final class DefaultSpreadsheetReaderDelegate implements SpreadsheetReaderDelegate {
http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/2648a4f1/excel/src/main/java/org/apache/metamodel/excel/ExcelDataContext.java
----------------------------------------------------------------------
diff --git a/excel/src/main/java/org/apache/metamodel/excel/ExcelDataContext.java b/excel/src/main/java/org/apache/metamodel/excel/ExcelDataContext.java
index f29f86b..26a64c7 100644
--- a/excel/src/main/java/org/apache/metamodel/excel/ExcelDataContext.java
+++ b/excel/src/main/java/org/apache/metamodel/excel/ExcelDataContext.java
@@ -147,6 +147,10 @@ public final class ExcelDataContext extends QueryPostprocessDataContext implemen
try {
SpreadsheetReaderDelegate delegate = getSpreadsheetReaderDelegate(inputStreamRef);
inputStream = inputStreamRef.get();
+
+ // METAMODEL-47: Ensure that we have loaded the schema at this point
+ getDefaultSchema();
+
DataSet dataSet = delegate.executeQuery(inputStream, table, columns, maxRows);
return dataSet;
} catch (Exception e) {
http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/2648a4f1/excel/src/main/java/org/apache/metamodel/excel/XlsxSpreadsheetReaderDelegate.java
----------------------------------------------------------------------
diff --git a/excel/src/main/java/org/apache/metamodel/excel/XlsxSpreadsheetReaderDelegate.java b/excel/src/main/java/org/apache/metamodel/excel/XlsxSpreadsheetReaderDelegate.java
index d2e0e98..810330d 100644
--- a/excel/src/main/java/org/apache/metamodel/excel/XlsxSpreadsheetReaderDelegate.java
+++ b/excel/src/main/java/org/apache/metamodel/excel/XlsxSpreadsheetReaderDelegate.java
@@ -50,8 +50,6 @@ import org.xml.sax.XMLReader;
* {@link SpreadsheetReaderDelegate} implementation for the "new" XLSX format.
* This implementation is very efficient as it uses SAX XML parsing which does
* not bloat memory usage in the same way that POI's user model does.
- *
- * @author Kasper Sørensen
*/
final class XlsxSpreadsheetReaderDelegate implements SpreadsheetReaderDelegate {
http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/2648a4f1/excel/src/test/java/org/apache/metamodel/excel/ExcelDataContextTest.java
----------------------------------------------------------------------
diff --git a/excel/src/test/java/org/apache/metamodel/excel/ExcelDataContextTest.java b/excel/src/test/java/org/apache/metamodel/excel/ExcelDataContextTest.java
index 010dd03..f553ddf 100644
--- a/excel/src/test/java/org/apache/metamodel/excel/ExcelDataContextTest.java
+++ b/excel/src/test/java/org/apache/metamodel/excel/ExcelDataContextTest.java
@@ -85,8 +85,8 @@ public class ExcelDataContextTest extends TestCase {
}
public void testUnexistingHeaderLine() throws Exception {
- DataContext dc = new ExcelDataContext(new File("src/test/resources/xls_people.xls"), new ExcelConfiguration(20, true,
- false));
+ DataContext dc = new ExcelDataContext(new File("src/test/resources/xls_people.xls"), new ExcelConfiguration(20,
+ true, false));
assertEquals(1, dc.getDefaultSchema().getTableCount());
Table table = dc.getDefaultSchema().getTables()[0];
@@ -163,8 +163,8 @@ public class ExcelDataContextTest extends TestCase {
assertTrue(ds.next());
row = ds.getRow();
- assertEquals("TismmerswerskisMFSTLandsmeers ", row.getValue(0)
- .toString());
+ assertEquals("TismmerswerskisMFSTLandsmeers ", row
+ .getValue(0).toString());
assertTrue(ds.next());
row = ds.getRow();
@@ -172,8 +172,8 @@ public class ExcelDataContextTest extends TestCase {
assertTrue(ds.next());
row = ds.getRow();
- assertEquals("TismmerswerskisMFSTLandsmeers ", row.getValue(0)
- .toString());
+ assertEquals("TismmerswerskisMFSTLandsmeers ", row
+ .getValue(0).toString());
assertFalse(ds.next());
ds.close();
@@ -185,7 +185,8 @@ public class ExcelDataContextTest extends TestCase {
Table table = dc.getDefaultSchema().getTables()[0];
Column[] columns = table.getColumns();
- assertEquals("[some number, some mixed formula, some int only formula]", Arrays.toString(table.getColumnNames()));
+ assertEquals("[some number, some mixed formula, some int only formula]",
+ Arrays.toString(table.getColumnNames()));
Query q = dc.query().from(table).select(columns).toQuery();
DataSet ds = dc.executeQuery(q);
@@ -294,7 +295,8 @@ public class ExcelDataContextTest extends TestCase {
public void testConfigurationWithoutHeader() throws Exception {
File file = new File("src/test/resources/xls_people.xls");
- DataContext dc = new ExcelDataContext(file, new ExcelConfiguration(ExcelConfiguration.NO_COLUMN_NAME_LINE, true, true));
+ DataContext dc = new ExcelDataContext(file, new ExcelConfiguration(ExcelConfiguration.NO_COLUMN_NAME_LINE,
+ true, true));
Table table = dc.getDefaultSchema().getTables()[0];
String[] columnNames = table.getColumnNames();
@@ -516,10 +518,10 @@ public class ExcelDataContextTest extends TestCase {
Table table = schema.getTableByName("Sheet1");
assertEquals(
- "[Column[name=Pkg No.,columnNumber=0,type=VARCHAR,nullable=true,nativeType=null,columnSize=null], "
- + "Column[name=Description,columnNumber=1,type=VARCHAR,nullable=true,nativeType=null,columnSize=null], "
- + "Column[name=Room,columnNumber=2,type=VARCHAR,nullable=true,nativeType=null,columnSize=null], "
- + "Column[name=Level,columnNumber=3,type=VARCHAR,nullable=true,nativeType=null,columnSize=null]]",
+ "[Column[name=Pkg No.,columnNumber=0,type=VARCHAR,nullable=true,nativeType=null,columnSize=null], "
+ + "Column[name=Description,columnNumber=1,type=VARCHAR,nullable=true,nativeType=null,columnSize=null], "
+ + "Column[name=Room,columnNumber=2,type=VARCHAR,nullable=true,nativeType=null,columnSize=null], "
+ + "Column[name=Level,columnNumber=3,type=VARCHAR,nullable=true,nativeType=null,columnSize=null]]",
Arrays.toString(table.getColumns()));
}
@@ -542,7 +544,8 @@ public class ExcelDataContextTest extends TestCase {
public void run(UpdateCallback cb) {
Style clownStyle = new StyleBuilder().bold().foreground(255, 0, 0).background(0, 0, 255).create();
- Style thirtyStyle = new StyleBuilder().italic().underline().centerAligned().foreground(10, 10, 200).create();
+ Style thirtyStyle = new StyleBuilder().italic().underline().centerAligned().foreground(10, 10, 200)
+ .create();
cb.insertInto(table).value("id", 1000).value(nameColumn, "pennywise the [clown]", clownStyle)
.value("gender", "male").value("age", 30, thirtyStyle).execute();
@@ -566,7 +569,8 @@ public class ExcelDataContextTest extends TestCase {
assertEquals("mike", ds.getRow().getValue(0).toString());
assertTrue(ds.next());
assertEquals("pennywise the [clown]", ds.getRow().getValue(0).toString());
- assertEquals("font-weight: bold;color: rgb(255,0,0);background-color: rgb(0,0,255);", ds.getRow().getStyle(0).toString());
+ assertEquals("font-weight: bold;color: rgb(255,0,0);background-color: rgb(0,0,255);", ds.getRow().getStyle(0)
+ .toString());
assertTrue(ds.next());
assertEquals("peter", ds.getRow().getValue(0).toString());
assertTrue(ds.next());
@@ -577,8 +581,8 @@ public class ExcelDataContextTest extends TestCase {
ds = dc.query().from(table).select("age").where("age").eq(30).execute();
assertTrue(ds.next());
assertEquals("30", ds.getRow().getValue(0));
- assertEquals("font-style: italic;text-decoration: underline;text-align: center;color: rgb(0,0,255);", ds.getRow()
- .getStyle(0).toCSS());
+ assertEquals("font-style: italic;text-decoration: underline;text-align: center;color: rgb(0,0,255);", ds
+ .getRow().getStyle(0).toCSS());
assertFalse(ds.next());
}
@@ -598,15 +602,15 @@ public class ExcelDataContextTest extends TestCase {
@Override
public void run(UpdateCallback cb) {
Schema schema = dc.getDefaultSchema();
- Table table1 = cb.createTable(schema, "my_table_1").withColumn("foo").withColumn("bar").withColumn("baz")
- .execute();
+ Table table1 = cb.createTable(schema, "my_table_1").withColumn("foo").withColumn("bar")
+ .withColumn("baz").execute();
assertEquals(1, schema.getTableCount());
assertSame(table1.getSchema(), schema);
assertSame(table1, schema.getTables()[0]);
- Table table2 = cb.createTable(schema, "my_table_2").withColumn("foo").withColumn("bar").withColumn("baz")
- .execute();
+ Table table2 = cb.createTable(schema, "my_table_2").withColumn("foo").withColumn("bar")
+ .withColumn("baz").execute();
assertSame(table2.getSchema(), schema);
assertSame(table2, schema.getTables()[1]);
@@ -626,7 +630,7 @@ public class ExcelDataContextTest extends TestCase {
@Override
public void run(UpdateCallback cb) {
cb.insertInto(dc.getTableByQualifiedLabel("my_table_1")).value("foo", 456.2)
- .value("bar", "парфюмерия +и косметика").value("baz", false).execute();
+ .value("bar", "парфюмерия +и косметика").value("baz", false).execute();
}
});
@@ -655,8 +659,9 @@ public class ExcelDataContextTest extends TestCase {
}
});
- assertEquals("1", MetaModelHelper.executeSingleRowQuery(dc, dc.query().from("my_table_1").selectCount().toQuery())
- .getValue(0).toString());
+ assertEquals("1",
+ MetaModelHelper.executeSingleRowQuery(dc, dc.query().from("my_table_1").selectCount().toQuery())
+ .getValue(0).toString());
ds = dc.query().from("my_table_1").select("foo").and("bar").and("baz").execute();
assertTrue(ds.next());
@@ -738,4 +743,25 @@ public class ExcelDataContextTest extends TestCase {
assertFalse(ds.next());
}
+
+ /**
+ * Tests that you can execute a query on a ExcelDataContext even though the
+ * schema has not yet been (explicitly) loaded.
+ */
+ public void testExecuteQueryBeforeLoadingSchema() throws Exception {
+ // first use one DataContext to retreive the schema/table/column objects
+ ExcelDataContext dc1 = new ExcelDataContext(new File("src/test/resources/Spreadsheet2007.xlsx"));
+ Schema schema = dc1.getDefaultSchema();
+ Table table = schema.getTable(0);
+ Column column = table.getColumn(0);
+
+ // query another DataContext using the schemas of the one above
+ ExcelDataContext dc2 = new ExcelDataContext(new File("src/test/resources/Spreadsheet2007.xlsx"));
+ DataSet ds = dc2.executeQuery(new Query().from(table).select(column));
+
+ // previously we would crash at this point!
+
+ assertNotNull(ds);
+ ds.close();
+ }
}
\ No newline at end of file
[2/2] git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/incubator-metamodel.git into
METAMODEL-47
Posted by ka...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-metamodel.git into METAMODEL-47
Project: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/commit/7e4d0b98
Tree: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/tree/7e4d0b98
Diff: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/diff/7e4d0b98
Branch: refs/heads/master
Commit: 7e4d0b984fda798d6157672f049a4409e4435930
Parents: 2648a4f f6b3373
Author: Kasper Sørensen <i....@gmail.com>
Authored: Fri Apr 4 10:51:09 2014 +0200
Committer: Kasper Sørensen <i....@gmail.com>
Committed: Fri Apr 4 10:51:09 2014 +0200
----------------------------------------------------------------------
README | 6 +-
.../metamodel/couchdb/CouchDbDataContext.java | 34 ++++++---
.../couchdb/CouchDbDataContextTest.java | 16 ++---
...del-integrationtest-configuration.properties | 31 ++++++++
.../metamodel/hbase/HBaseDataContextTest.java | 28 ++++----
.../apache/metamodel/hbase/HBaseTestCase.java | 74 ++++++++++++++++++++
pom.xml | 1 +
.../salesforce/SalesforceTestCase.java | 17 +++--
.../metamodel/sugarcrm/SugarCrmTestCase.java | 18 +++--
9 files changed, 181 insertions(+), 44 deletions(-)
----------------------------------------------------------------------