connectors/__init__.py
branch#2476
changeset 2006 c4ba142bf3fb
parent 2001 bcbd41efd846
child 2007 ef2d479f564f
equal deleted inserted replaced
2005:0d32b17f15b9 2006:c4ba142bf3fb
    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 
       
    45 
    39 
    46 connectors = {name:
    40 connectors = {name:
    47               _GetLocalConnectorClassFactory(name)
    41               _GetLocalConnectorClassFactory(name)
    48               for name in listdir(_base_path)
    42               for name in listdir(_base_path)
    49               if (path.isdir(path.join(_base_path, name)) and
    43               if (path.isdir(path.join(_base_path, name)) and
    50                   not name.startswith("__"))}
    44                   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("__"))}
       
    57 
    45 
    58 
    46 
    59 def ConnectorFactory(uri, confnodesroot):
    47 def ConnectorFactory(uri, confnodesroot):
    60     """
    48     """
    61     Return a connector corresponding to the URI
    49     Return a connector corresponding to the URI
    78         return None
    66         return None
    79 
    67 
    80     # import module according to uri type
    68     # import module according to uri type
    81     connectorclass = connectors[servicetype]()
    69     connectorclass = connectors[servicetype]()
    82     return connectorclass(uri, confnodesroot)
    70     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