net.sf.farrago.namespace.mdr
Class MedMdrDataServer

java.lang.Object
  extended by net.sf.farrago.plugin.FarragoAbstractPluginBase
      extended by net.sf.farrago.namespace.impl.MedAbstractBase
          extended by net.sf.farrago.namespace.impl.MedAbstractDataServer
              extended by net.sf.farrago.namespace.mdr.MedMdrDataServer
All Implemented Interfaces:
FarragoMedDataServer, FarragoAllocation, ClosableAllocation

public class MedMdrDataServer
extends MedAbstractDataServer

MedMdrDataServer implements the FarragoMedDataServer interface for MDR data.

Version:
$Id: //open/dev/farrago/src/net/sf/farrago/namespace/mdr/MedMdrDataServer.java#18 $
Author:
John V. Sichi

Field Summary
(package private)  RefPackage extentPackage
           
(package private)  boolean foreignRepository
           
static String PROP_CLASS_NAME
           
static String PROP_EXTENT_NAME
           
static String PROP_ROOT_PACKAGE_NAME
           
static String PROP_SCHEMA_NAME
           
static String PROP_STORAGE_FACTORY_CLASS
           
(package private)  FarragoRepos repos
           
(package private)  MDRepository repository
           
(package private)  RefPackage rootPackage
           
(package private)  String schemaName
           
 
Fields inherited from class net.sf.farrago.plugin.FarragoAbstractPluginBase
BOOLEAN_CHOICES_DEFAULT_FALSE, BOOLEAN_CHOICES_DEFAULT_TRUE, EMPTY_DRIVER_PROPERTIES
 
Fields inherited from interface net.sf.farrago.namespace.FarragoMedDataServer
PROP_SERVER_NAME, PROP_SERVER_TYPE, PROP_SERVER_VERSION
 
Constructor Summary
MedMdrDataServer(String serverMofId, Properties props, FarragoRepos repos)
           
 
Method Summary
 void closeAllocation()
          Closes this object.
(package private)  Expression generateRuntimeSupportCall(Expression arg)
           
(package private)  MedMdrNameDirectory getExtentNameDirectory()
           
 RefPackage getExtentPackage()
           
private  MedMdrNameDirectory getMdrNameDirectory()
           
 EnkiMDRepository getMdrRepository()
           
 FarragoMedNameDirectory getNameDirectory()
          Gets a FarragoMedNameDirectory corresponding to this server.
private  String getNonStorageProperty(Properties props, String propName)
           
 RefPackage getRootPackage()
           
 Object getRuntimeSupport(Object param)
          Gets an object needed for runtime support.
private  void initAsCatalogServer()
           
private  void initAsForeignServer(String storageFactoryClassName, String extentName, Properties storageProps)
           
(package private)  void initialize()
           
 FarragoMedColumnSet newColumnSet(String[] localName, Properties tableProps, FarragoTypeFactory typeFactory, RelDataType rowType, Map<String,Properties> columnPropMap)
          Creates an instance of a FarragoMedColumnSet corresponding to row data identified by properties rather than container name.
 void registerRules(RelOptPlanner planner)
          Gives this wrapper a chance to register any special optimization rules.
private  void setRootPackage(String rootPackageName)
           
 
Methods inherited from class net.sf.farrago.namespace.impl.MedAbstractDataServer
getLoopbackDataSource, getProperties, getServerMofId, registerRelMetadataProviders, releaseResources, setLoopbackDataSource
 
Methods inherited from class net.sf.farrago.plugin.FarragoAbstractPluginBase
getBooleanProperty, getByteProperty, getDoubleProperty, getFloatProperty, getIntProperty, getLongProperty, getShortProperty, requireProperty
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PROP_STORAGE_FACTORY_CLASS

public static final String PROP_STORAGE_FACTORY_CLASS
See Also:
Constant Field Values

PROP_EXTENT_NAME

public static final String PROP_EXTENT_NAME
See Also:
Constant Field Values

PROP_CLASS_NAME

public static final String PROP_CLASS_NAME
See Also:
Constant Field Values

PROP_ROOT_PACKAGE_NAME

public static final String PROP_ROOT_PACKAGE_NAME
See Also:
Constant Field Values

PROP_SCHEMA_NAME

public static final String PROP_SCHEMA_NAME
See Also:
Constant Field Values

repos

FarragoRepos repos

repository

MDRepository repository

extentPackage

RefPackage extentPackage

rootPackage

RefPackage rootPackage

foreignRepository

boolean foreignRepository

schemaName

String schemaName
Constructor Detail

MedMdrDataServer

MedMdrDataServer(String serverMofId,
                 Properties props,
                 FarragoRepos repos)
Method Detail

getRootPackage

public RefPackage getRootPackage()
Returns:
the root package

getExtentPackage

public RefPackage getExtentPackage()
Returns:
the extent package

getMdrRepository

public EnkiMDRepository getMdrRepository()
Returns:
the MDR repository instance

initialize

void initialize()

setRootPackage

private void setRootPackage(String rootPackageName)

initAsForeignServer

private void initAsForeignServer(String storageFactoryClassName,
                                 String extentName,
                                 Properties storageProps)

initAsCatalogServer

private void initAsCatalogServer()

getNonStorageProperty

private String getNonStorageProperty(Properties props,
                                     String propName)

getMdrNameDirectory

private MedMdrNameDirectory getMdrNameDirectory()

getNameDirectory

public FarragoMedNameDirectory getNameDirectory()
                                         throws SQLException
Description copied from interface: FarragoMedDataServer
Gets a FarragoMedNameDirectory corresponding to this server.

Specified by:
getNameDirectory in interface FarragoMedDataServer
Overrides:
getNameDirectory in class MedAbstractDataServer
Returns:
directory, or null if this server does not have the required metadata capability
Throws:
SQLException - if directory access is unsuccessful (but not if directory access is unsupported)

getExtentNameDirectory

MedMdrNameDirectory getExtentNameDirectory()

newColumnSet

public FarragoMedColumnSet newColumnSet(String[] localName,
                                        Properties tableProps,
                                        FarragoTypeFactory typeFactory,
                                        RelDataType rowType,
                                        Map<String,Properties> columnPropMap)
                                 throws SQLException
Description copied from interface: FarragoMedDataServer
Creates an instance of a FarragoMedColumnSet corresponding to row data identified by properties rather than container name. This supports the SQL/MED CREATE FOREIGN TABLE statement. As much validation as possible should be performed, including accessing representative data.

Parameters:
localName - the qualified name to assign to the column set within Farrago; this should NOT be used for finding the actual data, since it can be set arbitrarily by the caller; instead, it should be used to implement the RelOptTable.getQualifiedName() method, and can be useful for correlation during debugging
tableProps - properties to use for data location and access
typeFactory - FarragoTypeFactory to use for defining types
rowType - type to impose on the rows of this column set (including column names and types), or null to infer row type; if this is non-null, it must be saved for use by the getRowType() returned from FarragoMedColumnSet
columnPropMap - map from column name to column-specific Properties; this is optional and may only be specified when rowType is also specified (the field names in rowType are used as the keys for columnPropMap)
Returns:
new FarragoMedColumnSet
Throws:
SQLException - if data access is unsuccessful

getRuntimeSupport

public Object getRuntimeSupport(Object param)
                         throws SQLException
Description copied from interface: FarragoMedDataServer
Gets an object needed for runtime support. Typically, this will be called from code generated by this server. The meaning of this is entirely dependent on the server implementation. If the returned object implements FarragoAllocation, its closeAllocation() method will be called automatically as soon as it is no longer needed.

Specified by:
getRuntimeSupport in interface FarragoMedDataServer
Overrides:
getRuntimeSupport in class MedAbstractDataServer
Parameters:
param - parameter supplied at runtime
Returns:
support object
Throws:
SQLException

registerRules

public void registerRules(RelOptPlanner planner)
Description copied from interface: FarragoMedDataServer
Gives this wrapper a chance to register any special optimization rules. This method may be called more than once, each time with a different planner instance.

Specified by:
registerRules in interface FarragoMedDataServer
Overrides:
registerRules in class MedAbstractDataServer
Parameters:
planner - the planner in which the rules should be registered

closeAllocation

public void closeAllocation()
Description copied from interface: ClosableAllocation
Closes this object.

Specified by:
closeAllocation in interface ClosableAllocation
Overrides:
closeAllocation in class MedAbstractDataServer

generateRuntimeSupportCall

Expression generateRuntimeSupportCall(Expression arg)