OSDN Git Service

add peta model_manifest
[pettanr/pettanr.git] / lib / manifest / model / peta.rb
diff --git a/lib/manifest/model/peta.rb b/lib/manifest/model/peta.rb
new file mode 100644 (file)
index 0000000..32b30d0
--- /dev/null
@@ -0,0 +1,27 @@
+require_dependency "manifest/model/peta/base"
+require_dependency "manifest/model/peta/item"
+require_dependency "manifest/model/peta/owner"
+require_dependency "manifest/model/peta/content"
+require_dependency "manifest/model/peta/root"
+require_dependency "manifest/model/peta/element"
+module Manifest
+  module ModelModule
+    class PetaFactory
+      include PetaModule
+      @@types = {
+        'item' => ItemPeta, 'owner' => OwnerPeta, 'content' => ContentPeta, 
+        'root' => RootPeta, 'element' => ElementPeta
+      }
+      def self.factory model, my_manifest
+        my_manifest['type'] ||= 'item'
+        type = my_manifest['type']
+        raise "undefined type for models > #{model.model_name} > peta \n" unless type
+        my_class = @@types[type]
+        raise "undefined class for models > #{model.fmodel_name} > peta > #{type}\n" unless my_class
+        my_class.new(model, my_manifest)
+      end
+      
+    end
+    
+  end
+end