OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
[pettanr/pettanr.git] / lib / manifest / profiler.rb
1 require_dependency "manifest/profiler/column"
2 require_dependency "manifest/profiler/list"
3 require_dependency "manifest/profiler/association"
4 module Manifest
5   class Profiler
6     
7     include ProfilerModule
8     def self.manager manifest, my_manifests
9       my_manifests.map {|item_name, profiler_manifest|
10         self.new(manifest, item_name, profiler_manifest)
11       }
12     end
13     
14     attr :profiler_manifest, :item_name, :manifest, 
15       :columns, :lists, :associations
16     def initialize manifest, item_name, profiler_manifest
17       @manifest = manifest
18       @item_name = item_name
19       @profiler_manifest = profiler_manifest
20       self.set_default
21       self.init
22     end
23     
24     def set_default
25       @profiler_manifest['columns'] ||= []
26       @profiler_manifest['lists'] ||= {}
27       @profiler_manifest['associations'] ||= {}
28     end
29     
30     def init
31       @columns = @profiler_manifest['columns']
32       @lists = {}
33       @profiler_manifest['lists'].each {|list_name, list_manifest|
34         @lists[list_name] = List.new(self, list_name, list_manifest)
35       }
36       @associations = Association.new(self, @profiler_manifest['associations'])
37     end
38     
39     def open item, operators
40       ProfilerView.new @item_name, item, operators, @profiler_conf, @manifest
41     end
42     
43   end
44   
45 end
46