Skip to content

Commit

Permalink
WIP Dealing with DataTypeManager
Browse files Browse the repository at this point in the history
  • Loading branch information
Paul Richardson committed Nov 15, 2012
1 parent f5e35d5 commit f1e41a4
Show file tree
Hide file tree
Showing 30 changed files with 346 additions and 65 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,10 @@
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.runtime.registry.TeiidRuntimeRegistry;
import org.teiid.designer.runtime.version.spi.ITeiidServerVersion;
import org.teiid.designer.runtime.version.spi.TeiidServerVersion;
import org.teiid.designer.type.IDataTypeManagerService;

/**
* The main plugin class to be used in the desktop.
Expand Down Expand Up @@ -333,6 +337,8 @@ public static enum RegistryOption {
// rules.
private static boolean IGNORE_VALIDATION_PREFERNCES_ON_BUILD = false;

private static ITeiidServerVersion teiidServerVersion = null;

/**
* Add all model resource sets known through the EXTERNAL_RESOURCE_SET extension to the specified container
*
Expand Down Expand Up @@ -2062,4 +2068,41 @@ public static interface ILicense {
String PRODUCER_NAME = getProducerName();
String VERSION = getVersion();
}

/**
* Get the targeted teiid server version
*
* @return teiid server version
*/
public static ITeiidServerVersion getTeiidServerVersion() {
if (teiidServerVersion == null) {
return TeiidServerVersion.DEFAULT_TEIID_8_SERVER;
}

return teiidServerVersion;
}

/**
* Set the version of the targeted teiid server
*
* @param serverVersion
*/
public static void setTeiidServerVersion(ITeiidServerVersion serverVersion) {
teiidServerVersion = serverVersion;
}

/**
* Get the teiid data type manager service for the
* targetted teiid server. The targeted teiid server
* can be changed using {@link #setTeiidServerVersion(ITeiidServerVersion)}
*
* @return
*/
public static IDataTypeManagerService getTeiidDataTypeManagerService() {
try {
return TeiidRuntimeRegistry.getInstance().getDataTypeManagerService(getTeiidServerVersion());
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -689,7 +689,7 @@ public IStatus restoreState() {
boolean previewServer = false;

// version attribute
ITeiidServerVersion teiidServerVersion = new TeiidServerVersion(ITeiidServerVersion.DEFAULT_TEIID_8_SERVER);
ITeiidServerVersion teiidServerVersion = TeiidServerVersion.DEFAULT_TEIID_8_SERVER;
Node versionNode = serverAttributeMap.getNamedItem(SERVER_VERSION);
if (versionNode != null)
teiidServerVersion = new TeiidServerVersion(versionNode.getNodeValue());
Expand Down Expand Up @@ -890,6 +890,8 @@ public void setDefaultServer( ITeiidServer teiidServer ) {

ITeiidServer oldDefaultServer = this.defaultServer;
this.defaultServer = teiidServer;

ModelerCore.setTeiidServerVersion(defaultServer.getServerVersion());

if (notify) {
notifyListeners(ExecutionConfigurationEvent.createSetDefaultServerEvent(oldDefaultServer, this.defaultServer));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ public static String getJdbcPort(JBoss7Server jboss7Server) {
*/
public static ITeiidServerVersion getTeiidRuntimeVersion(JBoss7Server jboss7Server) {
if (! serverStarted(jboss7Server))
return new TeiidServerVersion(ITeiidServerVersion.DEFAULT_TEIID_8_SERVER);
return TeiidServerVersion.DEFAULT_TEIID_8_SERVER;

ModelNode request = new ModelNode();
request.get(OP).set(READ_ATTRIBUTE_OPERATION);
Expand All @@ -164,7 +164,7 @@ public static ITeiidServerVersion getTeiidRuntimeVersion(JBoss7Server jboss7Serv
return new TeiidServerVersion(result.asString());
} catch (Exception ex) {
DqpPlugin.Util.log(IStatus.ERROR, ex, "Failed to get teiid jdbc port, defaulting to " + ITeiidJdbcInfo.DEFAULT_PORT); //$NON-NLS-1$
return new TeiidServerVersion(ITeiidServerVersion.DEFAULT_TEIID_8_SERVER);
return new TeiidServerVersion(ITeiidServerVersion.DEFAULT_TEIID_8_SERVER_ID);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,8 @@
package org.teiid.designer.metamodels.relational.util;

import java.sql.Types;

import org.eclipse.emf.ecore.EObject;
import org.teiid.core.designer.ModelerCoreException;
import org.teiid.core.types.DataTypeManager;
import org.teiid.designer.metadata.runtime.api.DataType;
import org.teiid.designer.metamodels.relational.SearchabilityType;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,11 @@
import java.sql.Types;
import java.util.HashMap;
import java.util.Map;

import org.eclipse.core.runtime.IStatus;
import org.eclipse.emf.ecore.EObject;
import org.teiid.core.designer.ModelerCoreException;
import org.teiid.core.designer.ModelerCoreRuntimeException;
import org.teiid.core.designer.util.CoreArgCheck;
import org.teiid.core.types.DataTypeManager;
import org.teiid.core.types.JDBCSQLTypeInfo;
import org.teiid.designer.core.ModelerCore;
import org.teiid.designer.core.metamodel.aspect.sql.SqlAspect;
import org.teiid.designer.core.metamodel.aspect.sql.SqlDatatypeAspect;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ Require-Bundle: org.eclipse.xsd;bundle-version="[2.8.0,3.0.0)",
org.eclipse.emf.mapping;bundle-version="[2.7.0,3.0.0)",
org.teiid.designer.metamodels.core;bundle-version="[8.0.0,9.0.0)",
org.eclipse.core.resources;bundle-version="[3.8.0,4.0.0)",
org.teiid.designer.legacy;bundle-version="[8.0.0,9.0.0)"
org.teiid.designer.legacy;bundle-version="[8.0.0,9.0.0)",
org.teiid.designer.spi;bundle-version="8.0.0"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.emf.common.notify.Notification;
Expand All @@ -33,10 +32,6 @@
import org.eclipse.xsd.XSDVariety;
import org.eclipse.xsd.impl.XSDSchemaImpl;
import org.eclipse.xsd.util.XSDConstants;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.teiid.core.types.DataTypeManager;
import org.teiid.core.designer.id.IDGenerator;
import org.teiid.core.designer.id.InvalidIDException;
import org.teiid.core.designer.id.UUID;
Expand All @@ -47,12 +42,16 @@
import org.teiid.designer.core.metamodel.aspect.AbstractMetamodelAspect;
import org.teiid.designer.core.metamodel.aspect.MetamodelEntity;
import org.teiid.designer.core.metamodel.aspect.sql.SqlDatatypeAspect;
import org.teiid.designer.metadata.runtime.MetadataConstants;
import org.teiid.designer.core.types.DatatypeConstants;
import org.teiid.designer.core.types.EnterpriseDatatypeInfo;
import org.teiid.designer.metadata.runtime.MetadataConstants;
import org.teiid.designer.metamodels.xsd.XsdConstants;
import org.teiid.designer.metamodels.xsd.XsdPlugin;
import org.teiid.designer.metamodels.xsd.XsdUtil;
import org.teiid.designer.type.IDataTypeManagerService;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;


/**
Expand Down Expand Up @@ -301,9 +300,11 @@ public String getJavaClassName( EObject eObject ) {
// Retrieve the runtime type name from the appInfo
String runtimeTypeName = this.getRuntimeTypeName(entity);
if (runtimeTypeName != null) {
Class javaClass = DataTypeManager.getDataTypeClass(runtimeTypeName);
if (javaClass != null) {
return javaClass.getName();

IDataTypeManagerService service = ModelerCore.getTeiidDataTypeManagerService();
String javaClassName = service.getDataTypeClass(runtimeTypeName);
if (javaClassName != null) {
return javaClassName;
}
}
// Return Object as the default
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ public static int getTextLimit( String theTextType ) {
*/
public static String getType( Constant theConstant ) {
Class typeClass = theConstant.getType();
return DataTypeManager.getDataTypeName(typeClass);
return service.getDataTypeName(typeClass);
}

/**
Expand Down
3 changes: 2 additions & 1 deletion plugins/org.teiid.designer.spi/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,6 @@ Export-Package: org.teiid.datatools.connectivity.spi,
org.teiid.designer.runtime.connection.spi,
org.teiid.designer.runtime.registry,
org.teiid.designer.runtime.spi,
org.teiid.designer.runtime.version.spi
org.teiid.designer.runtime.version.spi,
org.teiid.designer.type
Bundle-Activator: org.teiid.designer.DesignerSPIPlugin
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@ invalidTargetTypeForGetServerMethod = Invalid target type {0} for execution even
invalidTargetTypeForGetDataSourceMethod = Invalid target type {0} for execution event. Method getDataSource() expected type {1}.
invalidTargetTypeForGetTranslatorMethod = Invalid target type {0} for execution event. Method getTranslator() expected type {1}.
invalidTargetTypeForGetUpdatedServerMethod = Invalid target type {0} for execution event. Method getUpdatedServer() expected type {1}.

TeiidRuntimeRegistry.NoExecutionAdminFactory = No ExecutionAdmin factory registered for teiid server version {1}.
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
import org.teiid.designer.DesignerSPIPlugin;
import org.teiid.designer.runtime.spi.IExecutionAdmin;
import org.teiid.designer.runtime.spi.IExecutionAdminFactory;
import org.teiid.designer.runtime.spi.ITeiidServer;
import org.teiid.designer.runtime.version.spi.ITeiidServerVersion;
import org.teiid.designer.runtime.version.spi.TeiidServerVersion;
import org.teiid.designer.type.IDataTypeManagerService;

/**
* @since 8.0
Expand Down Expand Up @@ -93,6 +95,23 @@ public IExecutionAdmin getExecutionAdmin(ITeiidServer teiidServer) throws Except

return factory.createExecutionAdmin(teiidServer);
}

/**
* Get the teiid data type manager service
*
* @param teiidServerVersion
*
* @return instance of {@link IDataTypeManagerService}
* @throws Exception
*/
public IDataTypeManagerService getDataTypeManagerService(ITeiidServerVersion teiidServerVersion) throws Exception {
IExecutionAdminFactory factory = search(teiidServerVersion);
if (factory == null)
throw new Exception(DesignerSPIPlugin.Util.getString(
getClass().getSimpleName() + "NoExecutionAdminFactory", teiidServerVersion)); //$NON-NLS-1$

return factory.getDataTypeManagerService();
}

/**
* @param serverVersion
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
*/
package org.teiid.designer.runtime.spi;

import org.teiid.designer.type.IDataTypeManagerService;

/**
* Factory for the creation of implementations of {@link IExecutionAdmin}
*/
Expand All @@ -22,4 +24,11 @@ public interface IExecutionAdminFactory {
* @throws Exception
*/
IExecutionAdmin createExecutionAdmin(ITeiidServer teiidServer) throws Exception;

/**
* Get the teiid data type manager service
*
* @return instance of {@link IDataTypeManagerService}
*/
IDataTypeManagerService getDataTypeManagerService();
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public interface ITeiidServerVersion {
/**
* Default teiid 8 server version
*/
public static final String DEFAULT_TEIID_8_SERVER = EIGHT + DOT + ZERO + DOT + ZERO;
public static final String DEFAULT_TEIID_8_SERVER_ID = EIGHT + DOT + ZERO + DOT + ZERO;

/**
* @return the major version segment
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@
*/
public class TeiidServerVersion implements ITeiidServerVersion {

/**
* The default teiid 8 server version
*/
public static final ITeiidServerVersion DEFAULT_TEIID_8_SERVER = new TeiidServerVersion(DEFAULT_TEIID_8_SERVER_ID);

private String versionString = ZERO + DOT + ZERO + DOT + ZERO;

private final String majorVersion;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
package org.teiid.designer.type;

import java.util.Set;
/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/

/**
*
*/
public interface IDataTypeManagerService {

/**
* Enumerator of default data types supported by the
* teiid DataTypeManager
*/
enum DefaultDataType {
STRING,
BOOLEAN,
BYTE,
SHORT,
CHAR,
INTEGER,
LONG,
BIG_INTEGER,
FLOAT,
DOUBLE,
BIG_DECIMAL,
DATE,
TIME,
TIMESTAMP,
OBJECT,
NULL,
BLOB,
CLOB,
XML,
VARBINARY
}

/**
* Get the name of the data type class.
*
* @param name
* Data type name
*
* @return Data type class name
*/
String getDataTypeClass(String name);

/**
* Get the runtime type for the given class
*
* @param typeClass
*
* @return runtime type
*/
String getDataTypeName(Class<?> typeClass);

/**
* Get a set of all data type names.
*
* @return Set of data type names (String)
*/
Set<String> getAllDataTypeNames();

/**
* Get the default data type represented by the
* given {@link DefaultDataType} enumerator
*
* @param defaultDataType
*
* @return name of data type or will throw a runtime exception
* if there is no data type.
*/
String getDefaultDataType(DefaultDataType defaultDataType);
}
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.8.0,4.0.0)",
org.teiid.designer.datatools;bundle-version="[8.0.0,9.0.0)",
org.teiid.datatools.connectivity.ui;bundle-version="[8.0.0,9.0.0)",
org.teiid.designer.datatools.ui;bundle-version="[8.0.0,9.0.0)",
org.eclipse.datatools.connectivity.ui;bundle-version="[1.2.3,2.0.0)"
org.eclipse.datatools.connectivity.ui;bundle-version="[1.2.3,2.0.0)",
org.teiid.designer.spi;bundle-version="8.0.0"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: org.apache.xerces.parsers

0 comments on commit f1e41a4

Please sign in to comment.