Module: Sufia::GenericFile::Characterization

Extended by:
ActiveSupport::Concern
Included in:
Sufia::GenericFile
Defined in:
app/models/concerns/sufia/generic_file/characterization.rb

Instance Method Summary collapse

Instance Method Details

#append_metadataObject

Populate GenericFile’s properties with fields from FITS (e.g. Author from pdfs)



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'app/models/concerns/sufia/generic_file/characterization.rb', line 81

def 
  terms = characterization_terms
  Sufia.config.fits_to_desc_mapping.each_pair do |k, v|
    next unless terms.key?(k)
    Array.wrap(terms[k]).each do |term_value|
      proxy_term = send(v)
      if proxy_term.is_a?(Array)
        proxy_term << term_value unless proxy_term.include?(term_value)
      else
        # these are single-valued terms which cannot be appended to
        send("#{v}=", term_value)
      end
    end
  end
end

#characterization_termsObject



97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'app/models/concerns/sufia/generic_file/characterization.rb', line 97

def characterization_terms
  h = {}
  FitsDatastream.terminology.terms.each_pair do |_k, v|
    next unless v.respond_to? :proxied_term
    term = v.proxied_term
    begin
      value = send(term.name)
      h[term.name] = value unless value.empty?
    rescue NoMethodError
      next
    end
  end
  h
end

#characterizeObject

Extract the metadata from the content datastream and record it in the characterization datastream



72
73
74
75
76
77
78
# File 'app/models/concerns/sufia/generic_file/characterization.rb', line 72

def characterize
   = content.
  characterization.ng_xml =  if .present?
  
  self.filename = [content.original_name]
  save
end

#durationObject



63
64
65
# File 'app/models/concerns/sufia/generic_file/characterization.rb', line 63

def duration
  characterization.duration.blank? ? characterization.video_duration : characterization.duration
end

#heightObject



59
60
61
# File 'app/models/concerns/sufia/generic_file/characterization.rb', line 59

def height
  characterization.height.blank? ? characterization.video_height : characterization.height
end

#sample_rateObject



67
68
69
# File 'app/models/concerns/sufia/generic_file/characterization.rb', line 67

def sample_rate
  characterization.sample_rate.blank? ? characterization.video_sample_rate : characterization.sample_rate
end

#widthObject



55
56
57
# File 'app/models/concerns/sufia/generic_file/characterization.rb', line 55

def width
  characterization.width.blank? ? characterization.video_width : characterization.width
end