class Ddr::Managers::TechnicalMetadataManager

Constants

FITS_TIMESTAMP_FORMAT

Public Instance Methods

checksum_digest() click to toggle source
# File lib/ddr/managers/technical_metadata_manager.rb, line 52
def checksum_digest
  checksum_uri.split(":")[1].upcase rescue nil
end
checksum_value() click to toggle source
# File lib/ddr/managers/technical_metadata_manager.rb, line 56
def checksum_value
  checksum_uri.split(":").last rescue nil
end
creation_time() click to toggle source
# File lib/ddr/managers/technical_metadata_manager.rb, line 76
def creation_time
  created.map { |datestr| coerce_to_time(datestr) }.compact
end
file_human_size() click to toggle source
# File lib/ddr/managers/technical_metadata_manager.rb, line 45
def file_human_size
  file_size.map do |fs|
    "%s (%s bytes)" % [ ActiveSupport::NumberHelper.number_to_human_size(fs),
                        ActiveSupport::NumberHelper.number_to_delimited(fs) ]
  end
end
file_size() click to toggle source
# File lib/ddr/managers/technical_metadata_manager.rb, line 41
def file_size
  extent.map(&:to_i)
end
fits?() click to toggle source
# File lib/ddr/managers/technical_metadata_manager.rb, line 26
def fits?
  !fits_version.nil?
end
fits_datetime() click to toggle source
# File lib/ddr/managers/technical_metadata_manager.rb, line 34
def fits_datetime
  if fits_timestamp = fits.timestamp.first
    no_zone = DateTime.strptime(fits_timestamp, FITS_TIMESTAMP_FORMAT)
    no_zone.change(offset: no_zone.to_time.zone)
  end
end
fits_version() click to toggle source
# File lib/ddr/managers/technical_metadata_manager.rb, line 30
def fits_version
  fits.version.first
end
ill_formed?() click to toggle source
# File lib/ddr/managers/technical_metadata_manager.rb, line 68
def ill_formed?
  well_formed.any? { |v| v == "false" }
end
index_fields() click to toggle source
# File lib/ddr/managers/technical_metadata_manager.rb, line 84
def index_fields
  { Ddr::Index::Fields::TECHMD_FITS_VERSION      => fits_version,
    Ddr::Index::Fields::TECHMD_FITS_DATETIME     => Ddr::Utils.solr_date(fits_datetime),
    Ddr::Index::Fields::TECHMD_CREATION_TIME     => Ddr::Utils.solr_dates(creation_time),
    Ddr::Index::Fields::TECHMD_MODIFICATION_TIME => Ddr::Utils.solr_dates(modification_time),
    Ddr::Index::Fields::TECHMD_COLOR_SPACE       => color_space,
    Ddr::Index::Fields::TECHMD_CREATING_APPLICATION => creating_application,
    Ddr::Index::Fields::TECHMD_FILE_SIZE         => file_size,
    Ddr::Index::Fields::TECHMD_FORMAT_LABEL      => format_label,
    Ddr::Index::Fields::TECHMD_FORMAT_VERSION    => format_version,
    Ddr::Index::Fields::TECHMD_IMAGE_HEIGHT      => image_height,
    Ddr::Index::Fields::TECHMD_IMAGE_WIDTH       => image_width,
    Ddr::Index::Fields::TECHMD_MEDIA_TYPE        => media_type,
    Ddr::Index::Fields::TECHMD_PRONOM_IDENTIFIER => pronom_identifier,
    Ddr::Index::Fields::TECHMD_VALID             => valid,
    Ddr::Index::Fields::TECHMD_WELL_FORMED       => well_formed,
  }
end
invalid?() click to toggle source
# File lib/ddr/managers/technical_metadata_manager.rb, line 60
def invalid?
  valid.any? { |v| v == "false" }
end
modification_time() click to toggle source
# File lib/ddr/managers/technical_metadata_manager.rb, line 80
def modification_time
  modified.map { |datestr| coerce_to_time(datestr) }.compact
end
valid?() click to toggle source
# File lib/ddr/managers/technical_metadata_manager.rb, line 64
def valid?
  !invalid?
end
well_formed?() click to toggle source
# File lib/ddr/managers/technical_metadata_manager.rb, line 72
def well_formed?
  !ill_formed?
end

Private Instance Methods

checksum_uri() click to toggle source
# File lib/ddr/managers/technical_metadata_manager.rb, line 112
def checksum_uri
  content.digest.first.to_s
end
coerce_to_time(datestr) click to toggle source
# File lib/ddr/managers/technical_metadata_manager.rb, line 105
def coerce_to_time(datestr)
  datestr.sub! /\A(\d+):(\d+):(\d+)/, '\1-\2-\3'
  DateTime.parse(datestr).to_time
rescue ArgumentError
  nil
end