-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"
-require_dependency "manifest/model/peta/binder"
-require_dependency "manifest/model/peta/leaf"
+ManifestBase.require_modules "manifest/model/peta/",
+ %w|base item owner content root element binder leaf|
+
module Manifest
module ModelModule
- class PetaFactory
+ class PetaFactory < ManifestBase::Factory
include PetaModule
- @@types = {
- 'item' => ItemPeta, 'owner' => OwnerPeta, 'content' => ContentPeta,
- 'root' => RootPeta, 'element' => ElementPeta,
- 'binder' => BinderPeta, 'leaf' => LeafPeta
- }
- 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)
+
+ def self.types
+ {
+ 'item' => ItemPeta, 'owner' => OwnerPeta, 'content' => ContentPeta,
+ 'root' => RootPeta, 'element' => ElementPeta,
+ 'binder' => BinderPeta, 'leaf' => LeafPeta
+ }
+ end
+
+ def self.default_type
+ 'item'
end
end