def init
super
@tree_name = @args['tree_name']
- if @tree_name
- @parent_model_manifest = @list.model_manifest.tree_model_manifest(@tree_name)
- if @parent_model_manifest
- @parent_model_name = @parent_model_manifest.classify.item_name
- @root_model_manifest = @parent_model_manifest.tree_model_manifest(@tree_name)
- if @root_model_manifest
- @root_model_name = @root_model_manifest.classify.item_name
- end
- end
- end
end
def includes
- if @parent_model_name
- if @root_model_name
- {@parent_model_name => {@root_model_name => {}}}
- else
- {@parent_model_name => {}}
- end
+ model_manifest = ::Manifest.manifest.models[self.item_name]
+ tree_manifest = model_manifest.tree[self.tree_name]
+ if tree_manifest
+ tree_manifest.include_hash
else
{}
end
@attributes[attribute_name] = ModelModule::Attribute.new(self, attribute_name, attribute_manifest)
}
@associations = ModelModule::Association.new(self, @model_manifest['associations'])
- @tree = @model_manifest['tree']
+ @tree = {}
+ @model_manifest['tree'].each {|tree_name, parent_model_name|
+ @tree[tree_name] = ModelModule::Tree.new(self, tree_name, parent_model_name)
+ }
@lists = {}
@model_manifest['lists'].each {|list_name, list_manifest|
@lists[list_name] = ModelModule::ListFactory.factory(self, list_name, list_manifest)
::Manifest.item_name_to_model @model_name
end
- def tree_model_manifest tree_name
- if tree_name
- if @tree[tree_name]
- r = ::Manifest.manifest.models[@tree[tree_name]]
- raise "undefined tree_model for models > #{@model_name} > tree > #{tree_name}\n" unless r
- r
- else
- nil
- end
- else
- nil
- end
- end
-
end
end
--- /dev/null
+module Manifest
+ module ModelModule
+ class Tree
+ attr :model, :tree_name, :parent_model_name
+ def initialize model, tree_name, parent_model_name
+ @model = model
+ @tree_name = tree_name
+ @parent_model_name = parent_model_name
+ self.set_default
+ self.init
+ end
+
+ def set_default
+ end
+
+ def init
+ end
+
+ def parent_model_manifest
+ r = ::Manifest.manifest.models[@parent_model_name]
+ raise "undefined parent model for models > #{@model.model_name} > tree > #{tree_name}\n" unless r
+ r
+ end
+
+ def parent_tree_manifest
+ self.parent_model_manifest[@tree_name]
+ end
+
+ def include_hash
+ if self.parent_tree_manifest
+ {@parent_model_name => self.parent_tree_manifest.include_hash}
+ else
+ {}
+ end
+ end
+
+ def model_manifest
+ @model.model_manifest
+ end
+
+ end
+
+ end
+end