1 require_dependency "manifest/model/attribute"
2 require_dependency "manifest/model/association"
3 require_dependency "manifest/model/list"
4 require_dependency "manifest/model/tree"
9 def self.manager manifest, my_manifests
11 my_manifests.each {|model_name, model_manifest|
12 models[model_name] = self.new(manifest, model_name, model_manifest)
17 attr :model_name, :model_manifest,
18 :attributes, :associations, :tree, :lists
19 def initialize manifest, model_name, model_manifest
21 @model_name = model_name
22 @model_manifest = model_manifest
28 @model_manifest['attributes'] ||= {}
29 @model_manifest['associations'] ||= {}
30 @model_manifest['tree'] ||= {}
31 @model_manifest['lists'] ||= {}
32 @model_manifest['attributes']['id'] = {
39 @model_manifest['attributes']['created_at'] = {
42 @model_manifest['attributes']['updated_at'] = {
49 @model_manifest['attributes'].each {|attribute_name, attribute_manifest|
50 @attributes[attribute_name] = ModelModule::Attribute.new(self, attribute_name, attribute_manifest)
52 @associations = ModelModule::Association.new(self, @model_manifest['associations'])
54 @model_manifest['tree'].each {|tree_name, parent_model_name|
55 @tree[tree_name] = ModelModule::Tree.new(self, tree_name, parent_model_name)
58 @model_manifest['lists'].each {|list_name, list_manifest|
59 @lists[list_name] = ModelModule::ListFactory.factory(self, list_name, list_manifest)
64 ::Manifest.item_name_to_model @model_name
67 def valid_encode_columns
69 @attributes.each {|attribute_name, attribute|
70 next unless attribute.type == 'text'
77 return :author if @attributes['author_id']
78 return :artist if @attributes['artist_id']
83 return true if self.owner_type