Class: METSModel
- Inherits:
-
ASpaceExport::ExportModel
- Object
- ASpaceExport::ExportModel
- METSModel
- Includes:
- JSONModel
- Defined in:
- backend/app/exporters/models/mets.rb
Constant Summary
- @@logical_div =
Struct.new(:label, :dmdid, :file_versions, :children) do
Instance Attribute Summary (collapse)
-
- (Object) dmd_id
Returns the value of attribute dmd_id.
-
- (Object) extents
Returns the value of attribute extents.
-
- (Object) header_agent_name
Returns the value of attribute header_agent_name.
-
- (Object) header_agent_notes
Returns the value of attribute header_agent_notes.
-
- (Object) header_agent_role
Returns the value of attribute header_agent_role.
-
- (Object) header_agent_type
Returns the value of attribute header_agent_type.
-
- (Object) mods_model
Returns the value of attribute mods_model.
-
- (Object) names
Returns the value of attribute names.
-
- (Object) notes
Returns the value of attribute notes.
-
- (Object) parts
Returns the value of attribute parts.
-
- (Object) subjects
Returns the value of attribute subjects.
-
- (Object) type_of_resource
Returns the value of attribute type_of_resource.
-
- (Object) wrapped_dmd
Returns the value of attribute wrapped_dmd.
Class Method Summary (collapse)
-
+ (Object) from_archival_object(obj)
-
+ (Object) from_aspace_object(obj)
-
+ (Object) from_digital_object(obj)
-
+ (Object) get_file_group(*args)
-
+ (Object) name_part_type_map
-
+ (Object) name_type_map
Instance Method Summary (collapse)
-
- (Object) add_agent_note(val)
-
- (Object) children
-
- (Object) dmd_wrap(mdtype, callback, data)
-
- (Object) extract_file_versions(children)
-
- (METSModel) initialize(obj)
constructor
A new instance of METSModel.
-
- (Object) method_missing(meth)
-
- (Object) root_logical_div
-
- (Object) root_physical_div
-
- (Object) with_file_groups
Methods included from JSONModel
JSONModel, #JSONModel, add_error_handler, all, allow_unmapped_enum_value, backend_url, client_mode?, custom_validations, destroy_model, enum_default_value, enum_values, handle_error, init, load_schema, #models, models, parse_jsonmodel_ref, parse_reference, repository, repository_for, schema_src, set_repository, strict_mode, strict_mode?, with_repository
Methods inherited from ASpaceExport::ExportModel
#apply_map, inherited, model_for, model_for?
Methods included from ASpaceExport::ExportModelHelpers
#extract_date_string, #extract_note_content, #get_subnotes_by_type
Constructor Details
- (METSModel) initialize(obj)
Returns a new instance of METSModel
105 106 107 108 109 110 111 112 113 |
# File 'backend/app/exporters/models/mets.rb', line 105 def initialize(obj) @json = obj @wrapped_dmd = [] @extents = [] @notes = [] @subjects = [] @names = [] @parts = [] end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
- (Object) method_missing(meth)
179 180 181 182 183 184 185 |
# File 'backend/app/exporters/models/mets.rb', line 179 def method_missing(meth) if @json.respond_to?(meth) @json.send(meth) else nil end end |
Instance Attribute Details
- (Object) dmd_id
Returns the value of attribute dmd_id
20 21 22 |
# File 'backend/app/exporters/models/mets.rb', line 20 def dmd_id @dmd_id end |
- (Object) extents
Returns the value of attribute extents
14 15 16 |
# File 'backend/app/exporters/models/mets.rb', line 14 def extents @extents end |
- (Object) header_agent_name
Returns the value of attribute header_agent_name
6 7 8 |
# File 'backend/app/exporters/models/mets.rb', line 6 def header_agent_name @header_agent_name end |
- (Object) header_agent_notes
Returns the value of attribute header_agent_notes
7 8 9 |
# File 'backend/app/exporters/models/mets.rb', line 7 def header_agent_notes @header_agent_notes end |
- (Object) header_agent_role
Returns the value of attribute header_agent_role
8 9 10 |
# File 'backend/app/exporters/models/mets.rb', line 8 def header_agent_role @header_agent_role end |
- (Object) header_agent_type
Returns the value of attribute header_agent_type
9 10 11 |
# File 'backend/app/exporters/models/mets.rb', line 9 def header_agent_type @header_agent_type end |
- (Object) mods_model
Returns the value of attribute mods_model
11 12 13 |
# File 'backend/app/exporters/models/mets.rb', line 11 def mods_model @mods_model end |
- (Object) names
Returns the value of attribute names
17 18 19 |
# File 'backend/app/exporters/models/mets.rb', line 17 def names @names end |
- (Object) notes
Returns the value of attribute notes
15 16 17 |
# File 'backend/app/exporters/models/mets.rb', line 15 def notes @notes end |
- (Object) parts
Returns the value of attribute parts
19 20 21 |
# File 'backend/app/exporters/models/mets.rb', line 19 def parts @parts end |
- (Object) subjects
Returns the value of attribute subjects
16 17 18 |
# File 'backend/app/exporters/models/mets.rb', line 16 def subjects @subjects end |
- (Object) type_of_resource
Returns the value of attribute type_of_resource
18 19 20 |
# File 'backend/app/exporters/models/mets.rb', line 18 def type_of_resource @type_of_resource end |
- (Object) wrapped_dmd
Returns the value of attribute wrapped_dmd
12 13 14 |
# File 'backend/app/exporters/models/mets.rb', line 12 def wrapped_dmd @wrapped_dmd end |
Class Method Details
+ (Object) from_archival_object(obj)
138 139 140 141 142 143 |
# File 'backend/app/exporters/models/mets.rb', line 138 def self.from_archival_object(obj) mets = self.from_aspace_object(obj) mets.apply_map(obj, @archival_object_map) mets end |
+ (Object) from_aspace_object(obj)
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'backend/app/exporters/models/mets.rb', line 121 def self.from_aspace_object(obj) mets = self.new(obj) if obj.respond_to?(:repo_id) repo_id = RequestContext.get(:repo_id) mets.apply_map(Repository.get_or_die(repo_id), @repository_map) mets.header_agent_role = "CREATOR" mets.header_agent_type = "ORGANIZATION" end mets.add_agent_note("Produced by ArchivesSpace") mets end |
+ (Object) from_digital_object(obj)
146 147 148 149 150 151 152 153 154 155 |
# File 'backend/app/exporters/models/mets.rb', line 146 def self.from_digital_object(obj) mets = self.from_archival_object(obj) mets.type_of_resource = obj.digital_object_type mets.apply_map(obj, @digital_object_map) # wrapped DMD mets.mods_model = ASpaceExport.model(:mods).from_digital_object(obj, :ignore => [:tree]) mets end |
+ (Object) get_file_group(*args)
116 117 118 |
# File 'backend/app/exporters/models/mets.rb', line 116 def self.get_file_group(*args) @file_group.new(*args) end |
+ (Object) name_part_type_map
163 164 165 |
# File 'backend/app/exporters/models/mets.rb', line 163 def self.name_part_type_map @name_part_type_map end |
+ (Object) name_type_map
158 159 160 |
# File 'backend/app/exporters/models/mets.rb', line 158 def self.name_type_map @name_type_map end |
Instance Method Details
- (Object) add_agent_note(val)
168 169 170 171 |
# File 'backend/app/exporters/models/mets.rb', line 168 def add_agent_note(val) @header_agent_notes ||= [] @header_agent_notes << val end |
- (Object) children
188 189 190 191 192 193 194 195 196 |
# File 'backend/app/exporters/models/mets.rb', line 188 def children return nil unless @json.tree['_resolved']['children'] ao_class = self.class.instance_variable_get(:@doc) children = @json.tree['_resolved']['children'].map { |subtree| ao_class.new(subtree) } children end |
- (Object) dmd_wrap(mdtype, callback, data)
174 175 176 |
# File 'backend/app/exporters/models/mets.rb', line 174 def dmd_wrap(mdtype, callback, data) self.wrapped_dmd << {'type' => mdtype,'callback' => callback, 'data' => data} end |
- (Object) extract_file_versions(children)
276 277 278 279 280 281 282 283 284 285 286 287 288 289 |
# File 'backend/app/exporters/models/mets.rb', line 276 def extract_file_versions(children) file_versions = [] children.each do |child| if child['file_versions'] file_versions += child['file_versions'] end if child['children'] file_versions += extract_file_versions(child['children']) end end file_versions end |
- (Object) root_logical_div
256 257 258 259 260 261 262 263 |
# File 'backend/app/exporters/models/mets.rb', line 256 def root_logical_div @@logical_div.init @@logical_div.new(@json.title, @json.id, @json.file_versions, @json.tree['_resolved']['children']) end |
- (Object) root_physical_div
266 267 268 269 270 271 272 273 |
# File 'backend/app/exporters/models/mets.rb', line 266 def root_physical_div @@logical_div.init @@logical_div.new(@json.title, @json.id, @json.file_versions, @json.tree['_resolved']['children']) end |
- (Object) with_file_groups
199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 |
# File 'backend/app/exporters/models/mets.rb', line 199 def with_file_groups file_versions = @json.file_versions file_versions.each do |fv| fv['digital_object_id'] = @json.id end file_versions += extract_file_versions(@json.tree['_resolved']['children']) file_versions.compact! while file_versions.length > 0 use_statement = file_versions[0]['use_statement'] use_group = file_versions.select {|fv| fv['use_statement'] == use_statement } yield self.class.get_file_group(use_statement, use_group) file_versions.reject! {|fv| fv['use_statement'] == use_statement } end end |