require_dependency "manifest/model/association"
require_dependency "manifest/model/list"
require_dependency "manifest/model/tree"
+require_dependency "manifest/model/peta"
module Manifest
class Model
end
attr :model_name, :model_manifest,
- :attributes, :associations, :tree, :lists, :extend_column_name
+ :attributes, :associations, :tree, :lists, :peta, :extend_column_name
def initialize manifest, model_name, model_manifest
@manifest = manifest
@model_name = model_name
@model_manifest['tree'] ||= {}
@model_manifest['lists'] ||= {}
@model_manifest['extend_column_name'] ||= 'classname'
+ @model_manifest['peta'] ||= {}
@model_manifest['attributes']['id'] = {
'type' => 'number',
'primary_key' => 1,
@model_manifest['tree'].each {|tree_name, parent_model_name|
@tree[tree_name] = ModelModule::Tree.new(self, tree_name, parent_model_name)
}
+ @peta = ModelModule::PetaFactory.factory(self, @model_manifest['peta'])
@extend_column_name = @model_manifest['extend_column_name']
@lists = {}
@model_manifest['lists'].each {|list_name, list_manifest|
false
end
- def each_child_model_manifest tree_name
+ def child_model_manifests tree_name
+ r = []
::Manifest.manifest.models.each {|child_model_name, child_model_manifest|
next unless child_model_manifest.tree[tree_name]
next unless child_model_manifest.tree[tree_name].parent_model_name == @model_name
- yield child_model_manifest
+ r << child_model_manifest
}
+ r
end
def child_models tree_name
- r = []
- self.each_child_model_manifest(tree_name) {|child_model_manifest|
- r << child_model_manifest.classify
+ self.child_model_manifests(tree_name).map {|child_model_manifest|
+ child_model_manifest.classify
}
- r
end
def child_element_names tree_name
- r = []
- self.each_child_model_manifest(tree_name) {|child_model_manifest|
- # has_one ?
- r << self.associations.child_element_name(child_model_manifest)
+ self.child_models(tree_name).map {|child_model|
+ self.associations.child_element_name(child_model)
}
- r
+ end
+
+ def child_element_name item_name
+ self.associations.child_element_name(child_model_manifest)
end
end