Author: shawkins
Date: 2012-03-02 21:23:45 -0500 (Fri, 02 Mar 2012)
New Revision: 3909
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCMetdataProcessor.java
trunk/test-integration/common/src/test/java/org/teiid/jdbc/TestDymamicImportedMetaData.java
Log:
TEIID-1959 added excludeTables and excludeProcedures
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCMetdataProcessor.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCMetdataProcessor.java 2012-03-02
17:35:05 UTC (rev 3908)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCMetdataProcessor.java 2012-03-03
02:23:45 UTC (rev 3909)
@@ -33,6 +33,7 @@
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
+import java.util.regex.Pattern;
import org.teiid.core.util.StringUtil;
import org.teiid.logging.LogConstants;
@@ -90,6 +91,9 @@
private Set<String> unsignedTypes = new HashSet<String>();
private String quoteString;
+ private Pattern excludeTables;
+ private Pattern excludeProcedures;
+
public void getConnectorMetadata(Connection conn, MetadataFactory metadataFactory)
throws SQLException, TranslatorException {
DatabaseMetaData metadata = conn.getMetaData();
@@ -149,6 +153,9 @@
}
}
String fullProcedureName = getFullyQualifiedName(procedureCatalog, procedureSchema,
procedureName);
+ if (excludeProcedures != null &&
excludeProcedures.matcher(fullProcedureName).matches()) {
+ continue;
+ }
Procedure procedure =
metadataFactory.addProcedure(useFullSchemaName?fullProcedureName:procedureName);
procedure.setNameInSource(getFullyQualifiedName(procedureCatalog, procedureSchema,
nameInSource, true));
ResultSet columns = metadata.getProcedureColumns(catalog, procedureSchema,
procedureName, null);
@@ -209,6 +216,9 @@
String tableSchema = tables.getString(2);
String tableName = tables.getString(3);
String fullName = getFullyQualifiedName(tableCatalog, tableSchema, tableName);
+ if (excludeTables != null && excludeTables.matcher(fullName).matches()) {
+ continue;
+ }
Table table = metadataFactory.addTable(useFullSchemaName?fullName:tableName);
table.setNameInSource(getFullyQualifiedName(tableCatalog, tableSchema, tableName,
true));
table.setSupportsUpdate(true);
@@ -486,4 +496,12 @@
this.useCatalogName = useCatalog;
}
+ public void setExcludeProcedures(String excludeProcedures) {
+ this.excludeProcedures = Pattern.compile(excludeProcedures, Pattern.DOTALL |
Pattern.CASE_INSENSITIVE);
+ }
+
+ public void setExcludeTables(String excludeTables) {
+ this.excludeTables = Pattern.compile(excludeTables, Pattern.DOTALL |
Pattern.CASE_INSENSITIVE);
+ }
+
}
Modified:
trunk/test-integration/common/src/test/java/org/teiid/jdbc/TestDymamicImportedMetaData.java
===================================================================
---
trunk/test-integration/common/src/test/java/org/teiid/jdbc/TestDymamicImportedMetaData.java 2012-03-02
17:35:05 UTC (rev 3908)
+++
trunk/test-integration/common/src/test/java/org/teiid/jdbc/TestDymamicImportedMetaData.java 2012-03-03
02:23:45 UTC (rev 3909)
@@ -28,6 +28,8 @@
import java.util.LinkedHashMap;
import java.util.Properties;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
import org.teiid.core.types.DataTypeManager;
import org.teiid.core.util.UnitTestUtil;
@@ -47,6 +49,16 @@
@SuppressWarnings("nls")
public class TestDymamicImportedMetaData {
+ FakeServer server;
+
+ @Before public void setup() {
+ server = new FakeServer();
+ }
+
+ @After public void teardown() {
+ server.stop();
+ }
+
private MetadataFactory getMetadata(Properties importProperties, Connection conn)
throws TranslatorException {
MetadataFactory mf = createMetadataFactory("test", importProperties);
@@ -63,7 +75,6 @@
}
@Test public void testProcImport() throws Exception {
- FakeServer server = new FakeServer();
server.deployVDB("vdb", UnitTestUtil.getTestDataPath() +
"/TestCase3473/test.vdb");
Connection conn = server.createConnection("jdbc:teiid:vdb");
//$NON-NLS-1$
@@ -71,11 +82,25 @@
importProperties.setProperty("importer.importProcedures",
Boolean.TRUE.toString());
MetadataFactory mf = getMetadata(importProperties, conn);
Procedure p =
mf.getMetadataStore().getSchemas().get("TEST").getProcedures().get("VDB.SYS.GETXMLSCHEMAS");
+ assertEquals(29,
mf.getMetadataStore().getSchemas().get("TEST").getTables().size());
+ assertEquals(8,
mf.getMetadataStore().getSchemas().get("TEST").getProcedures().size());
assertEquals(1, p.getResultSet().getColumns().size());
}
+ @Test public void testExcludes() throws Exception {
+ server.deployVDB("vdb", UnitTestUtil.getTestDataPath() +
"/TestCase3473/test.vdb");
+ Connection conn = server.createConnection("jdbc:teiid:vdb");
//$NON-NLS-1$
+
+ Properties importProperties = new Properties();
+ importProperties.setProperty("importer.importProcedures",
Boolean.TRUE.toString());
+ importProperties.setProperty("importer.excludeTables",
"VDB\\.SYS\\..*");
+ importProperties.setProperty("importer.excludeProcedures",
"VDB\\..*");
+ MetadataFactory mf = getMetadata(importProperties, conn);
+ assertEquals(18,
mf.getMetadataStore().getSchemas().get("TEST").getTables().size());
+ assertEquals(0,
mf.getMetadataStore().getSchemas().get("TEST").getProcedures().size());
+ }
+
@Test public void testDuplicateException() throws Exception {
- FakeServer server = new FakeServer();
MetadataFactory mf = createMetadataFactory("x", new Properties());
MetadataFactory mf1 = createMetadataFactory("y", new Properties());
@@ -107,7 +132,6 @@
}
@Test public void testUseCatalog() throws Exception {
- FakeServer server = new FakeServer();
MetadataFactory mf = createMetadataFactory("x", new Properties());
Table dup = mf.addTable("dup");