OSDN Git Service

fix form
[pettanr/pettanr.git] / lib / manifest / model / list.rb
1 require_dependency "manifest/model/list/base"
2 require_dependency "manifest/model/list/public"
3 require_dependency "manifest/model/list/private"
4 require_dependency "manifest/model/list/system_resource"
5 require_dependency "manifest/model/list/has_many"
6 require_dependency "manifest/model/list/has_many_through"
7 require_dependency "manifest/model/list/filter"
8 require_dependency "manifest/model/list/through_filter"
9 require_dependency "manifest/model/list/element_filter"
10 require_dependency "manifest/model/list/play"
11 module Manifest
12   module ModelModule
13     class ListFactory
14       include ListModule
15       @@types = {
16         'public' => PublicList, 'private' => PrivateList, 'system_resource' => SystemResourceList,
17         'has_many' => HasManyList, 'has_many_through' => HasManyThroughList, 'filter' => FilterList, 
18         'through_filter' => ThroughFilterList, 'element_filter' => ElementFilterList, 
19         'play' => PlayList
20       }
21       
22       def self.factory model, my_name, my_manifest
23         type = my_manifest['type']
24         raise "undefined type for models > #{model.model_name} > lists > #{my_name}\n" unless type
25         my_class = @@types[type]
26         raise "undefined class for models > #{model.model_name} > lists > #{my_name} > #{type}\n" unless my_class
27         my_class.new(model, my_name, my_manifest)
28       end
29       
30     end
31     
32   end
33 end