Class: MultiVersionCommonCartridge::Writers::ManifestWriter

Inherits:
Object
  • Object
show all
Includes:
SupportedVersions
Defined in:
lib/multi_version_common_cartridge/writers/manifest_writer.rb

Constant Summary collapse

MESSAGES =
{
  no_identifier: 'An identifier is required',
}.freeze

Constants included from SupportedVersions

SupportedVersions::SUPPORTED_VERSIONS, SupportedVersions::UNSUPPORTED_VERSION_MSG_TEMPLATE

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from SupportedVersions

#validate_version

Constructor Details

#initialize(manifest, factory, version) ⇒ ManifestWriter



30
31
32
33
34
# File 'lib/multi_version_common_cartridge/writers/manifest_writer.rb', line 30

def initialize(manifest, factory, version)
  @manifest = manifest
  @factory = factory
  @version = validate_version(version)
end

Instance Attribute Details

#manifestObject (readonly)

Returns the value of attribute manifest.



28
29
30
# File 'lib/multi_version_common_cartridge/writers/manifest_writer.rb', line 28

def manifest
  @manifest
end

Instance Method Details

#finalizeObject

Raises:

  • (StandardError)


36
37
38
39
40
41
# File 'lib/multi_version_common_cartridge/writers/manifest_writer.rb', line 36

def finalize
  raise StandardError, MESSAGES[:no_identifier] unless manifest.identifier
  .finalize
  organization_writer.finalize
  resources_writer.finalize
end

#manifest_elementObject



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/multi_version_common_cartridge/writers/manifest_writer.rb', line 50

def manifest_element
  @manifest_element ||= CommonCartridge::Elements::Manifest.new.tap do |element|
    element.identifier = manifest.identifier
    element.xmlns = required_namespaces['xmlns']
    element.xmlns_lomimscc = required_namespaces['xmlns:lomimscc']
    element.xmlns_lom = required_namespaces['xmlns:lom']
    element.xmlns_xsi = required_namespaces['xmlns:xsi']
    element.xsi_schema_location = xsi_schema_location
    element. = .
    element.root_organization = CommonCartridge::Elements::Organizations::RootOrganization.new(
      organizations: [organization_writer.organization_element]
    )
    element.root_resource = resources_writer.root_resource_element
  end
end

#write(dir) ⇒ Object



43
44
45
46
47
48
# File 'lib/multi_version_common_cartridge/writers/manifest_writer.rb', line 43

def write(dir)
  doc = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |builder|
    SaxMachineNokogiriXmlSaver.new.save(builder, manifest_element, 'manifest')
  end
  File.open(File.join(dir, 'imsmanifest.xml'), 'w') { |file| file.write(doc.to_xml) }
end