34 |
34 |
35 |
35 |
36 def _GetLocalConnectorClassFactory(name): |
36 def _GetLocalConnectorClassFactory(name): |
37 return lambda: getattr(__import__(name, globals(), locals()), name + "_connector_factory") |
37 return lambda: getattr(__import__(name, globals(), locals()), name + "_connector_factory") |
38 |
38 |
|
39 def _GetLocalConnectorClassDialog(name): |
|
40 return lambda: getattr(__import__(name, globals(), locals()), name + "_connector_dialog") |
|
41 |
|
42 def _GetLocalConnectorURITypes(name): |
|
43 return lambda: getattr(__import__(name, globals(), locals()), "URITypes", None) |
|
44 |
39 |
45 |
40 connectors = {name: |
46 connectors = {name: |
41 _GetLocalConnectorClassFactory(name) |
47 _GetLocalConnectorClassFactory(name) |
42 for name in listdir(_base_path) |
48 for name in listdir(_base_path) |
43 if (path.isdir(path.join(_base_path, name)) and |
49 if (path.isdir(path.join(_base_path, name)) and |
44 not name.startswith("__"))} |
50 not name.startswith("__"))} |
|
51 |
|
52 connectors_dialog = {name: |
|
53 {"function":_GetLocalConnectorClassDialog(name), "URITypes": _GetLocalConnectorURITypes(name)} |
|
54 for name in listdir(_base_path) |
|
55 if (path.isdir(path.join(_base_path, name)) and |
|
56 not name.startswith("__"))} |
45 |
57 |
46 |
58 |
47 def ConnectorFactory(uri, confnodesroot): |
59 def ConnectorFactory(uri, confnodesroot): |
48 """ |
60 """ |
49 Return a connector corresponding to the URI |
61 Return a connector corresponding to the URI |
66 return None |
78 return None |
67 |
79 |
68 # import module according to uri type |
80 # import module according to uri type |
69 connectorclass = connectors[servicetype]() |
81 connectorclass = connectors[servicetype]() |
70 return connectorclass(uri, confnodesroot) |
82 return connectorclass(uri, confnodesroot) |
|
83 |
|
84 |
|
85 def ConnectorDialog(type, confnodesroot): |
|
86 if type not in connectors_dialog: |
|
87 return None |
|
88 |
|
89 connectorclass = connectors_dialog[type]["function"]() |
|
90 return connectorclass(confnodesroot) |
|
91 |
|
92 def GetConnectorFromURI(uri): |
|
93 typeOfConnector = None |
|
94 for t in connectors_dialog: |
|
95 connectorTypes = connectors_dialog[t]["URITypes"]() |
|
96 if connectorTypes and uri in connectorTypes: |
|
97 typeOfConnector = t |
|
98 break |
|
99 |
|
100 return typeOfConnector |
|
101 |