Skip to content

Instantly share code, notes, and snippets.

@kaspersorensen
Last active December 20, 2015 23:18
Show Gist options
  • Select an option

  • Save kaspersorensen/6210970 to your computer and use it in GitHub Desktop.

Select an option

Save kaspersorensen/6210970 to your computer and use it in GitHub Desktop.
diff --git a/core/src/main/java/org/apache/metamodel/AbstractDataContext.java b/core/src/main/java/org/apache/metamodel/AbstractDataContext.java
index 3e395fa..77ab3c1 100644
--- a/core/src/main/java/org/apache/metamodel/AbstractDataContext.java
+++ b/core/src/main/java/org/apache/metamodel/AbstractDataContext.java
@@ -18,10 +18,8 @@
*/
package org.apache.metamodel;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
-import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@@ -232,21 +230,6 @@ public abstract class AbstractDataContext implements DataContext {
if (columnName == null) {
return null;
}
-
- final String[] tokens = tokenizePath(columnName, 3);
- if (tokens != null) {
- final Schema schema = getSchemaByToken(tokens[0]);
- if (schema != null) {
- final Table table = schema.getTableByName(tokens[1]);
- if (table != null) {
- final Column column = table.getColumnByName(tokens[2]);
- if (column != null) {
- return column;
- }
- }
- }
- }
-
Schema schema = null;
final String[] schemaNames = getSchemaNames();
for (final String schemaName : schemaNames) {
@@ -383,18 +366,6 @@ public abstract class AbstractDataContext implements DataContext {
if (tableName == null) {
return null;
}
-
- final String[] tokens = tokenizePath(tableName, 2);
- if (tokens != null) {
- Schema schema = getSchemaByToken(tokens[0]);
- if (schema != null) {
- Table table = schema.getTableByName(tokens[1]);
- if (table != null) {
- return table;
- }
- }
- }
-
Schema schema = null;
String[] schemaNames = getSchemaNames();
for (String schemaName : schemaNames) {
@@ -442,73 +413,6 @@ public abstract class AbstractDataContext implements DataContext {
return schema.getTableByName(tablePart);
}
- /**
- * Tokenizes a path for a table or a column.
- *
- * @param tableName
- * @param expectedParts
- * @return
- */
- private String[] tokenizePath(String path, int expectedParts) {
- List<String> tokens = new ArrayList<String>(expectedParts);
-
- boolean inQuotes = false;
- StringBuilder currentToken = new StringBuilder();
- for (int i = 0; i < path.length(); i++) {
- char c = path.charAt(i);
- if (c == '.' && !inQuotes) {
- // token finished
- tokens.add(currentToken.toString());
- currentToken.setLength(0);
-
- if (tokens.size() > expectedParts) {
- return null;
- }
- } else if (c == '"') {
- // TODO: Act on false assertions
- if (inQuotes) {
- if (i + 1 < path.length() && path.charAt(i + 1) != '.') {
- return null;
- }
- } else {
- if (currentToken.length() > 0) {
- return null;
- }
- }
- inQuotes = !inQuotes;
- } else {
- currentToken.append(c);
- }
- }
-
- if (currentToken.length() > 0) {
- tokens.add(currentToken.toString());
- }
-
- if (tokens.size() == expectedParts - 1) {
- // add a special-meaning "null" which will be interpreted as the
- // default schema (since the schema wasn't specified).
- tokens.add(0, null);
- } else if (tokens.size() != expectedParts) {
- return null;
- }
-
- return tokens.toArray(new String[tokens.size()]);
- }
-
- private Schema getSchemaByToken(String token) {
- if (token == null) {
- return getDefaultSchema();
- }
- try {
- return getSchemaByName(token);
- } catch (RuntimeException e) {
- // swallow this exception - the attempt did not work and the null
- // will be treated.
- return null;
- }
- }
-
private boolean isStartingToken(String partName, String fullName) {
if (fullName.startsWith(partName)) {
final int length = partName.length();
diff --git a/core/src/main/java/org/apache/metamodel/schema/MutableColumn.java b/core/src/main/java/org/apache/metamodel/schema/MutableColumn.java
index 050de15..6308d50 100644
--- a/core/src/main/java/org/apache/metamodel/schema/MutableColumn.java
+++ b/core/src/main/java/org/apache/metamodel/schema/MutableColumn.java
@@ -73,11 +73,6 @@ public class MutableColumn extends AbstractColumn implements Serializable {
setQuote(quote);
}
- public MutableColumn(String name, Table table) {
- this(name);
- setTable(table);
- }
-
@Override
public int getColumnNumber() {
return _columnNumber;
diff --git a/core/src/main/java/org/apache/metamodel/schema/MutableTable.java b/core/src/main/java/org/apache/metamodel/schema/MutableTable.java
index e0e5e4e..39ad0b2 100644
--- a/core/src/main/java/org/apache/metamodel/schema/MutableTable.java
+++ b/core/src/main/java/org/apache/metamodel/schema/MutableTable.java
@@ -68,11 +68,6 @@ public class MutableTable extends AbstractTable implements Serializable {
setColumns(columns);
}
- public MutableTable(String name, Schema schema) {
- this(name);
- _schema = schema;
- }
-
@Override
public String getName() {
return _name;
diff --git a/core/src/main/java/org/apache/metamodel/util/ClasspathResource.java b/core/src/main/java/org/apache/metamodel/util/ClasspathResource.java
index dee85af..a205886 100644
--- a/core/src/main/java/org/apache/metamodel/util/ClasspathResource.java
+++ b/core/src/main/java/org/apache/metamodel/util/ClasspathResource.java
@@ -38,15 +38,14 @@ public class ClasspathResource implements Resource, Serializable {
}
_resourcePath = resourcePath;
}
-
+
@Override
public String toString() {
return "ClasspathResource[" + _resourcePath + "]";
}
-
+
/**
* Gets the name of the classpath entry
- *
* @return
*/
public String getResourcePath() {
@@ -68,11 +67,6 @@ public class ClasspathResource implements Resource, Serializable {
return name;
}
- @Override
- public String getQualifiedPath() {
- return _resourcePath;
- }
-
protected ClassLoader getClassLoader() {
return ClassLoader.getSystemClassLoader();
}
diff --git a/core/src/main/java/org/apache/metamodel/util/FileResource.java b/core/src/main/java/org/apache/metamodel/util/FileResource.java
index 81cf46a..12fe80d 100644
--- a/core/src/main/java/org/apache/metamodel/util/FileResource.java
+++ b/core/src/main/java/org/apache/metamodel/util/FileResource.java
@@ -19,7 +19,6 @@
package org.apache.metamodel.util;
import java.io.File;
-import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
@@ -49,15 +48,6 @@ public class FileResource implements Resource, Serializable {
public String getName() {
return _file.getName();
}
-
- @Override
- public String getQualifiedPath() {
- try {
- return _file.getCanonicalPath();
- } catch (IOException e) {
- return _file.getAbsolutePath();
- }
- }
@Override
public boolean isReadOnly() {
diff --git a/core/src/main/java/org/apache/metamodel/util/InMemoryResource.java b/core/src/main/java/org/apache/metamodel/util/InMemoryResource.java
index 35e0b9a..64bf531 100644
--- a/core/src/main/java/org/apache/metamodel/util/InMemoryResource.java
+++ b/core/src/main/java/org/apache/metamodel/util/InMemoryResource.java
@@ -77,11 +77,6 @@ public class InMemoryResource implements Resource, Serializable {
}
return name;
}
-
- @Override
- public String getQualifiedPath() {
- return _path;
- }
/**
* Gets the path of this resource
diff --git a/core/src/main/java/org/apache/metamodel/util/Resource.java b/core/src/main/java/org/apache/metamodel/util/Resource.java
index 657ffe6..9b5ed53 100644
--- a/core/src/main/java/org/apache/metamodel/util/Resource.java
+++ b/core/src/main/java/org/apache/metamodel/util/Resource.java
@@ -34,14 +34,6 @@ public interface Resource extends HasName {
public String getName();
/**
- * Gets the qualified path of the resource, which typically includes slash
- * or backslash separated nodes in a hierarical tree structure.
- *
- * @return
- */
- public String getQualifiedPath();
-
- /**
* Determines if the file is read only, or if writes are also possible.
*
* @return
diff --git a/core/src/main/java/org/apache/metamodel/util/ResourceUtils.java b/core/src/main/java/org/apache/metamodel/util/ResourceUtils.java
deleted file mode 100644
index 0ce61f4..0000000
--- a/core/src/main/java/org/apache/metamodel/util/ResourceUtils.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.metamodel.util;
-
-/**
- * Static utility methods for handling {@link Resource}s.
- */
-public class ResourceUtils {
-
- /**
- * Gets the parent name of a resource. For example, if the resource's
- * qualified path is /foo/bar/baz, this method will return "bar".
- *
- * @param resource
- * @return
- */
- public static String getParentName(Resource resource) {
- String name = resource.getName();
- String qualifiedPath = resource.getQualifiedPath();
-
- assert qualifiedPath.endsWith(name);
-
- int indexOfChild = qualifiedPath.length() - name.length() - 1;
-
- if (indexOfChild <= 0) {
- return name;
- }
-
- String parentQualifiedPath = qualifiedPath.substring(0, indexOfChild);
-
- int lastIndexOfSlash = parentQualifiedPath.lastIndexOf('/');
- int lastIndexOfBackSlash = parentQualifiedPath.lastIndexOf('\\');
- int lastIndexToUse = Math.max(lastIndexOfSlash, lastIndexOfBackSlash);
-
- if (lastIndexToUse == -1) {
- return parentQualifiedPath;
- }
-
- // add one because of the slash/backslash itself
- lastIndexToUse++;
-
- String parentName = parentQualifiedPath.substring(lastIndexToUse);
- return parentName;
- }
-}
diff --git a/core/src/main/java/org/apache/metamodel/util/UrlResource.java b/core/src/main/java/org/apache/metamodel/util/UrlResource.java
index 6a5cac8..7030854 100644
--- a/core/src/main/java/org/apache/metamodel/util/UrlResource.java
+++ b/core/src/main/java/org/apache/metamodel/util/UrlResource.java
@@ -82,11 +82,6 @@ public class UrlResource implements Resource, Serializable {
}
return name;
}
-
- @Override
- public String getQualifiedPath() {
- return _uri.toString();
- }
@Override
public boolean isReadOnly() {
diff --git a/core/src/test/java/org/apache/metamodel/AbstractDataContextTest.java b/core/src/test/java/org/apache/metamodel/AbstractDataContextTest.java
index 478e4fb..8493a08 100644
--- a/core/src/test/java/org/apache/metamodel/AbstractDataContextTest.java
+++ b/core/src/test/java/org/apache/metamodel/AbstractDataContextTest.java
@@ -19,11 +19,8 @@
package org.apache.metamodel;
import java.util.Arrays;
-import java.util.LinkedHashMap;
-import java.util.Map;
import junit.framework.TestCase;
-
import org.apache.metamodel.data.DataSet;
import org.apache.metamodel.query.Query;
import org.apache.metamodel.schema.Column;
@@ -35,131 +32,101 @@ import org.apache.metamodel.schema.Table;
public class AbstractDataContextTest extends TestCase {
- private class MyDataContext extends AbstractDataContext {
-
- private final Map<String, Schema> _schemas;
- private final String _defaultSchemaName;
-
- public MyDataContext() {
- this("foobar", createSchema("barfoo"), createSchema("foobar"), createSchema("foo.bar"));
- }
-
- public MyDataContext(String defaultSchemaName, Schema... schemas) {
- _defaultSchemaName = defaultSchemaName;
- _schemas = new LinkedHashMap<String, Schema>();
- for (Schema schema : schemas) {
- _schemas.put(schema.getName(), schema);
- }
- }
-
- @Override
- public DataSet executeQuery(Query query) throws MetaModelException {
- throw new UnsupportedOperationException();
- }
-
- @Override
- protected String[] getSchemaNamesInternal() {
- return _schemas.keySet().toArray(new String[0]);
- }
-
- @Override
- protected String getDefaultSchemaName() {
- return _defaultSchemaName;
- }
-
- @Override
- protected Schema getSchemaByNameInternal(String name) {
- Schema schema = _schemas.get(name);
- if (schema == null) {
- throw new IllegalStateException("No such schema: " + name);
- }
- return schema;
- }
- }
-
- public void testGetTableWithQuotesInLabel() throws Exception {
- MutableSchema schema1 = new MutableSchema("foo");
- schema1.addTable(new MutableTable("bar.baz", schema1));
-
- MutableSchema schema2 = new MutableSchema("foo.bar");
- schema2.addTable(new MutableTable("baz", schema2));
-
- MyDataContext dc = new MyDataContext("foo", schema1, schema2);
- assertEquals("baz", dc.getTableByQualifiedLabel("foo.bar.baz").getName());
-
- assertEquals("baz", dc.getTableByQualifiedLabel("\"foo.bar\".baz").getName());
- assertEquals("baz", dc.getTableByQualifiedLabel("\"foo.bar\".\"baz\"").getName());
- assertEquals("bar.baz", dc.getTableByQualifiedLabel("foo.\"bar.baz\"").getName());
- assertEquals("bar.baz", dc.getTableByQualifiedLabel("\"foo\".\"bar.baz\"").getName());
- }
-
- public void testGetColumnWithQuotesInLabel() throws Exception {
- MutableSchema schema = new MutableSchema("foo");
-
- MutableTable table1 = new MutableTable("bar.baz", schema);
- schema.addTable(table1);
- table1.addColumn(new MutableColumn("buuh", table1));
-
- MutableTable table2 = new MutableTable("bar", schema);
- schema.addTable(table2);
- table2.addColumn(new MutableColumn("baz.buuh", table2));
-
- MyDataContext dc = new MyDataContext("foo", schema);
- assertEquals("buuh", dc.getColumnByQualifiedLabel("foo.bar.baz.buuh").getName());
-
- assertEquals("buuh", dc.getColumnByQualifiedLabel("foo.\"bar.baz\".buuh").getName());
- assertEquals("buuh", dc.getColumnByQualifiedLabel("foo.\"bar.baz\".\"buuh\"").getName());
- assertEquals("baz.buuh", dc.getColumnByQualifiedLabel("foo.bar.\"baz.buuh\"").getName());
- assertEquals("baz.buuh", dc.getColumnByQualifiedLabel("\"foo\".bar.\"baz.buuh\"").getName());
- }
-
- public void testGetColumnByQualifiedLabel() throws Exception {
- MyDataContext dc = new MyDataContext();
- Column result;
-
- result = dc.getColumnByQualifiedLabel("foobar.tab.le.col1");
- result = dc.getColumnByQualifiedLabel("blabla.tab.le.col4");
- result = dc.getColumnByQualifiedLabel("FOOBAR.TABLE.COL3");
- assertNull(result);
-
- result = dc.getColumnByQualifiedLabel("foobar.table.col1");
- assertEquals("col1", result.getName());
- assertEquals("table", result.getTable().getName());
- assertEquals("foobar", result.getTable().getSchema().getName());
-
- result = dc.getColumnByQualifiedLabel("foo.bar.table.col1");
- assertEquals("col1", result.getName());
- assertEquals("table", result.getTable().getName());
- assertEquals("foo.bar", result.getTable().getSchema().getName());
-
- result = dc.getColumnByQualifiedLabel("foobar.tab.le.col3");
- assertEquals("col3", result.getName());
- assertEquals("tab.le", result.getTable().getName());
- assertEquals("foobar", result.getTable().getSchema().getName());
-
- result = dc.getColumnByQualifiedLabel("FOO.BAR.tab.le.col3");
- assertEquals("col3", result.getName());
- assertEquals("tab.le", result.getTable().getName());
- assertEquals("foo.bar", result.getTable().getSchema().getName());
-
- result = dc.getColumnByQualifiedLabel("tab.le.col3");
- assertEquals("col3", result.getName());
- assertEquals("tab.le", result.getTable().getName());
- assertEquals("foobar", result.getTable().getSchema().getName());
- }
-
- public void testGetTableByQualfiedLabelSchemaNameInTableName() throws Exception {
+ private class MyDataContext extends AbstractDataContext {
+ @Override
+ public DataSet executeQuery(Query query) throws MetaModelException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ protected String[] getSchemaNamesInternal() {
+ return new String[] { "barfoo", "foobar", "foo.bar" };
+ }
+
+ @Override
+ protected String getDefaultSchemaName() {
+ return "foobar";
+ }
+
+ @Override
+ protected Schema getSchemaByNameInternal(String name) {
+ if ("barfoo".equals(name) || "foobar".equals(name)
+ || "foo.bar".equals(name)) {
+ return createSchema(name);
+ }
+ throw new IllegalStateException("No such schema: " + name);
+ }
+
+ private Schema createSchema(String name) {
+ MutableSchema schema = new MutableSchema(name);
+ MutableTable t1 = new MutableTable("table");
+ MutableColumn col1 = new MutableColumn("col1");
+ MutableColumn col2 = new MutableColumn("col2");
+ t1.addColumn(col1).addColumn(col2);
+ col1.setTable(t1);
+ col2.setTable(t1);
+ MutableTable t2 = new MutableTable("tab.le");
+ MutableColumn col3 = new MutableColumn("col3");
+ MutableColumn col4 = new MutableColumn("col4");
+ t2.addColumn(col3).addColumn(col4);
+ col3.setTable(t2);
+ col4.setTable(t2);
+ schema.addTable(t1).addTable(t2);
+ t1.setSchema(schema);
+ t2.setSchema(schema);
+ return schema;
+ }
+
+ }
+
+
+ public void testGetColumnByQualifiedLabel() throws Exception {
+ MyDataContext dc = new MyDataContext();
+ Column result;
+
+ result = dc.getColumnByQualifiedLabel("foobar.tab.le.col1");
+ result = dc.getColumnByQualifiedLabel("blabla.tab.le.col4");
+ result = dc.getColumnByQualifiedLabel("FOOBAR.TABLE.COL3");
+ assertNull(result);
+
+ result = dc.getColumnByQualifiedLabel("foobar.table.col1");
+ assertEquals("col1", result.getName());
+ assertEquals("table", result.getTable().getName());
+ assertEquals("foobar", result.getTable().getSchema().getName());
+
+ result = dc.getColumnByQualifiedLabel("foo.bar.table.col1");
+ assertEquals("col1", result.getName());
+ assertEquals("table", result.getTable().getName());
+ assertEquals("foo.bar", result.getTable().getSchema().getName());
+
+ result = dc.getColumnByQualifiedLabel("foobar.tab.le.col3");
+ assertEquals("col3", result.getName());
+ assertEquals("tab.le", result.getTable().getName());
+ assertEquals("foobar", result.getTable().getSchema().getName());
+
+ result = dc.getColumnByQualifiedLabel("FOO.BAR.tab.le.col3");
+ assertEquals("col3", result.getName());
+ assertEquals("tab.le", result.getTable().getName());
+ assertEquals("foo.bar", result.getTable().getSchema().getName());
+
+ result = dc.getColumnByQualifiedLabel("tab.le.col3");
+ assertEquals("col3", result.getName());
+ assertEquals("tab.le", result.getTable().getName());
+ assertEquals("foobar", result.getTable().getSchema().getName());
+ }
+
+ public void testGetTableByQualfiedLabelSchemaNameInTableName() throws Exception {
AbstractDataContext dc = new AbstractDataContext() {
@Override
public DataSet executeQuery(Query query) throws MetaModelException {
return null;
}
-
+
@Override
protected String[] getSchemaNamesInternal() {
- return new String[] { "test" };
+ return new String[] {"test"};
}
-
+
@Override
protected Schema getSchemaByNameInternal(String name) {
MutableSchema sch = new MutableSchema("test");
@@ -168,120 +135,113 @@ public class AbstractDataContextTest extends TestCase {
sch.addTable(new MutableTable("test_table3").setSchema(sch));
return sch;
}
-
+
@Override
protected String getDefaultSchemaName() {
return "test";
}
};
-
+
assertEquals("test_table1", dc.getTableByQualifiedLabel("test_table1").getName());
assertEquals("test_table2", dc.getTableByQualifiedLabel("test_table2").getName());
assertEquals("test_table3", dc.getTableByQualifiedLabel("test_table3").getName());
}
- public void testGetTableByQualifiedLabel() throws Exception {
- MyDataContext dc = new MyDataContext();
-
- Table result;
-
- result = dc.getTableByQualifiedLabel("FOOBAR.table");
- assertEquals("table", result.getName());
- assertEquals("foobar", result.getSchema().getName());
-
- result = dc.getTableByQualifiedLabel("table");
- assertEquals("table", result.getName());
- assertEquals("foobar", result.getSchema().getName());
-
- result = dc.getTableByQualifiedLabel("foo.bar.table");
- assertEquals("table", result.getName());
- assertEquals("foo.bar", result.getSchema().getName());
-
- result = dc.getTableByQualifiedLabel("foobar.tab.le");
- assertEquals("tab.le", result.getName());
- assertEquals("foobar", result.getSchema().getName());
-
- result = dc.getTableByQualifiedLabel("foo.bar.tab.le");
- assertEquals("tab.le", result.getName());
- assertEquals("foo.bar", result.getSchema().getName());
-
- result = dc.getTableByQualifiedLabel("foo.table");
- assertNull(result);
- }
-
- public void testGetSchemas() throws Exception {
- MyDataContext dc = new MyDataContext();
- Schema[] schemas = dc.getSchemas();
- assertEquals("[Schema[name=barfoo], Schema[name=foo.bar], Schema[name=foobar]]", Arrays.toString(schemas));
-
- dc.refreshSchemas();
- schemas = dc.getSchemas();
- assertEquals("[Schema[name=barfoo], Schema[name=foo.bar], Schema[name=foobar]]", Arrays.toString(schemas));
- }
-
- public void testGetColumnByQualifiedLabelWithNameOverlaps() throws Exception {
- AbstractDataContext dc = new AbstractDataContext() {
-
- @Override
- public DataSet executeQuery(Query query) throws MetaModelException {
- throw new UnsupportedOperationException();
- }
-
- @Override
- protected String[] getSchemaNamesInternal() {
- return new String[] { "sch" };
- }
-
- @Override
- protected Schema getSchemaByNameInternal(String name) {
- MutableSchema schema = new MutableSchema("sch");
- MutableTable table1 = new MutableTable("tab");
- MutableTable table2 = new MutableTable("tab_le");
- MutableTable table3 = new MutableTable("table");
- MutableTable table4 = new MutableTable("tabl_e");
- schema.addTable(table1.addColumn(new MutableColumn("col").setTable(table1)));
- schema.addTable(table2.addColumn(new MutableColumn("col").setTable(table2)));
- schema.addTable(table3.addColumn(new MutableColumn("col").setTable(table3)));
- schema.addTable(table4.addColumn(new MutableColumn("col").setTable(table4)));
- return schema;
- }
-
- @Override
- protected String getDefaultSchemaName() {
- return "sch";
- }
- };
-
- assertEquals("tab.col", dc.getColumnByQualifiedLabel("sch.tab.col").getQualifiedLabel());
- assertEquals("table.col", dc.getColumnByQualifiedLabel("sch.table.col").getQualifiedLabel());
- assertEquals("tab_le.col", dc.getColumnByQualifiedLabel("sch.tab_le.col").getQualifiedLabel());
- assertEquals("tabl_e.col", dc.getColumnByQualifiedLabel("sch.tabl_e.col").getQualifiedLabel());
- }
-
- public void testGetColumnByQualifiedLabelCaseInsensitive() throws Exception {
- MyDataContext dc = new MyDataContext();
- Column result = dc.getColumnByQualifiedLabel("FOOBAR.TABLE.COL1");
- assertNotNull(result);
- assertEquals("col1", result.getName());
- }
-
- protected static Schema createSchema(String name) {
- MutableSchema schema = new MutableSchema(name);
- MutableTable t1 = new MutableTable("table");
- MutableColumn col1 = new MutableColumn("col1");
- MutableColumn col2 = new MutableColumn("col2");
- t1.addColumn(col1).addColumn(col2);
- col1.setTable(t1);
- col2.setTable(t1);
- MutableTable t2 = new MutableTable("tab.le");
- MutableColumn col3 = new MutableColumn("col3");
- MutableColumn col4 = new MutableColumn("col4");
- t2.addColumn(col3).addColumn(col4);
- col3.setTable(t2);
- col4.setTable(t2);
- schema.addTable(t1).addTable(t2);
- t1.setSchema(schema);
- t2.setSchema(schema);
- return schema;
- }
+ public void testGetTableByQualifiedLabel() throws Exception {
+ MyDataContext dc = new MyDataContext();
+
+ Table result;
+
+ result = dc.getTableByQualifiedLabel("FOOBAR.table");
+ assertEquals("table", result.getName());
+ assertEquals("foobar", result.getSchema().getName());
+
+ result = dc.getTableByQualifiedLabel("table");
+ assertEquals("table", result.getName());
+ assertEquals("foobar", result.getSchema().getName());
+
+ result = dc.getTableByQualifiedLabel("foo.bar.table");
+ assertEquals("table", result.getName());
+ assertEquals("foo.bar", result.getSchema().getName());
+
+ result = dc.getTableByQualifiedLabel("foobar.tab.le");
+ assertEquals("tab.le", result.getName());
+ assertEquals("foobar", result.getSchema().getName());
+
+ result = dc.getTableByQualifiedLabel("foo.bar.tab.le");
+ assertEquals("tab.le", result.getName());
+ assertEquals("foo.bar", result.getSchema().getName());
+
+ result = dc.getTableByQualifiedLabel("foo.table");
+ assertNull(result);
+ }
+
+ public void testGetSchemas() throws Exception {
+ MyDataContext dc = new MyDataContext();
+ Schema[] schemas = dc.getSchemas();
+ assertEquals(
+ "[Schema[name=barfoo], Schema[name=foo.bar], Schema[name=foobar]]",
+ Arrays.toString(schemas));
+
+ dc.refreshSchemas();
+ schemas = dc.getSchemas();
+ assertEquals(
+ "[Schema[name=barfoo], Schema[name=foo.bar], Schema[name=foobar]]",
+ Arrays.toString(schemas));
+ }
+
+ public void testGetColumnByQualifiedLabelWithNameOverlaps()
+ throws Exception {
+ AbstractDataContext dc = new AbstractDataContext() {
+
+ @Override
+ public DataSet executeQuery(Query query) throws MetaModelException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ protected String[] getSchemaNamesInternal() {
+ return new String[] { "sch" };
+ }
+
+ @Override
+ protected Schema getSchemaByNameInternal(String name) {
+ MutableSchema schema = new MutableSchema("sch");
+ MutableTable table1 = new MutableTable("tab");
+ MutableTable table2 = new MutableTable("tab_le");
+ MutableTable table3 = new MutableTable("table");
+ MutableTable table4 = new MutableTable("tabl_e");
+ schema.addTable(table1.addColumn(new MutableColumn("col")
+ .setTable(table1)));
+ schema.addTable(table2.addColumn(new MutableColumn("col")
+ .setTable(table2)));
+ schema.addTable(table3.addColumn(new MutableColumn("col")
+ .setTable(table3)));
+ schema.addTable(table4.addColumn(new MutableColumn("col")
+ .setTable(table4)));
+ return schema;
+ }
+
+ @Override
+ protected String getDefaultSchemaName() {
+ return "sch";
+ }
+ };
+
+ assertEquals("tab.col", dc.getColumnByQualifiedLabel("sch.tab.col")
+ .getQualifiedLabel());
+ assertEquals("table.col", dc.getColumnByQualifiedLabel("sch.table.col")
+ .getQualifiedLabel());
+ assertEquals("tab_le.col", dc.getColumnByQualifiedLabel(
+ "sch.tab_le.col").getQualifiedLabel());
+ assertEquals("tabl_e.col", dc.getColumnByQualifiedLabel(
+ "sch.tabl_e.col").getQualifiedLabel());
+ }
+
+ public void testGetColumnByQualifiedLabelCaseInsensitive() throws Exception {
+ MyDataContext dc = new MyDataContext();
+ Column result = dc.getColumnByQualifiedLabel("FOOBAR.TABLE.COL1");
+ assertNotNull(result);
+ assertEquals("col1", result.getName());
+ }
}
\ No newline at end of file
diff --git a/core/src/test/java/org/apache/metamodel/util/ResourceUtilsTest.java b/core/src/test/java/org/apache/metamodel/util/ResourceUtilsTest.java
deleted file mode 100644
index c3a24aa..0000000
--- a/core/src/test/java/org/apache/metamodel/util/ResourceUtilsTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.metamodel.util;
-
-import java.io.File;
-
-import junit.framework.TestCase;
-
-public class ResourceUtilsTest extends TestCase {
-
- public void testGetParentName() throws Exception {
- Resource res = new FileResource(new File("src/test/resources/folder/foo"));
-
- assertEquals("folder", ResourceUtils.getParentName(res));
-
- res = new FileResource(new File("src/test/resources/folder/"));
-
- assertEquals("resources", ResourceUtils.getParentName(res));
-
- assertEquals("", ResourceUtils.getParentName(new InMemoryResource("")));
- assertEquals("foo", ResourceUtils.getParentName(new InMemoryResource("foo")));
- assertEquals("bar", ResourceUtils.getParentName(new InMemoryResource("foo/bar\\baz")));
- }
-}
diff --git a/csv/src/main/java/org/apache/metamodel/csv/CsvCreateTableBuilder.java b/csv/src/main/java/org/apache/metamodel/csv/CsvCreateTableBuilder.java
index c8eb569..513b8e8 100644
--- a/csv/src/main/java/org/apache/metamodel/csv/CsvCreateTableBuilder.java
+++ b/csv/src/main/java/org/apache/metamodel/csv/CsvCreateTableBuilder.java
@@ -23,26 +23,29 @@ import org.apache.metamodel.schema.MutableTable;
import org.apache.metamodel.schema.Schema;
import org.apache.metamodel.schema.Table;
-final class CsvCreateTableBuilder extends AbstractTableCreationBuilder<CsvUpdateCallback> {
+final class CsvCreateTableBuilder extends
+ AbstractTableCreationBuilder<CsvUpdateCallback> {
- public CsvCreateTableBuilder(CsvUpdateCallback updateCallback, Schema schema, String name) {
- super(updateCallback, schema, name);
- if (!(schema instanceof CsvSchema)) {
- throw new IllegalArgumentException("Not a valid CSV schema: " + schema);
- }
- }
+ public CsvCreateTableBuilder(CsvUpdateCallback updateCallback,
+ Schema schema, String name) {
+ super(updateCallback, schema, name);
+ if (!(schema instanceof CsvSchema)) {
+ throw new IllegalArgumentException("Not a valid CSV schema: "
+ + schema);
+ }
+ }
- @Override
- public Table execute() {
- CsvUpdateCallback csvUpdateCallback = getUpdateCallback();
+ @Override
+ public Table execute() {
+ CsvUpdateCallback csvUpdateCallback = getUpdateCallback();
- MutableTable table = getTable();
- String[] columnNames = table.getColumnNames();
- csvUpdateCallback.writeRow(columnNames, false);
+ MutableTable table = getTable();
+ String[] columnNames = table.getColumnNames();
+ csvUpdateCallback.writeRow(columnNames, false);
- CsvSchema schema = (CsvSchema) table.getSchema();
- CsvTable csvTable = new CsvTable(schema, table.getName(), table.getColumnNames());
- schema.setTable(csvTable);
- return csvTable;
- }
+ CsvSchema schema = (CsvSchema) table.getSchema();
+ CsvTable csvTable = new CsvTable(schema, table.getColumnNames());
+ schema.setTable(csvTable);
+ return csvTable;
+ }
}
diff --git a/csv/src/main/java/org/apache/metamodel/csv/CsvDataContext.java b/csv/src/main/java/org/apache/metamodel/csv/CsvDataContext.java
index c34c52b..5effa2c 100644
--- a/csv/src/main/java/org/apache/metamodel/csv/CsvDataContext.java
+++ b/csv/src/main/java/org/apache/metamodel/csv/CsvDataContext.java
@@ -43,7 +43,6 @@ import org.apache.metamodel.util.FileHelper;
import org.apache.metamodel.util.FileResource;
import org.apache.metamodel.util.Func;
import org.apache.metamodel.util.Resource;
-import org.apache.metamodel.util.ResourceUtils;
import org.apache.metamodel.util.UrlResource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -387,14 +386,14 @@ public final class CsvDataContext extends QueryPostprocessDataContext implements
protected CsvSchema getMainSchema() throws MetaModelException {
CsvSchema schema = new CsvSchema(getMainSchemaName(), this);
if (_resource.isExists()) {
- schema.setTable(new CsvTable(schema, _resource.getName()));
+ schema.setTable(new CsvTable(schema));
}
return schema;
}
@Override
protected String getMainSchemaName() {
- return ResourceUtils.getParentName(_resource);
+ return _resource.getName();
}
protected boolean isWritable() {
diff --git a/csv/src/main/java/org/apache/metamodel/csv/CsvSchema.java b/csv/src/main/java/org/apache/metamodel/csv/CsvSchema.java
index 6961271..6de36a6 100644
--- a/csv/src/main/java/org/apache/metamodel/csv/CsvSchema.java
+++ b/csv/src/main/java/org/apache/metamodel/csv/CsvSchema.java
@@ -52,7 +52,7 @@ final class CsvSchema extends AbstractSchema {
public String getQuote() {
return null;
}
-
+
@Override
public Table[] getTables() {
if (_table == null) {
diff --git a/csv/src/main/java/org/apache/metamodel/csv/CsvTable.java b/csv/src/main/java/org/apache/metamodel/csv/CsvTable.java
index 0fde506..1603bc8 100644
--- a/csv/src/main/java/org/apache/metamodel/csv/CsvTable.java
+++ b/csv/src/main/java/org/apache/metamodel/csv/CsvTable.java
@@ -37,7 +37,6 @@ final class CsvTable extends AbstractTable {
private static final long serialVersionUID = 1L;
private final CsvSchema _schema;
- private final String _tableName;
private Column[] _columns;
/**
@@ -46,8 +45,8 @@ final class CsvTable extends AbstractTable {
* @param schema
* @param columnNames
*/
- public CsvTable(CsvSchema schema, String tableName, String[] columnNames) {
- this(schema, tableName);
+ public CsvTable(CsvSchema schema, String[] columnNames) {
+ this(schema);
_columns = buildColumns(columnNames);
}
@@ -56,20 +55,14 @@ final class CsvTable extends AbstractTable {
*
* @param schema
*/
- public CsvTable(CsvSchema schema, String tableName) {
+ public CsvTable(CsvSchema schema) {
_schema = schema;
- _tableName = tableName;
}
@Override
public String getName() {
- if (_tableName == null) {
- // can only occur when deserializing legacy objects. Using the
- // legacy MetaModel code for creating table name here.
- String schemaName = _schema.getName();
- return schemaName.substring(0, schemaName.length() - 4);
- }
- return _tableName;
+ String schemaName = _schema.getName();
+ return schemaName.substring(0, schemaName.length() - 4);
}
@Override
@@ -98,8 +91,7 @@ final class CsvTable extends AbstractTable {
reader.close();
return buildColumns(columnHeaders);
} catch (IOException e) {
- throw new IllegalStateException("Exception reading from resource: "
- + _schema.getDataContext().getResource().getName(), e);
+ throw new IllegalStateException("Exception reading from resource: " + _schema.getDataContext().getResource().getName(), e);
} finally {
FileHelper.safeClose(reader);
}
diff --git a/csv/src/test/java/org/apache/metamodel/csv/CsvDataContextTest.java b/csv/src/test/java/org/apache/metamodel/csv/CsvDataContextTest.java
index e9b0f5b..c94190c 100644
--- a/csv/src/test/java/org/apache/metamodel/csv/CsvDataContextTest.java
+++ b/csv/src/test/java/org/apache/metamodel/csv/CsvDataContextTest.java
@@ -61,7 +61,7 @@ public class CsvDataContextTest extends TestCase {
assertEquals(1, dc.getDefaultSchema().getTableCount());
Table table = dc.getDefaultSchema().getTables()[0];
- assertEquals("empty_file.csv", table.getName());
+ assertEquals("empty_file", table.getName());
assertEquals(0, table.getColumnCount());
}
@@ -94,7 +94,7 @@ public class CsvDataContextTest extends TestCase {
assertEquals(1, dc.getDefaultSchema().getTableCount());
Table table = dc.getDefaultSchema().getTables()[0];
- assertEquals("empty_file.csv", table.getName());
+ assertEquals("empty_file", table.getName());
assertEquals(0, table.getColumnCount());
}
@@ -103,7 +103,7 @@ public class CsvDataContextTest extends TestCase {
assertEquals(1, dc.getDefaultSchema().getTableCount());
Table table = dc.getDefaultSchema().getTables()[0];
- assertEquals("csv_people.csv", table.getName());
+ assertEquals("csv_people", table.getName());
assertEquals(0, table.getColumnCount());
}
@@ -111,7 +111,7 @@ public class CsvDataContextTest extends TestCase {
CsvConfiguration conf = new CsvConfiguration(CsvConfiguration.DEFAULT_COLUMN_NAME_LINE, "UTF8", ',', '"', '\\',
true);
DataContext dc = new CsvDataContext(new File("src/test/resources/csv_inconsistent_columns.csv"), conf);
- DataSet ds = dc.query().from("csv_inconsistent_columns.csv").select("hello").and("world").execute();
+ DataSet ds = dc.query().from("csv_inconsistent_columns").select("hello").and("world").execute();
assertTrue(ds.next());
assertTrue(ds.next());
@@ -185,7 +185,7 @@ public class CsvDataContextTest extends TestCase {
}
Schema schema = dc.getDefaultSchema();
- String name = schema.getTable(0).getName();
+ String name = schema.getName();
assertTrue(name.startsWith("metamodel"));
assertTrue(name.endsWith("csv"));
@@ -199,7 +199,7 @@ public class CsvDataContextTest extends TestCase {
File file = new File("src/test/resources/tickets.csv");
DataContext dc = new CsvDataContext(file);
Schema schema = dc.getDefaultSchema();
- Table table = schema.getTableByName("tickets.csv");
+ Table table = schema.getTableByName("tickets");
Column descColumn = table.getColumnByName("_description");
assertNotNull(table);
@@ -233,10 +233,10 @@ public class CsvDataContextTest extends TestCase {
Schema[] schemas = dc.getSchemas();
assertEquals(2, schemas.length);
Schema schema = dc.getDefaultSchema();
- assertEquals("resources", schema.getName());
+ assertEquals("csv_people.csv", schema.getName());
assertEquals(1, schema.getTableCount());
Table table = schema.getTables()[0];
- assertEquals("csv_people.csv", table.getName());
+ assertEquals("csv_people", table.getName());
assertEquals(4, table.getColumnCount());
assertEquals(0, table.getRelationshipCount());
@@ -265,10 +265,10 @@ public class CsvDataContextTest extends TestCase {
Schema[] schemas = dc.getSchemas();
assertEquals(2, schemas.length);
Schema schema = dc.getDefaultSchema();
- assertEquals("resources", schema.getName());
+ assertEquals("csv_people.csv", schema.getName());
assertEquals(1, schema.getTableCount());
Table table = schema.getTables()[0];
- assertEquals("csv_people.csv", table.getName());
+ assertEquals("csv_people", table.getName());
assertEquals(4, table.getColumnCount());
assertEquals(0, table.getRelationshipCount());
@@ -296,10 +296,10 @@ public class CsvDataContextTest extends TestCase {
Schema[] schemas = dc.getSchemas();
assertEquals(2, schemas.length);
Schema schema = dc.getDefaultSchema();
- assertEquals("resources", schema.getName());
+ assertEquals("csv_people.csv", schema.getName());
assertEquals(1, schema.getTableCount());
Table table = schema.getTables()[0];
- assertEquals("csv_people.csv", table.getName());
+ assertEquals("csv_people", table.getName());
assertEquals(4, table.getColumnCount());
assertEquals(0, table.getRelationshipCount());
@@ -314,7 +314,7 @@ public class CsvDataContextTest extends TestCase {
public void testWhereItemNotInSelectClause() throws Exception {
File file = new File("src/test/resources/csv_people.csv");
QueryPostprocessDataContext dc = new CsvDataContext(file);
- Table table = dc.getDefaultSchema().getTableByName("csv_people.csv");
+ Table table = dc.getDefaultSchema().getTableByName("csv_people");
Query q = new Query();
q.from(table);
@@ -329,10 +329,10 @@ public class CsvDataContextTest extends TestCase {
public void testWhereColumnInValues() throws Exception {
File file = new File("src/test/resources/csv_people.csv");
QueryPostprocessDataContext dc = new CsvDataContext(file, new CsvConfiguration(1, true, true));
- Table table = dc.getDefaultSchema().getTableByName("csv_people.csv");
+ Table table = dc.getDefaultSchema().getTableByName("csv_people");
Query q = dc.query().from(table).as("t").select("name").and("age").where("age").in("18", "20").toQuery();
- assertEquals("SELECT t.name, t.age FROM resources.csv_people.csv t WHERE t.age IN ('18' , '20')", q.toSql());
+ assertEquals("SELECT t.name, t.age FROM csv_people.csv.csv_people t WHERE t.age IN ('18' , '20')", q.toSql());
DataSet ds = dc.executeQuery(q);
assertTrue(ds.next());
@@ -352,7 +352,7 @@ public class CsvDataContextTest extends TestCase {
public void testGroupByQuery() throws Exception {
DataContext dc = new CsvDataContext(new File("src/test/resources/csv_people.csv"));
- Table table = dc.getDefaultSchema().getTableByName("csv_people.csv");
+ Table table = dc.getDefaultSchema().getTableByName("csv_people");
Query q = new Query();
q.from(table);
@@ -363,7 +363,7 @@ public class CsvDataContextTest extends TestCase {
"total"), new SelectItem(FunctionType.MIN, table.getColumnByName("id")).setAlias("firstId"));
DataSet data = dc.executeQuery(q);
assertEquals(
- "[csv_people.csv.gender, MAX(csv_people.csv.age), MIN(csv_people.csv.age), COUNT(*) AS total, MIN(csv_people.csv.id) AS firstId]",
+ "[csv_people.gender, MAX(csv_people.age), MIN(csv_people.age), COUNT(*) AS total, MIN(csv_people.id) AS firstId]",
Arrays.toString(data.getSelectItems()));
String[] expectations = new String[] { "Row[values=[female, 20, 17, 5, 5]]", "Row[values=[male, 19, 17, 4, 1]]" };
@@ -443,7 +443,7 @@ public class CsvDataContextTest extends TestCase {
Table table = dc.getDefaultSchema().getTables()[0];
Query q = new Query().selectCount().from(table);
- assertEquals("SELECT COUNT(*) FROM resources.csv_people.csv", q.toString());
+ assertEquals("SELECT COUNT(*) FROM csv_people.csv.csv_people", q.toString());
List<Object[]> data = dc.executeQuery(q).toObjectArrays();
assertEquals(1, data.size());
@@ -452,7 +452,7 @@ public class CsvDataContextTest extends TestCase {
assertEquals("[9]", Arrays.toString(row));
q.select(table.getColumns()[0]);
- assertEquals("SELECT COUNT(*), csv_people.csv.id FROM resources.csv_people.csv", q.toString());
+ assertEquals("SELECT COUNT(*), csv_people.id FROM csv_people.csv.csv_people", q.toString());
data = dc.executeQuery(q).toObjectArrays();
assertEquals(9, data.size());
row = data.get(0);
@@ -511,11 +511,11 @@ public class CsvDataContextTest extends TestCase {
dc.executeUpdate(new UpdateScript() {
@Override
public void run(UpdateCallback callback) {
- callback.deleteFrom("csv_delete_all_records.txt").execute();
+ callback.deleteFrom("csv_delete_all_records").execute();
}
});
- DataSet ds = dc.query().from("csv_delete_all_records.txt").selectCount().execute();
+ DataSet ds = dc.query().from("csv_delete_all_records").selectCount().execute();
assertTrue(ds.next());
assertEquals(0, ((Number) ds.getRow().getValue(0)).intValue());
assertFalse(ds.next());
@@ -645,7 +645,7 @@ public class CsvDataContextTest extends TestCase {
Table table = dc.getDefaultSchema().getTables()[0];
MutableColumn col = (MutableColumn) table.getColumns()[0];
Query q = dc.query().from(table).select(col).toQuery();
- assertEquals("SELECT csv_only_number_one.csv.number FROM resources.csv_only_number_one.csv", q.toSql());
+ assertEquals("SELECT csv_only_number_one.number FROM csv_only_number_one.csv.csv_only_number_one", q.toSql());
DataSet ds = dc.executeQuery(q);
while (ds.next()) {
diff --git a/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvDataSetTest.java b/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvDataSetTest.java
index e41db1b..f618906 100644
--- a/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvDataSetTest.java
+++ b/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvDataSetTest.java
@@ -30,7 +30,7 @@ public class SingleLineCsvDataSetTest extends TestCase {
CsvConfiguration configuration = new CsvConfiguration(1, true, false);
CsvDataContext dc = new CsvDataContext(new File("src/test/resources/csv_people.csv"), configuration);
- DataSet dataSet = dc.query().from("csv_people.csv").select("age", "name").execute();
+ DataSet dataSet = dc.query().from("csv_people").select("age", "name").execute();
assertTrue(dataSet.next());
assertEquals("Row[values=[18, mike]]", dataSet.getRow().toString());
diff --git a/csv/src/test/java/org/apache/metamodel/intercept/InterceptionCsvIntegrationTest.java b/csv/src/test/java/org/apache/metamodel/intercept/InterceptionCsvIntegrationTest.java
index 7974beb..5f516f3 100644
--- a/csv/src/test/java/org/apache/metamodel/intercept/InterceptionCsvIntegrationTest.java
+++ b/csv/src/test/java/org/apache/metamodel/intercept/InterceptionCsvIntegrationTest.java
@@ -67,7 +67,7 @@ public class InterceptionCsvIntegrationTest extends TestCase {
}
});
- assertEquals("[table]",
+ assertEquals("[test_interception_scenario]",
Arrays.toString(dc.getDefaultSchema().getTableNames()));
Table table = dc.getDefaultSchema().getTables()[0];
assertEquals("[col1, col2, foobar]",
diff --git a/fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthDataContext.java b/fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthDataContext.java
index 58ec92a..1c807fa 100644
--- a/fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthDataContext.java
+++ b/fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthDataContext.java
@@ -37,7 +37,6 @@ import org.apache.metamodel.util.AlphabeticSequence;
import org.apache.metamodel.util.FileHelper;
import org.apache.metamodel.util.FileResource;
import org.apache.metamodel.util.Resource;
-import org.apache.metamodel.util.ResourceUtils;
/**
* DataContext implementation for fixed width value files.
@@ -116,7 +115,7 @@ public class FixedWidthDataContext extends QueryPostprocessDataContext {
protected Schema getMainSchema() throws MetaModelException {
final String schemaName = getDefaultSchemaName();
final MutableSchema schema = new MutableSchema(schemaName);
- final String tableName = _resource.getName();
+ final String tableName = schemaName.substring(0, schemaName.length() - 4);
final MutableTable table = new MutableTable(tableName, TableType.TABLE, schema);
schema.addTable(table);
@@ -155,7 +154,7 @@ public class FixedWidthDataContext extends QueryPostprocessDataContext {
@Override
protected String getMainSchemaName() throws MetaModelException {
- return ResourceUtils.getParentName(_resource);
+ return _resource.getName();
}
@Override
diff --git a/fixedwidth/src/test/java/org/apache/metamodel/fixedwidth/FixedWidthDataContextTest.java b/fixedwidth/src/test/java/org/apache/metamodel/fixedwidth/FixedWidthDataContextTest.java
index 2ac3680..52af87f 100644
--- a/fixedwidth/src/test/java/org/apache/metamodel/fixedwidth/FixedWidthDataContextTest.java
+++ b/fixedwidth/src/test/java/org/apache/metamodel/fixedwidth/FixedWidthDataContextTest.java
@@ -40,7 +40,7 @@ public class FixedWidthDataContextTest extends TestCase {
assertEquals(1, dc.getDefaultSchema().getTableCount());
Table table = dc.getDefaultSchema().getTables()[0];
- assertEquals("empty_file.txt", table.getName());
+ assertEquals("empty_file", table.getName());
assertEquals(0, table.getColumnCount());
}
@@ -50,7 +50,7 @@ public class FixedWidthDataContextTest extends TestCase {
assertEquals(1, dc.getDefaultSchema().getTableCount());
Table table = dc.getDefaultSchema().getTables()[0];
- assertEquals("empty_file.txt", table.getName());
+ assertEquals("empty_file", table.getName());
assertEquals(0, table.getColumnCount());
}
@@ -60,7 +60,7 @@ public class FixedWidthDataContextTest extends TestCase {
assertEquals(1, dc.getDefaultSchema().getTableCount());
Table table = dc.getDefaultSchema().getTables()[0];
- assertEquals("example_simple1.txt", table.getName());
+ assertEquals("example_simple1", table.getName());
assertEquals(0, table.getColumnCount());
}
@@ -70,15 +70,15 @@ public class FixedWidthDataContextTest extends TestCase {
String[] schemaNames = dc.getSchemaNames();
assertEquals(2, schemaNames.length);
- assertEquals("[information_schema, resources]", Arrays.toString(schemaNames));
+ assertEquals("[information_schema, example_simple1.txt]", Arrays.toString(schemaNames));
Schema schema = dc.getDefaultSchema();
- assertEquals("Schema[name=resources]", schema.toString());
+ assertEquals("Schema[name=example_simple1.txt]", schema.toString());
assertEquals(1, schema.getTableCount());
- Table table = schema.getTableByName("example_simple1.txt");
- assertEquals("Table[name=example_simple1.txt,type=TABLE,remarks=null]", table.toString());
+ Table table = schema.getTableByName("example_simple1");
+ assertEquals("Table[name=example_simple1,type=TABLE,remarks=null]", table.toString());
assertEquals("[greeting, greeter]", Arrays.toString(table.getColumnNames()));
assertEquals(10, table.getColumnByName("greeting").getColumnSize().intValue());
@@ -103,15 +103,15 @@ public class FixedWidthDataContextTest extends TestCase {
String[] schemaNames = dc.getSchemaNames();
assertEquals(2, schemaNames.length);
- assertEquals("[information_schema, resources]", Arrays.toString(schemaNames));
+ assertEquals("[information_schema, example_simple1.txt]", Arrays.toString(schemaNames));
Schema schema = dc.getDefaultSchema();
- assertEquals("Schema[name=resources]", schema.toString());
+ assertEquals("Schema[name=example_simple1.txt]", schema.toString());
assertEquals(1, schema.getTableCount());
- Table table = schema.getTableByName("example_simple1.txt");
- assertEquals("Table[name=example_simple1.txt,type=TABLE,remarks=null]", table.toString());
+ Table table = schema.getTableByName("example_simple1");
+ assertEquals("Table[name=example_simple1,type=TABLE,remarks=null]", table.toString());
assertEquals("[A, B]", Arrays.toString(table.getColumnNames()));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment