00001 from GBSLogger import Log, logger 00002 00003 class GBSModel : 00004 """Mapping from a model to a set of classes that impliment it 00005 00006 Note: Would be good if the mapped classes could describe themselves 00007 00008 00009 """ 00010 00011 def __init__(self,name,title,description): 00012 self.__name = name 00013 self.__title = title 00014 self.__description = description 00015 self.__class_map = {} 00016 self.__ctor_list_map = {} 00017 Log(self,logger.SYNOPSIS,"Creating a GBSModel named '" + str(name) + "'") 00018 00019 def GetName(self): return self.__name 00020 def GetDescription(self): return self.__description 00021 def GetTitle(self): return self.__title 00022 00023 def AddMapping(self,role,class_obj,ctor_list) : 00024 self.__class_map[role] = class_obj 00025 self.__ctor_list_map[role] = ctor_list 00026 Log(self,logger.DEBUG,"GBSModel: In model: '" + self.GetName() + "' adding " + str(class_obj) + " in role '" + str(role) + "'") 00027 00028 def CreateObject(self,role,object_name,parent) : 00029 if not self.__class_map.has_key(role): 00030 print "Cannot find role " + str(role) + " in model " + str(self.__name) 00031 raise NameError 00032 return self.__class_map[role](object_name,parent,self.__name,self.__ctor_list_map[role]) 00033 00034