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