connectors/__init__.py
branch#2476
changeset 2001 bcbd41efd846
parent 1881 091005ec69c4
child 2006 c4ba142bf3fb
equal deleted inserted replaced
1991:34a9287b6c7d 2001:bcbd41efd846
    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