Package conduit :: Package dataproviders :: Module SimpleFactory
[hide private]

Source Code for Module conduit.dataproviders.SimpleFactory

 1  import logging 
 2  log = logging.getLogger("dataproviders.SimpleFactory") 
 3   
 4  import conduit 
 5  import conduit.dataproviders.DataProvider as DataProvider 
 6   
7 -class SimpleFactory(DataProvider.DataProviderFactory):
8 """ 9 Encapsulate the emit_added/emit_removed tracking logic and allow 10 it to be shared with multiple dataprovider factories 11 """ 12
13 - def __init__(self, **kwargs):
14 DataProvider.DataProviderFactory.__init__(self, **kwargs) 15 self.items = {}
16
17 - def item_added(self, key, **kwargs):
18 log.info("Item Added: %s" % key) 19 cat = self.get_category(key, **kwargs) 20 idxs = [] 21 for klass in self.get_dataproviders(key, **kwargs): 22 args = self.get_args(key, **kwargs) 23 idx = self.emit_added(klass, args, cat) 24 idxs.append(idx) 25 self.items[key] = idxs
26
27 - def item_removed(self, key):
28 if key in self.items: 29 for idx in self.items[key]: 30 self.emit_removed(idx) 31 del(self.items[key])
32
33 - def get_category(self, key, **kwargs):
34 """ Return a category to contain these dataproviders """ 35 raise NotImplementedError
36
37 - def get_dataproviders(self, key, **kwargs):
38 """ Return a list of dataproviders for this class of device """ 39 raise NotImplementedError
40
41 - def get_args(self, key, **kwargs):
42 raise NotImplementedError
43
44 - def is_interesting(self, udi, properties):
45 raise NotImplementedError
46