Skip to content

Commit

Permalink
TEIID-4785 TEIID-4788 TEIID-4765 TEIID-4807 addressing various metadata
Browse files Browse the repository at this point in the history
issues
  • Loading branch information
shawkins committed Mar 10, 2017
1 parent de38b9b commit 7ae12cf
Show file tree
Hide file tree
Showing 42 changed files with 854 additions and 1,198 deletions.
15 changes: 0 additions & 15 deletions admin/src/main/java/org/teiid/adminapi/Admin.java
Expand Up @@ -39,8 +39,6 @@ public enum SchemaObjectType {TABLES, PROCEDURES, FUNCTIONS};

public enum TranlatorPropertyType{IMPORT, OVERRIDE, EXTENSION_METADATA, ALL};

public enum ExportFormat {XML, DDL};

/**
* Removes a {@link Translator} and Data source from a {@link VDB}'s Model
*
Expand Down Expand Up @@ -518,19 +516,6 @@ void updateSource(String vdbName, String vdbVersion, String sourceName,
*/
String getSchema(String vdbName, String vdbVersion, String modelName, EnumSet<SchemaObjectType> allowedTypes, String typeNamePattern) throws AdminException;

/**
* Retrieve the schema of the given VDB (if model name is null), or DDL for a specific schema (when model is not null).
*
* @param vdbName - required
* @param vdbVersion - required
* @param modelName - required
* @param EnumSet<SchemaObjectType> Type of schema objects to retrieve, null means ALL the schema object types
* @param typeNamePattern RegEx pattern to filter to names of tables, procedures that are being read. Null means no filter.
* @param format - when exporting whole VDB, it can be either XML or DDL format
*/
String getSchema(String vdbName, String vdbVersion, String modelName, EnumSet<SchemaObjectType> allowedTypes,
String typeNamePattern, ExportFormat format) throws AdminException;

/**
* Get the Query Plan for the given session with provided execution id.
* @param sessionId
Expand Down
Expand Up @@ -45,6 +45,7 @@ public class VDBMetaData extends AdminObjectImpl implements VDB, Cloneable {
public static final String VERSION_DELIM = "."; //$NON-NLS-1$

public static final String TEIID_DOMAINS = "domain-ddl"; //$NON-NLS-1$
public static final String TEIID_DDL = "schema-ddl"; //$NON-NLS-1$

private static final long serialVersionUID = -4723595252013356436L;

Expand Down
12 changes: 1 addition & 11 deletions adminshell/src/main/java/org/teiid/adminshell/AdminShell.java
Expand Up @@ -34,7 +34,6 @@
import java.util.logging.Logger;

import org.teiid.adminapi.*;
import org.teiid.adminapi.Admin.ExportFormat;
import org.teiid.adminapi.Admin.TranlatorPropertyType;
import org.teiid.adminapi.VDB.ConnectionType;
import org.teiid.adminapi.jboss.AdminFactory;
Expand Down Expand Up @@ -401,22 +400,13 @@ public static String getQueryPlan(
return getAdmin().getQueryPlan(sessionId, executionId);
}

@Doc(text = "Get schema for the VDB/model")
@Doc(text = "Get schema for the model")
public static String getSchema(@Doc(text = "vdb name") String vdbName,
@Doc(text = "vdb version") Object vdbVersion,
@Doc(text = "models") String modelName) throws AdminException {
return getAdmin().getSchema(vdbName, vdbVersion!=null?vdbVersion.toString():null, modelName, null, null);
}

@Doc(text = "Get schema for the VDB")
public static String getSchema(@Doc(text = "vdb name") String vdbName,
@Doc(text = "vdb version") Object vdbVersion,
@Doc(text = "models") String modelName,
@Doc(text = "format(XML,DDL)") String format) throws AdminException {
return getAdmin().getSchema(vdbName, vdbVersion != null ? vdbVersion.toString() : null, modelName, null, null,
ExportFormat.valueOf(format));
}

@Doc(text = "Restart the server")
public static void restart(){
getAdmin().restart();
Expand Down
3 changes: 2 additions & 1 deletion api/src/main/java/org/teiid/connector/DataPlugin.java
Expand Up @@ -65,6 +65,7 @@ public static enum Event implements BundleUtil.Event {
TEIID60033,
TEIID60034,
TEIID60035,
TEIID60036
TEIID60036,
TEIID60037
}
}
5 changes: 4 additions & 1 deletion api/src/main/java/org/teiid/metadata/NamespaceContainer.java
Expand Up @@ -98,7 +98,10 @@ public void addNamespace(String prefix, String uri) {
if (this.namespaces == null) {
this.namespaces = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
}
this.namespaces.put(prefix, uri);
String old = this.namespaces.put(prefix, uri);
if (old != null && !old.equals(uri)) {
throw new MetadataException(DataPlugin.Event.TEIID60037, DataPlugin.Util.gs(DataPlugin.Event.TEIID60037, prefix, old, uri));
}
}

public Map<String, String> getNamespaces() {
Expand Down
5 changes: 5 additions & 0 deletions api/src/main/java/org/teiid/metadata/ParseException.java
Expand Up @@ -38,4 +38,9 @@ public ParseException(Event event, String message) {
public ParseException(String message) {
super(message);
}

public ParseException(Event event,
Throwable cause, String message) {
super(event, cause, message);
}
}
4 changes: 3 additions & 1 deletion api/src/main/resources/org/teiid/connector/i18n.properties
Expand Up @@ -64,4 +64,6 @@ TEIID60033={0} type name already exists
TEIID60034=Duplicate Datatype {0}

TEIID60035=The granted mask ''{0}'' conflicts with the already defined mask ''{1}''
TEIID60036=The granted condition ''{0}'' conflicts with the already defined condition ''{1}''
TEIID60036=The granted condition ''{0}'' conflicts with the already defined condition ''{1}''

TEIID60037=The prefix {0} was already associated with {1} and cannot be redefined as {2}
@@ -1,11 +1,3 @@
CREATE FOREIGN TABLE Address (
Address string NOT NULL OPTIONS (NAMEINSOURCE 'address.Address', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
City string NOT NULL OPTIONS (NAMEINSOURCE 'address.City', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
State string NOT NULL OPTIONS (NAMEINSOURCE 'address.State', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
id integer NOT NULL OPTIONS (NAMEINSOURCE 'id', SELECTABLE FALSE, SEARCHABLE 'Searchable', NATIVE_TYPE 'int'),
CONSTRAINT FK_PERSON FOREIGN KEY(id) REFERENCES Person (id) OPTIONS (NAMEINSOURCE 'address')
) OPTIONS (UPDATABLE TRUE);

CREATE FOREIGN TABLE Person (
name string NOT NULL OPTIONS (NAMEINSOURCE 'name', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
id integer NOT NULL OPTIONS (NAMEINSOURCE 'id', SEARCHABLE 'Searchable', NATIVE_TYPE 'int'),
Expand All @@ -19,3 +11,11 @@ CREATE FOREIGN TABLE PhoneNumber (
id integer NOT NULL OPTIONS (NAMEINSOURCE 'id', SELECTABLE FALSE, SEARCHABLE 'Searchable', NATIVE_TYPE 'int'),
CONSTRAINT FK_PERSON FOREIGN KEY(id) REFERENCES Person (id) OPTIONS (NAMEINSOURCE 'phones')
) OPTIONS (UPDATABLE TRUE);

CREATE FOREIGN TABLE Address (
Address string NOT NULL OPTIONS (NAMEINSOURCE 'address.Address', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
City string NOT NULL OPTIONS (NAMEINSOURCE 'address.City', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
State string NOT NULL OPTIONS (NAMEINSOURCE 'address.State', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
id integer NOT NULL OPTIONS (NAMEINSOURCE 'id', SELECTABLE FALSE, SEARCHABLE 'Searchable', NATIVE_TYPE 'int'),
CONSTRAINT FK_PERSON FOREIGN KEY(id) REFERENCES Person (id) OPTIONS (NAMEINSOURCE 'address')
) OPTIONS (UPDATABLE TRUE);
@@ -1,11 +1,3 @@
CREATE FOREIGN TABLE MetaData (
content string OPTIONS (NAMEINSOURCE 'content', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'java.lang.String'),
id integer OPTIONS (NAMEINSOURCE 'id', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'int'),
tradeId long NOT NULL OPTIONS (NAMEINSOURCE 'tradeId', SELECTABLE FALSE, SEARCHABLE 'Searchable', NATIVE_TYPE 'long'),
CONSTRAINT PK_TRADEID PRIMARY KEY(tradeId),
CONSTRAINT FK_TRADE FOREIGN KEY(tradeId) REFERENCES Trade (tradeId) OPTIONS (NAMEINSOURCE 'MetaData')
) OPTIONS (UPDATABLE TRUE);

CREATE FOREIGN TABLE Trade (
TradeObject object OPTIONS (NAMEINSOURCE 'this', SELECTABLE FALSE, UPDATABLE FALSE, SEARCHABLE 'Unsearchable', NATIVE_TYPE 'org.teiid.translator.object.testdata.trades.Trade'),
tradeId long NOT NULL OPTIONS (NAMEINSOURCE 'tradeId', SEARCHABLE 'Searchable', NATIVE_TYPE 'long'),
Expand All @@ -14,4 +6,12 @@ CREATE FOREIGN TABLE Trade (
settled boolean OPTIONS (NAMEINSOURCE 'settled', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'boolean'),
tradeDate date OPTIONS (NAMEINSOURCE 'tradeDate', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'java.util.Date'),
CONSTRAINT PK_TRADEID PRIMARY KEY(tradeId)
) OPTIONS (UPDATABLE TRUE);

CREATE FOREIGN TABLE MetaData (
content string OPTIONS (NAMEINSOURCE 'content', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'java.lang.String'),
id integer OPTIONS (NAMEINSOURCE 'id', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'int'),
tradeId long NOT NULL OPTIONS (NAMEINSOURCE 'tradeId', SELECTABLE FALSE, SEARCHABLE 'Searchable', NATIVE_TYPE 'long'),
CONSTRAINT PK_TRADEID PRIMARY KEY(tradeId),
CONSTRAINT FK_TRADE FOREIGN KEY(tradeId) REFERENCES Trade (tradeId) OPTIONS (NAMEINSOURCE 'MetaData')
) OPTIONS (UPDATABLE TRUE);
@@ -1,17 +1,17 @@
SET NAMESPACE 'http://www.teiid.org/translator/object/2016' AS n0;

CREATE FOREIGN TABLE ST_Trade (
CREATE FOREIGN TABLE Trade (
tradeId long NOT NULL OPTIONS (NAMEINSOURCE 'tradeId', SEARCHABLE 'Searchable', NATIVE_TYPE 'long'),
name string OPTIONS (NAMEINSOURCE 'name', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'java.lang.String'),
settled boolean OPTIONS (NAMEINSOURCE 'settled', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'boolean'),
tradeDate date OPTIONS (NAMEINSOURCE 'tradeDate', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'java.util.Date'),
CONSTRAINT PK_TRADEID PRIMARY KEY(tradeId)
) OPTIONS (UPDATABLE TRUE, "n0:primary_table" 'ObjectSchema.Trade');
) OPTIONS (UPDATABLE TRUE);

CREATE FOREIGN TABLE Trade (
CREATE FOREIGN TABLE ST_Trade (
tradeId long NOT NULL OPTIONS (NAMEINSOURCE 'tradeId', SEARCHABLE 'Searchable', NATIVE_TYPE 'long'),
name string OPTIONS (NAMEINSOURCE 'name', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'java.lang.String'),
settled boolean OPTIONS (NAMEINSOURCE 'settled', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'boolean'),
tradeDate date OPTIONS (NAMEINSOURCE 'tradeDate', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'java.util.Date'),
CONSTRAINT PK_TRADEID PRIMARY KEY(tradeId)
) OPTIONS (UPDATABLE TRUE);
) OPTIONS (UPDATABLE TRUE, "n0:primary_table" 'ObjectSchema.Trade');
@@ -1,11 +1,3 @@
CREATE FOREIGN TABLE MetaData (
content string OPTIONS (NAMEINSOURCE 'content', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'java.lang.String'),
id integer OPTIONS (NAMEINSOURCE 'id', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'int'),
tradeId long NOT NULL OPTIONS (NAMEINSOURCE 'tradeId', SELECTABLE FALSE, SEARCHABLE 'Searchable', NATIVE_TYPE 'long'),
CONSTRAINT PK_TRADEID PRIMARY KEY(tradeId),
CONSTRAINT FK_TRADE FOREIGN KEY(tradeId) REFERENCES Trade (tradeId) OPTIONS (NAMEINSOURCE 'MetaData')
) OPTIONS (UPDATABLE TRUE);

CREATE FOREIGN TABLE Trade (
TradeObject object OPTIONS (NAMEINSOURCE 'this', SELECTABLE FALSE, UPDATABLE FALSE, SEARCHABLE 'Unsearchable', NATIVE_TYPE 'org.teiid.translator.object.testdata.trades.Trade'),
tradeId long NOT NULL OPTIONS (NAMEINSOURCE 'tradeId', SEARCHABLE 'Searchable', NATIVE_TYPE 'long'),
Expand All @@ -14,4 +6,12 @@ CREATE FOREIGN TABLE Trade (
settled boolean OPTIONS (NAMEINSOURCE 'settled', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'boolean'),
tradeDate date OPTIONS (NAMEINSOURCE 'tradeDate', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'java.util.Date'),
CONSTRAINT PK_TRADEID PRIMARY KEY(tradeId)
) OPTIONS (UPDATABLE TRUE);

CREATE FOREIGN TABLE MetaData (
content string OPTIONS (NAMEINSOURCE 'content', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'java.lang.String'),
id integer OPTIONS (NAMEINSOURCE 'id', SEARCHABLE 'Unsearchable', NATIVE_TYPE 'int'),
tradeId long NOT NULL OPTIONS (NAMEINSOURCE 'tradeId', SELECTABLE FALSE, SEARCHABLE 'Searchable', NATIVE_TYPE 'long'),
CONSTRAINT PK_TRADEID PRIMARY KEY(tradeId),
CONSTRAINT FK_TRADE FOREIGN KEY(tradeId) REFERENCES Trade (tradeId) OPTIONS (NAMEINSOURCE 'MetaData')
) OPTIONS (UPDATABLE TRUE);
Expand Up @@ -21,7 +21,7 @@
*/
package org.teiid.translator.mongodb;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.*;

import java.sql.Date;
import java.util.LinkedHashSet;
Expand Down Expand Up @@ -126,7 +126,19 @@ public void testMetadata() throws TranslatorException {

String metadataDDL = DDLStringVisitor.getDDLString(mf.getSchema(), null, null);
String expected = "SET NAMESPACE 'http://www.teiid.org/translator/mongodb/2013' AS teiid_mongo;\n\n" +
"CREATE FOREIGN TABLE child (\n" +
"CREATE FOREIGN TABLE \"table\" (\n" +
"\t\"_id\" integer,\n" +
"\tcol2 double,\n" +
"\tcol3 long,\n" +
"\tcol5 boolean,\n" +
"\tcol6 string,\n" +
"\tcol7 object[] OPTIONS (SEARCHABLE 'Unsearchable'),\n"+
"\tcol8 varbinary OPTIONS (NATIVE_TYPE 'org.bson.types.Binary'),\n"+
"\tCONSTRAINT PK0 PRIMARY KEY(\"_id\"),\n" +
"\tCONSTRAINT FK_col6 FOREIGN KEY(col6) REFERENCES ns \n" +
") OPTIONS (UPDATABLE TRUE);\n" +
"\n" +
"CREATE FOREIGN TABLE child (\n" +
"\tcol1 string,\n" +
"\tcol2 string,\n" +
"\t\"_id\" integer OPTIONS (UPDATABLE FALSE),\n"+
Expand All @@ -147,18 +159,6 @@ public void testMetadata() throws TranslatorException {
"\tcol2 double,\n" +
"\tcol3 long,\n" +
"\tCONSTRAINT PK0 PRIMARY KEY(\"_id\")\n" +
") OPTIONS (UPDATABLE TRUE);\n"+
"\n"+
"CREATE FOREIGN TABLE \"table\" (\n" +
"\t\"_id\" integer,\n" +
"\tcol2 double,\n" +
"\tcol3 long,\n" +
"\tcol5 boolean,\n" +
"\tcol6 string,\n" +
"\tcol7 object[] OPTIONS (SEARCHABLE 'Unsearchable'),\n"+
"\tcol8 varbinary OPTIONS (NATIVE_TYPE 'org.bson.types.Binary'),\n"+
"\tCONSTRAINT PK0 PRIMARY KEY(\"_id\"),\n" +
"\tCONSTRAINT FK_col6 FOREIGN KEY(col6) REFERENCES ns \n" +
") OPTIONS (UPDATABLE TRUE);";
assertEquals(expected, metadataDDL);
}
Expand Down Expand Up @@ -243,6 +243,18 @@ public void testExclusion() throws TranslatorException {

String metadataDDL = DDLStringVisitor.getDDLString(mf.getSchema(), null, null);
String expected = "SET NAMESPACE 'http://www.teiid.org/translator/mongodb/2013' AS teiid_mongo;\n\n" +
"CREATE FOREIGN TABLE \"table\" (\n" +
"\t\"_id\" integer,\n" +
"\tcol2 double,\n" +
"\tcol3 long,\n" +
"\tcol5 boolean,\n" +
"\tcol6 string,\n" +
"\tcol7 object[] OPTIONS (SEARCHABLE 'Unsearchable'),\n"+
"\tcol8 varbinary OPTIONS (NATIVE_TYPE 'org.bson.types.Binary'),\n"+
"\tCONSTRAINT PK0 PRIMARY KEY(\"_id\"),\n" +
"\tCONSTRAINT FK_col6 FOREIGN KEY(col6) REFERENCES ns \n" +
") OPTIONS (UPDATABLE TRUE);\n" +
"\n" +
"CREATE FOREIGN TABLE child (\n" +
"\tcol1 string,\n" +
"\tcol2 string,\n" +
Expand All @@ -257,19 +269,7 @@ public void testExclusion() throws TranslatorException {
"\t\"_id\" integer OPTIONS (UPDATABLE FALSE),\n" +
"\tCONSTRAINT PK0 PRIMARY KEY(\"_id\"),\n" +
"\tFOREIGN KEY(\"_id\") REFERENCES \"table\" \n" +
") OPTIONS (UPDATABLE TRUE, \"teiid_mongo:MERGE\" 'table');\n" +
"\n" +
"CREATE FOREIGN TABLE \"table\" (\n" +
"\t\"_id\" integer,\n" +
"\tcol2 double,\n" +
"\tcol3 long,\n" +
"\tcol5 boolean,\n" +
"\tcol6 string,\n" +
"\tcol7 object[] OPTIONS (SEARCHABLE 'Unsearchable'),\n"+
"\tcol8 varbinary OPTIONS (NATIVE_TYPE 'org.bson.types.Binary'),\n"+
"\tCONSTRAINT PK0 PRIMARY KEY(\"_id\"),\n" +
"\tCONSTRAINT FK_col6 FOREIGN KEY(col6) REFERENCES ns \n" +
") OPTIONS (UPDATABLE TRUE);";
") OPTIONS (UPDATABLE TRUE, \"teiid_mongo:MERGE\" 'table');";
assertEquals(expected, metadataDDL);
}
}
5 changes: 4 additions & 1 deletion engine/src/main/java/org/teiid/query/QueryPlugin.java
Expand Up @@ -655,6 +655,9 @@ public static enum Event implements BundleUtil.Event{
TEIID31253,
TEIID31254,
TEIID31255,
TEIID31256
TEIID31256,
TEIID31257,
TEIID31258,
TEIID31259
}
}
38 changes: 0 additions & 38 deletions engine/src/main/java/org/teiid/query/metadata/DDLProcessor.java

This file was deleted.

0 comments on commit 7ae12cf

Please sign in to comment.