Qore DataProvider Module Reference  2.2
DataProvider::DataProvider Class Reference

Data provider class. More...

Static Public Member Methods

static bool getAutoConfig ()
 Returns the auto config flag.
 
static *AbstractDataProviderFactory getFactory (string name)
 Returns the given data provider factory or NOTHING if not present.
 
static AbstractDataProviderFactory getFactoryEx (string name)
 Returns the given data provider factory or throws an exception if not present. More...
 
static AbstractDataProvider getFactoryObject (string path, *hash< auto > options)
 Returns a data provider object from the given factory, created with the given constructor options. More...
 
static AbstractDataProvider getFactoryObjectFromString (string name)
 Returns a data provider object from the given factory string. More...
 
static AbstractDataProvider getFactoryObjectFromStringUseEnv (string name)
 Returns a data provider object from the given factory string using environment variables to find the factory. More...
 
static hash< auto > getInfoAsData (hash< auto > info0, *bool with_type_info)
 Converts an info hash with objects to a hash with string descriptions instead of the objects. More...
 
static list< stringgetPathList (string path)
 Returns a list of strings in a path separated by "/" characters.
 
static *AbstractDataProviderType getType (string path)
 Returns the given data provider type or NOTHING if not present. More...
 
static DataProviderTypeCache getTypeCache ()
 Returns the data provider cache.
 
static AbstractDataProviderType getTypeEx (string path)
 Returns the given data provider type or throws an exception if not present. More...
 
static DataProviderTypeEntry getTypeRoot ()
 Returns the root type entry.
 
static *list< stringlistFactories ()
 Returns a list of registered data provider factories.
 
static *list< stringlistTypes ()
 Returns a list of registered data provider type paths. More...
 
static loadProvidersFromEnvironment ()
 Loads data providers from the environment.
 
static loadTypesFromEnvironment ()
 Loads data types from the environment.
 
static lockAllTypes ()
 Locks all types.
 
static registerFactory (AbstractDataProviderFactory factory)
 Register a new data provider factory. More...
 
static registerKnownFactories ()
 Registers all known data provider factories.
 
static registerKnownTypes ()
 Registers all known data provider types.
 
static registerType (string path, AbstractDataProviderType type)
 Register a new data provider type. More...
 
static setAutoConfig ()
 Sets the flag that allows for automatic configuration from environment variables. More...
 
static *AbstractDataProvider tryLoadProviderForConnectionFromEnv (string name)
 Tries to load a data provider from the environment from the connection name.
 

Public Attributes

const FactoryMap = ...
 Map of known data provider factory names to modules.
 
const FactoryModuleList = keys (map {$1: True}, FactoryMap.iterator())
 List of data provider factory modules.
 
const TypeMap = ...
 Map of known type path prefixes to modules.
 

Static Private Member Methods

static bool checkInjection (object obj, hash< string, string > module_map)
 Check if the object is from a module that has been subject to dependency injections.
 
static checkRequest ()
 Sets the env_config_locked variable if not already set.
 
static *object checkSymbol (hash< SymbolInfo > info)
 Returns True if an object of the given type has been loaded.
 
static Mutex factory_cache_lock ()
 data provider factory cache lock
 
static hash< FactoryInfo > getFactoryInfoFromString (string name)
 Returns a hash of factory information from a string.
 
static *object loadFromEnvironment (string func, string type, *hash< SymbolInfo > info)
 Loads modules from the QORE_DATA_PROVIDERS environment variable.
 
static *string tryGetFactoryModuleName (string name)
 Tries to load a module corresponding to the given factory.
 
static *string tryGetModuleName (string name, string func, string type)
 Tries to load a module corresponding to the given factory.
 
static *string tryGetTypeModuleName (string name)
 Tries to load a module corresponding to the given factory.
 
static bool tryLoad (string module_str, *bool verbose)
 Try to load the given module.
 
static *DataProviderTypeEntry tryLoadTypeFromPath (list< string > type_path)
 Tries to load the given type.
 
static DataProviderTypeCache type_cache ()
 data provider data type cache
 

Static Private Attributes

static bool allow_env_config = False
 flag to allow automatic configuration from environment variables More...
 
static bool env_config_locked = False
 flag that locks the allow_env_config var
 
static hash< string, AbstractDataProviderFactoryfactory_cache
 data provider factory cache
 
static hash< string, stringfactory_module_map
 data provider factory module map
 
static hash< string, bool > mod_map
 set of module already loaded
 
static hash< string, stringtype_module_map
 data provider type module map
 

Detailed Description

Data provider class.

Member Function Documentation

◆ getFactoryEx()

static AbstractDataProviderFactory DataProvider::DataProvider::getFactoryEx ( string  name)
static

Returns the given data provider factory or throws an exception if not present.

Parameters
namethe name of the data provider to retrieve
Returns
the given data provider; an exception is thrown if the data provide is unknown
Exceptions
PROVIDER-ERRORthe given provider is unknown

◆ getFactoryObject()

static AbstractDataProvider DataProvider::DataProvider::getFactoryObject ( string  path,
*hash< auto >  options 
)
static

Returns a data provider object from the given factory, created with the given constructor options.

Parameters
paththe "/"-separated path to the target data provider; the first element is the factory name
optionsfactory creation options
Exceptions
PROVIDER-ERRORthe given provider factory or child provider is unknown

◆ getFactoryObjectFromString()

static AbstractDataProvider DataProvider::DataProvider::getFactoryObjectFromString ( string  name)
static

Returns a data provider object from the given factory string.

Factory options are given as string-formatted hash in curly brackets and child data providers are separated by forward slashes

Example:
DbDataProvider db = DataProvider::getFactoryObjectFromString("db{oracle:user/password@db}/my_table");
Exceptions
PROVIDER-ERRORthe given provider factory or child provider is unknown

◆ getFactoryObjectFromStringUseEnv()

static AbstractDataProvider DataProvider::DataProvider::getFactoryObjectFromStringUseEnv ( string  name)
static

Returns a data provider object from the given factory string using environment variables to find the factory.

Factory options are given as string-formatted hash in curly brackets and child data providers are separated by forward slashes

Example:
DbDataProvider db = DataProvider::getFactoryObjectFromStringUseEnv("db{oracle:user/password@db}/my_table");
Exceptions
PROVIDER-ERRORthe given provider factory or child provider is unknown

◆ getInfoAsData()

static hash<auto> DataProvider::DataProvider::getInfoAsData ( hash< auto >  info0,
*bool  with_type_info 
)
static

Converts an info hash with objects to a hash with string descriptions instead of the objects.

Parameters
info0the raw info with objects describing the types
with_type_infoif True then more type information will be returned in the response

◆ getType()

static *AbstractDataProviderType DataProvider::DataProvider::getType ( string  path)
static

Returns the given data provider type or NOTHING if not present.

Parameters
patha "/" separated path for the type; trailing path elements can be a path into fields
Returns
the given data provider type; NOTHING is returned if the type cannot be resolved
Note
types are stored based on the path provided which may differ from their type names (which may be generic and therefore not suitable for indexing)

◆ getTypeEx()

static AbstractDataProviderType DataProvider::DataProvider::getTypeEx ( string  path)
static

Returns the given data provider type or throws an exception if not present.

Parameters
patha "/" separated path for the type; trailing path elements can be a path into fields
Returns
the given data provider type; an exception is thrown if the data provide is unknown
Exceptions
PROVIDER-ERRORthe given data provider type path is unknown
Note
types are stored based on the path provided which may differ from their type names (which may be generic and therefore not suitable for indexing)

◆ listTypes()

static *list<string> DataProvider::DataProvider::listTypes ( )
static

Returns a list of registered data provider type paths.

Note
types are stored based on the path provided which may differ from their type names (which may be generic and therefore not suitable for indexing)

◆ registerFactory()

static DataProvider::DataProvider::registerFactory ( AbstractDataProviderFactory  factory)
static

Register a new data provider factory.

Parameters
factorythe new data provider factory
Exceptions
PROVIDER-ERRORthe given provider has already been registered

◆ registerType()

static DataProvider::DataProvider::registerType ( string  path,
AbstractDataProviderType  type 
)
static

Register a new data provider type.

Parameters
patha "/" separated path for the type; this is the lookup index
typethe new data provider type
Exceptions
PROVIDER-ERRORthe given provider has already been registered
Note
types are stored based on the path provided which may differ from their type names (which may be generic and therefore not suitable for indexing)

◆ setAutoConfig()

static DataProvider::DataProvider::setAutoConfig ( )
static

Sets the flag that allows for automatic configuration from environment variables.

Must be called before any requests for types or factories are made, or an exception is raised

Exceptions
DATA-PROVIDER-ERRORcannot call this method after requests for types or factories are made

Member Data Documentation

◆ allow_env_config

bool DataProvider::DataProvider::allow_env_config = False
staticprivate

flag to allow automatic configuration from environment variables

must be set before any requests for types or factories are made