Skip to content

Commit

Permalink
TEIIDDES-1518: Remove all remaining dependencies on org.teiid8 plugin
Browse files Browse the repository at this point in the history
* Converts all syntax, visitor, validator and parser dependencies
  originating from the teiid 8 plugin to interfaces found in the spi plugin.

* Implementations of all interfaces are added to teiid 8 plugin as
  wrappers around the actual teiid 8 classes, thereby decoupling the
  teiid 8 client libraries from the rest of the application.

* New services and factories
 * QueryService provides:
   * QueryFactory - creation of sql syntax objects
   * QueryParser
   * QueryResolver
   * Passthrough to static methods, such as Symbol.getName()
   * ElementCollectorVisitor
   * FunctionCollectorVisitor
   * GroupCollectorVisitor
   * GroupsUsedByElementsVisitor
   * PredicaterCollectorVisitor
   * ReferenceCollectorVisitor
   * ResolverVisitor
   * ValueIteratorProviderCollectorVisitor
   * SQLStringVisitor
   * CallbackSQLStringVisitor - allows extensions to the
     SQLStringVisitor
   * MappingDocumentFactory - for writing to XML formatter

* QueryMetadataInterface
 * Copy of the teiid version but heavily cutdown since the rest
   of the methods are unused. May be uncommented if these
   methods prove necessary.
  • Loading branch information
Paul Richardson committed Dec 7, 2012
1 parent 469a193 commit fee4362
Show file tree
Hide file tree
Showing 349 changed files with 16,768 additions and 5,914 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -94,11 +94,11 @@
import org.teiid.designer.core.workspace.ModelWorkspaceItem;
import org.teiid.designer.core.workspace.ModelWorkspaceManager;
import org.teiid.designer.core.workspace.ModelWorkspaceManagerSaveParticipant;
import org.teiid.designer.query.IQueryService;
import org.teiid.designer.runtime.registry.TeiidRuntimeRegistry;
import org.teiid.designer.runtime.spi.ITeiidServerVersionListener;
import org.teiid.designer.runtime.version.spi.ITeiidServerVersion;
import org.teiid.designer.runtime.version.spi.TeiidServerVersion;
import org.teiid.designer.sql.IQueryService;
import org.teiid.designer.type.IDataTypeManagerService;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

import java.util.Collection;
import org.eclipse.core.runtime.IStatus;
import org.teiid.query.sql.lang.Command;
import org.teiid.designer.query.sql.lang.ICommand;

/**
* ValidationResult, utility containign the status of validating sql.
Expand Down Expand Up @@ -41,7 +41,7 @@ public interface QueryValidationResult {
* SQL String was not parsable.
* @return the SQL command
*/
Command getCommand();
ICommand getCommand();

/**
* Get the status List indicating the success/ failure of validation
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
package org.teiid.designer.core.query;

import org.eclipse.emf.ecore.EObject;
import org.teiid.query.metadata.QueryMetadataInterface;
import org.teiid.designer.query.metadata.IQueryMetadataInterface;


/**
Expand Down Expand Up @@ -52,7 +52,7 @@ public enum ElementSymbolOptimization {
* The QueryMetadataInterface used to validate the sql.
* @return QueryMetadataInterface
*/
QueryMetadataInterface getQueryMetadata();
IQueryMetadataInterface getQueryMetadata();

/**
* Returns whether or not a query's mapping root is valid. It may be stale. This is to prevent unnecessary validation
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,47 +9,46 @@

import java.util.ArrayList;
import java.util.List;

import org.teiid.query.sql.lang.Query;
import org.teiid.query.sql.lang.QueryCommand;
import org.teiid.query.sql.lang.SetQuery;
import org.teiid.designer.query.sql.lang.IQuery;
import org.teiid.designer.query.sql.lang.IQueryCommand;
import org.teiid.designer.query.sql.lang.ISetQuery;

/**
* @since 8.0
*/
public class SetQueryUtil {

public static int setQueryAtIndex(SetQuery query, int index, QueryCommand newQuery) {
public static int setQueryAtIndex(ISetQuery query, int index, IQueryCommand newQuery) {
if (index < 0) {
return index;
}
if (query.getLeftQuery() instanceof SetQuery) {
index = setQueryAtIndex((SetQuery)query.getLeftQuery(), index, newQuery);
if (query.getLeftQuery() instanceof ISetQuery) {
index = setQueryAtIndex((ISetQuery)query.getLeftQuery(), index, newQuery);
} else if (index-- == 0) {
query.setLeftQuery(newQuery);
return -1;
}
if (query.getRightQuery() instanceof SetQuery) {
index = setQueryAtIndex((SetQuery)query.getRightQuery(), index, newQuery);
if (query.getRightQuery() instanceof ISetQuery) {
index = setQueryAtIndex((ISetQuery)query.getRightQuery(), index, newQuery);
} else if (index-- == 0){
query.setRightQuery(newQuery);
return -1;
}
return index;
}

public static List<Query> getQueryList(SetQuery query) {
ArrayList<Query> queries = new ArrayList<Query>();
public static List<IQuery> getQueryList(ISetQuery query) {
ArrayList<IQuery> queries = new ArrayList<IQuery>();
addToQueryList(queries, query);
return queries;
}

static void addToQueryList(List<Query> queries, QueryCommand command) {
if (command instanceof SetQuery) {
addToQueryList(queries, ((SetQuery)command).getLeftQuery());
addToQueryList(queries, ((SetQuery)command).getRightQuery());
static void addToQueryList(List<IQuery> queries, IQueryCommand command) {
if (command instanceof ISetQuery) {
addToQueryList(queries, ((ISetQuery)command).getLeftQuery());
addToQueryList(queries, ((ISetQuery)command).getRightQuery());
} else {
queries.add((Query)command);
queries.add((IQuery)command);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,8 @@ public String getText(Object obj) {
return emfLabelProvider.getText( obj );

//=============================================================
//// if ( obj instanceof GroupSymbol ) {
//// GroupSymbol symbol = (GroupSymbol) obj;
//// if ( obj instanceof IGroupSymbol ) {
//// IGroupSymbol symbol = (IGroupSymbol) obj;
////
//// String result = null;
//// // if symbol has a non-null definition, then it is an alias:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,15 @@


import org.eclipse.emf.ecore.EObject;

import org.teiid.designer.mapping.ui.PluginConstants;
import org.teiid.designer.mapping.ui.UiConstants;
import org.teiid.designer.metadata.runtime.MetadataRecord;
import org.teiid.designer.metamodels.transformation.MappingClass;
import org.teiid.designer.metamodels.transformation.MappingClassColumn;
import org.teiid.designer.metamodels.transformation.MappingClassObject;
import org.teiid.designer.query.sql.lang.ILanguageObject;
import org.teiid.designer.query.sql.symbol.IElementSymbol;
import org.teiid.designer.transformation.util.TransformationHelper;
import org.teiid.query.sql.LanguageObject;
import org.teiid.query.sql.symbol.ElementSymbol;
import org.teiid.query.ui.builder.util.CriteriaStrategy;


Expand Down Expand Up @@ -50,13 +49,13 @@ public ChoiceCriteriaStrategy() {
* @see org.teiid.query.ui.builder.util.ICriteriaStrategy#getNode(org.teiid.query.sql.LanguageObject)
*/
@Override
public Object getNode( LanguageObject theLangObj ) {
public Object getNode( ILanguageObject theLangObj ) {
Object result = null;

if (isValid(theLangObj)) {

if (theLangObj instanceof ElementSymbol) {
Object obj = ((ElementSymbol)theLangObj).getMetadataID();
if (theLangObj instanceof IElementSymbol) {
Object obj = ((IElementSymbol)theLangObj).getMetadataID();

if (obj != null) {
if (obj instanceof MetadataRecord) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.teiid.api.exception.query.QueryParserException;
import org.teiid.designer.core.ModelerCore;
import org.teiid.designer.mapping.choice.IChoiceObject;
import org.teiid.designer.mapping.factory.IMappableTree;
import org.teiid.designer.mapping.factory.TreeMappingAdapter;
Expand All @@ -66,6 +66,13 @@
import org.teiid.designer.mapping.ui.choice.actions.LaunchCriteriaBuilder;
import org.teiid.designer.metamodels.transformation.MappingClass;
import org.teiid.designer.metamodels.transformation.SqlTransformationMappingRoot;
import org.teiid.designer.query.IQueryParser;
import org.teiid.designer.query.IQueryService;
import org.teiid.designer.query.metadata.IQueryMetadataInterface;
import org.teiid.designer.query.sql.IResolverVisitor;
import org.teiid.designer.query.sql.ISQLStringVisitor;
import org.teiid.designer.query.sql.lang.ICriteria;
import org.teiid.designer.query.sql.lang.ILanguageObject;
import org.teiid.designer.transformation.ui.builder.CriteriaBuilder;
import org.teiid.designer.transformation.util.TransformationHelper;
import org.teiid.designer.transformation.validation.TransformationValidator;
Expand All @@ -75,12 +82,6 @@
import org.teiid.designer.ui.explorer.ModelExplorerLabelProvider;
import org.teiid.designer.ui.viewsupport.ModelObjectUtilities;
import org.teiid.designer.ui.viewsupport.ModelUtilities;
import org.teiid.query.metadata.QueryMetadataInterface;
import org.teiid.query.parser.QueryParser;
import org.teiid.query.resolver.util.ResolverVisitor;
import org.teiid.query.sql.LanguageObject;
import org.teiid.query.sql.lang.Criteria;
import org.teiid.query.sql.visitor.SQLStringVisitor;
import org.teiid.query.ui.builder.util.ElementViewerFactory;


Expand Down Expand Up @@ -915,8 +916,11 @@ public void launchCriteriaBuilder() {
if (status == Window.OK) {

// retrieve the new sql from the criteria builder
LanguageObject newCriteria = builder.getLanguageObject();
final String sqlCriteria = SQLStringVisitor.getSQLString(newCriteria);
ILanguageObject newCriteria = builder.getLanguageObject();

IQueryService queryService = ModelerCore.getTeiidQueryService();
ISQLStringVisitor visitor = queryService.getSQLStringVisitor();
final String sqlCriteria = visitor.getSQLString(newCriteria);
// Recreate the query object so that the references within the new criteria (that the user entered in the criteria
// builder dialog) get resolved. Can't just persist the command since the command is created as a result of the
// validation process, not the other way around.
Expand Down Expand Up @@ -967,25 +971,27 @@ public void setMappingAdapters( TreeMappingAdapter adapter,
}
}

private Criteria getCriteria( final MappingClass mappingClass,
private ICriteria getCriteria( final MappingClass mappingClass,
final String theCriteria ) {

// validate/resolve to make sure LanguageObjects have metadata IDs.
SqlTransformationMappingRoot mappingRoot = (SqlTransformationMappingRoot)TransformationHelper.getTransformationMappingRoot(mappingClass);
TransformationValidator validator = new TransformationValidator(mappingRoot, false);

QueryParser parser = new QueryParser();
Criteria crit = null;
IQueryService queryService = ModelerCore.getTeiidQueryService();
IQueryParser parser = queryService.getQueryParser();
ICriteria crit = null;
try {
crit = parser.parseCriteria(theCriteria);
} catch (QueryParserException err) {
} catch (Exception err) {
// ignore
}

QueryMetadataInterface metadata = validator.getQueryMetadata();
IQueryMetadataInterface metadata = validator.getQueryMetadata();

try {
ResolverVisitor.resolveLanguageObject(crit, metadata);
IResolverVisitor resolverVisitor = queryService.getResolverVisitor();
resolverVisitor.resolveLanguageObject(crit, metadata);
} catch (Exception err) {
// ignore
}
Expand Down Expand Up @@ -1034,7 +1040,7 @@ public void clearCriteria() {
}

public void updateCriteriaForSelectedRow( final String sCriteria,
final LanguageObject criteria ) {
final ILanguageObject criteria ) {

int iSelectedIndex = tvOptionTableViewer.getTable().getSelectionIndex();
if (iSelectedIndex < 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,8 +121,8 @@ public String getText(Object obj) {
return emfLabelProvider.getText( obj );

//=============================================================
//// if ( obj instanceof GroupSymbol ) {
//// GroupSymbol symbol = (GroupSymbol) obj;
//// if ( obj instanceof IGroupSymbol ) {
//// IGroupSymbol symbol = (IGroupSymbol) obj;
////
//// String result = null;
//// // if symbol has a non-null definition, then it is an alias:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,13 @@


import org.eclipse.emf.ecore.EObject;

import org.teiid.designer.mapping.ui.PluginConstants;
import org.teiid.designer.mapping.ui.UiConstants;
import org.teiid.designer.metadata.runtime.MetadataRecord;
import org.teiid.designer.metamodels.transformation.MappingClassColumn;
import org.teiid.designer.query.sql.lang.ILanguageObject;
import org.teiid.designer.query.sql.symbol.IElementSymbol;
import org.teiid.designer.transformation.util.TransformationHelper;
import org.teiid.query.sql.LanguageObject;
import org.teiid.query.sql.symbol.ElementSymbol;
import org.teiid.query.ui.builder.util.CriteriaStrategy;


Expand Down Expand Up @@ -48,13 +47,13 @@ public RecursionCriteriaStrategy() {
* @see org.teiid.query.ui.builder.util.ICriteriaStrategy#getNode(org.teiid.query.sql.LanguageObject)
*/
@Override
public Object getNode( LanguageObject theLangObj ) {
public Object getNode( ILanguageObject theLangObj ) {
Object result = null;

if (isValid(theLangObj)) {

if (theLangObj instanceof ElementSymbol) {
Object obj = ((ElementSymbol)theLangObj).getMetadataID();
if (theLangObj instanceof IElementSymbol) {
Object obj = ((IElementSymbol)theLangObj).getMetadataID();

if (obj != null) {
if (obj instanceof MetadataRecord) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,15 @@
import org.teiid.designer.mapping.ui.recursion.actions.ClearCriteria;
import org.teiid.designer.mapping.ui.recursion.actions.LaunchCriteriaBuilder;
import org.teiid.designer.metamodels.transformation.MappingClass;
import org.teiid.designer.query.IQueryService;
import org.teiid.designer.query.sql.ISQLStringVisitor;
import org.teiid.designer.query.sql.lang.ILanguageObject;
import org.teiid.designer.query.sql.lang.IQuery;
import org.teiid.designer.transformation.ui.builder.CriteriaBuilder;
import org.teiid.designer.transformation.validation.SqlTransformationResult;
import org.teiid.designer.transformation.validation.TransformationValidator;
import org.teiid.designer.ui.common.util.WidgetFactory;
import org.teiid.designer.ui.viewsupport.ModelObjectUtilities;
import org.teiid.query.sql.LanguageObject;
import org.teiid.query.sql.lang.Query;
import org.teiid.query.sql.visitor.SQLStringVisitor;
import org.teiid.query.ui.builder.util.ElementViewerFactory;


Expand Down Expand Up @@ -519,9 +520,10 @@ public void launchCriteriaBuilder() {
if (status == Window.OK) {

// retrieve the new sql from the criteria builder
LanguageObject newCriteria = builder.getLanguageObject();

String sCriteriaString = SQLStringVisitor.getSQLString(newCriteria);
ILanguageObject newCriteria = builder.getLanguageObject();
IQueryService queryService = ModelerCore.getTeiidQueryService();
ISQLStringVisitor visitor = queryService.getSQLStringVisitor();
String sCriteriaString = visitor.getSQLString(newCriteria);
// this: updateCriteriaForSelectedRow( criteriaString );
docRecursionConditionCriteria.set(sCriteriaString);

Expand All @@ -533,10 +535,10 @@ public void launchCriteriaBuilder() {
setButtonStates();
}

private Query getCommand( String sSql ) {
private IQuery getCommand( String sSql ) {
String sCommand = DEFAULT_SELECT + sSql;
SqlTransformationResult result = TransformationValidator.parseSQL(sCommand);
return (Query)result.getCommand();
return (IQuery)result.getCommand();
}

private CriteriaBuilder getCriteriaBuilder() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import org.teiid.designer.metadata.runtime.api.DataType;
import org.teiid.designer.metamodels.relational.RelationalPlugin;
import org.teiid.designer.metamodels.relational.SearchabilityType;
import org.teiid.designer.sql.IQueryService;
import org.teiid.designer.query.IQueryService;


/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
package org.teiid.designer.modelgenerator.salesforce.util;

import org.teiid.designer.core.ModelerCore;
import org.teiid.designer.sql.IQueryService;
import org.teiid.designer.query.IQueryService;

/**
* @since 8.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,14 @@
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.teiid.core.designer.util.CoreArgCheck;
import org.teiid.designer.core.ModelerCore;
import org.teiid.designer.core.validation.rules.StringNameValidator;
import org.teiid.designer.metamodels.relational.aspects.validation.RelationalStringNameValidator;
import org.teiid.designer.modelgenerator.wsdl.ui.Messages;
import org.teiid.designer.modelgenerator.wsdl.ui.ModelGeneratorWsdlUiConstants;
import org.teiid.query.sql.symbol.ElementSymbol;
import org.teiid.designer.query.IQueryFactory;
import org.teiid.designer.query.IQueryService;
import org.teiid.designer.query.sql.symbol.IElementSymbol;


/**
Expand All @@ -26,7 +29,7 @@ public class AttributeInfo implements ModelGeneratorWsdlUiConstants {
/**
* The unique column name (never <code>null</code> or empty).
*/
private ElementSymbol nameSymbol;
private IElementSymbol nameSymbol;

/**
* The unique alias name (never <code>null</code> or empty).
Expand Down Expand Up @@ -70,7 +73,9 @@ public AttributeInfo(Object xmlElement, String name, ColumnInfo columnInfo) {
* problems for an element symbol so these are replaced these with '_'.
*/
private void initNameSymbol(final String name) {
nameSymbol = new ElementSymbol(name.replaceAll("\\.", "_")); //$NON-NLS-1$//$NON-NLS-2$
IQueryService service = ModelerCore.getTeiidQueryService();
IQueryFactory factory = service.createQueryFactory();
nameSymbol = factory.createElementSymbol(name.replaceAll("\\.", "_")); //$NON-NLS-1$//$NON-NLS-2$
}

/**
Expand Down

0 comments on commit fee4362

Please sign in to comment.