Qore DataProvider Module Reference  2.1.1
DataProvider.qc.dox.h
1 // -*- mode: c++; indent-tabs-mode: nil -*-
3 
26 namespace DataProvider {
29 class DataProvider {
30 
31 public:
33  const FactoryMap = ...;
34 
35 
37  const TypeMap = ...;
38 
39 
41  const FactoryModuleList = keys (map {$1: True}, FactoryMap.iterator());
42  // "map" is used above to ensure that the values only appear once in the final list
43 
44 protected:
46  static hash<string, AbstractDataProviderFactory> factory_cache;
47 
49  static hash<string, string> factory_module_map;
50 
52  static Mutex factory_cache_lock();
53 
55  static DataProviderTypeCache type_cache();
56 
58  static hash<string, string> type_module_map;
59 
61 
63  static bool allow_env_config = False;
64 
66  static bool env_config_locked = False;
67 
69  static hash<string, bool> mod_map;
70 
71 public:
72 
74 
78  static registerFactory(AbstractDataProviderFactory factory);
79 
81  static *AbstractDataProviderFactory getFactory(string name);
82 
84 
90  static AbstractDataProviderFactory getFactoryEx(string name);
91 
93 
98  static AbstractDataProvider getFactoryObject(string path, *hash<auto> options);
99 
101 
110  static AbstractDataProvider getFactoryObjectFromString(string name);
111 
113 
122  static AbstractDataProvider getFactoryObjectFromStringUseEnv(string name);
123 
125 protected:
126  static hash<FactoryInfo> getFactoryInfoFromString(string name);
127 public:
128 
129 
131  static *list<string> listFactories();
132 
134  static DataProviderTypeCache getTypeCache();
135 
137 
145  static registerType(string path, AbstractDataProviderType type);
146 
148 
155  static *AbstractDataProviderType getType(string path);
156 
158 
167  static AbstractDataProviderType getTypeEx(string path);
168 
170  static DataProviderTypeEntry getTypeRoot();
171 
173  static lockAllTypes();
174 
176 
180  static *list<string> listTypes();
181 
183  static registerKnownFactories();
184 
186  static loadProvidersFromEnvironment();
187 
189  static *AbstractDataProvider tryLoadProviderForConnectionFromEnv(string name);
190 
192  static registerKnownTypes();
193 
195  static loadTypesFromEnvironment();
196 
198 
201  static hash<auto> getInfoAsData(hash<auto> info0, *bool with_type_info);
202 
204 
208  static setAutoConfig();
209 
211  static bool getAutoConfig();
212 
214  static list<string> getPathList(string path);
215 
217 protected:
218  static checkRequest();
219 public:
220 
221 
223 protected:
224  static *string tryGetFactoryModuleName(string name);
225 public:
226 
227 
229 protected:
230  static *string tryGetTypeModuleName(string name);
231 public:
232 
233 
235 protected:
236  static *string tryGetModuleName(string name, string func, string type);
237 public:
238 
239 
241 protected:
242  static *DataProviderTypeEntry tryLoadTypeFromPath(list<string> type_path);
243 public:
244 
245 
247 protected:
248  static bool tryLoad(string module_str, *bool verbose);
249 public:
250 
251 
253 protected:
254  static *object loadFromEnvironment(string func, string type, *hash<SymbolInfo> info);
255 public:
256 
257 
259 protected:
260  static *object checkSymbol(hash<SymbolInfo> info);
261 public:
262 
263 
265 protected:
266  static bool checkInjection(object obj, hash<string, string> module_map);
267 public:
268 
269 };
270 
271 // private hashdecls
272 hashdecl SymbolInfo {
273  // symbol type
274  string type;
275  // symbol name
276  string name;
277 }
278 hashdecl FactoryInfo {
279  // factory name
280  string name;
281  // path to final data provider in factory
282  list<string> path_list;
283  // factory options
284  auto options;
285 }
286 }
the DataProviderTypeEntry class
Definition: DataProviderTypeEntry.qc.dox.h:55
The AbstractDataProvider class.
Definition: AbstractDataProvider.qc.dox.h:260
static hash< string, string > factory_module_map
data provider factory module map
Definition: DataProvider.qc.dox.h:49
const True
const False
Data provider factory class.
Definition: AbstractDataProviderFactory.qc.dox.h:39
static hash< string, bool > mod_map
set of module already loaded
Definition: DataProvider.qc.dox.h:69
describes a data type
Definition: AbstractDataProviderType.qc.dox.h:105
static hash< string, AbstractDataProviderFactory > factory_cache
data provider factory cache
Definition: DataProvider.qc.dox.h:46
string type(auto arg)
static hash< string, string > type_module_map
data provider type module map
Definition: DataProvider.qc.dox.h:58
Qore AbstractDataField class definition.
Definition: AbstractDataField.qc.dox.h:27
Data provider type cache class.
Definition: DataProviderTypeCache.qc.dox.h:29