OSDN Git Service

e
[pettanr/pettanr.git] / lib / manifest / profiler / association / has_many.rb
1 module Manifest
2   module ProfilerModule
3     module AssociationModule
4       class HasMany
5         attr :association, :profiler_list_name, 
6           :model_name, :list_name, :list
7         def initialize association, profiler_list_name
8           @association = association
9           @profiler_list_name = profiler_list_name
10           self.set_default
11           self.init
12         end
13         
14         def set_default
15         end
16         
17         def init
18           if list_manifest = self.profiler.lists[@profiler_list_name]
19             @model_name = list_manifest.model_name
20             @list_name = list_manifest.list_name
21           else
22             n = @profiler_list_name.split '.'
23             if n.size > 1
24               @table_name = n[0]
25               @model_name = @table_name.singularize
26               @list_name = n[1]
27             else
28               raise "undefined list for profilers > #{self.profiler.item_name} > has_many > #{@profiler_list_name}\n"
29             end
30           end
31           @list_group = ::Manifest.manifest.list_groups[@model_name]
32           raise "undefined list_group for profilers > #{self.profiler.item_name} > lists > #{@my_name} ... #{@model_name}\n" unless @list_group
33           @list = @list_group.lists[@list_name]
34           raise "undefined list for profilers > #{self.profiler.item_name} > lists > #{@my_name} ... #{@list_name}\n" unless @list
35         end
36         
37         def model
38           ::Manifest::item_name_to_model @model_name
39         end
40         
41         def association_name
42           @association.association_name
43         end
44         
45         def profiler
46           @association.profiler
47         end
48         
49         def profiler_manifest
50           @association.profiler_manifest
51         end
52         
53       end
54       
55     end
56   end
57 end