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)



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

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

#characterization_termsObject



101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'app/models/concerns/sufia/generic_file/characterization.rb', line 101

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 = self.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



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

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

#durationObject



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

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

#heightObject



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

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

#sample_rateObject



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

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

#widthObject



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

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