sufia-models 4.0.0.beta2 → 4.0.0.beta3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/app/actors/sufia/generic_file/actor.rb +118 -0
  3. data/app/models/batch.rb +3 -3
  4. data/app/models/checksum_audit_log.rb +3 -3
  5. data/app/models/collection.rb +41 -0
  6. data/{lib/sufia/models → app/models/concerns/sufia}/generic_file.rb +33 -43
  7. data/{lib/sufia/models → app/models/concerns/sufia}/generic_file/accessible_attributes.rb +3 -3
  8. data/{lib/sufia/models → app/models/concerns/sufia}/generic_file/audit.rb +12 -18
  9. data/{lib/sufia/models → app/models/concerns/sufia}/generic_file/characterization.rb +1 -8
  10. data/app/models/concerns/sufia/generic_file/derivatives.rb +26 -0
  11. data/{lib/sufia/models → app/models/concerns/sufia}/generic_file/export.rb +13 -13
  12. data/{lib/sufia/models → app/models/concerns/sufia}/generic_file/featured.rb +0 -0
  13. data/{lib/sufia/models → app/models/concerns/sufia}/generic_file/metadata.rb +0 -0
  14. data/{lib/sufia/models → app/models/concerns/sufia}/generic_file/mime_types.rb +15 -1
  15. data/{lib/sufia/models → app/models/concerns/sufia}/generic_file/permissions.rb +5 -1
  16. data/{lib/sufia/models → app/models/concerns/sufia}/generic_file/reload_on_save.rb +0 -0
  17. data/{lib/sufia/models → app/models/concerns/sufia}/generic_file/trophies.rb +0 -0
  18. data/app/models/concerns/sufia/generic_file/versions.rb +16 -0
  19. data/{lib/sufia/models → app/models/concerns/sufia}/generic_file/virus_check.rb +2 -3
  20. data/{lib/sufia/models → app/models/concerns/sufia}/generic_file/web_form.rb +9 -2
  21. data/app/models/concerns/sufia/properties_datastream_behavior.rb +3 -4
  22. data/app/models/concerns/sufia/user.rb +2 -2
  23. data/app/models/datastreams/fits_datastream.rb +137 -136
  24. data/app/models/datastreams/generic_file_rdf_datastream.rb +6 -0
  25. data/app/models/datastreams/paranoid_rights_datastream.rb +3 -3
  26. data/app/models/file_usage.rb +53 -0
  27. data/app/models/follow.rb +2 -4
  28. data/app/models/geo_names_resource.rb +5 -7
  29. data/app/models/local_authority.rb +14 -14
  30. data/app/models/single_use_link.rb +1 -1
  31. data/app/models/sufia/download.rb +9 -0
  32. data/app/models/trophy.rb +1 -1
  33. data/app/services/sufia/{usage_statistics.rb → analytics.rb} +1 -24
  34. data/app/services/sufia/id_service.rb +2 -2
  35. data/lib/generators/sufia/models/install_generator.rb +5 -2
  36. data/lib/generators/sufia/models/templates/config/setup_mail.rb +1 -1
  37. data/lib/generators/sufia/models/templates/config/sufia.rb +5 -3
  38. data/lib/generators/sufia/models/templates/migrations/acts_as_follower_migration.rb +6 -6
  39. data/lib/generators/sufia/models/templates/migrations/create_checksum_audit_logs.rb +2 -3
  40. data/lib/generators/sufia/models/templates/migrations/create_local_authorities.rb +20 -20
  41. data/lib/sufia/ability.rb +1 -1
  42. data/lib/sufia/models/engine.rb +3 -9
  43. data/lib/sufia/models/file_content/versions.rb +3 -3
  44. data/lib/sufia/models/jobs/active_fedora_pid_based_job.rb +6 -2
  45. data/lib/sufia/models/jobs/batch_update_job.rb +6 -10
  46. data/lib/sufia/models/jobs/characterize_job.rb +1 -13
  47. data/lib/sufia/models/jobs/create_derivatives_job.rb +14 -0
  48. data/lib/sufia/models/jobs/import_url_job.rb +27 -23
  49. data/lib/sufia/models/version.rb +1 -1
  50. data/lib/tasks/sufia-models_tasks.rake +1 -1
  51. data/sufia-models.gemspec +1 -1
  52. metadata +65 -64
  53. data/lib/sufia/models/generic_file/actions.rb +0 -50
  54. data/lib/sufia/models/generic_file/derivatives.rb +0 -31
  55. data/lib/sufia/models/generic_file/thumbnail.rb +0 -37
  56. data/lib/sufia/models/generic_file/versions.rb +0 -16
  57. data/lib/sufia/models/jobs/transcode_audio_job.rb +0 -15
  58. data/lib/sufia/models/jobs/transcode_video_job.rb +0 -15
  59. data/lib/sufia/models/solr_document_behavior.rb +0 -118
@@ -0,0 +1,26 @@
1
+ module Sufia
2
+ module GenericFile
3
+ module Derivatives
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ include Hydra::Derivatives
8
+
9
+ makes_derivatives do |obj|
10
+ case obj.mime_type
11
+ when *pdf_mime_types
12
+ obj.transform_datastream :content, { thumbnail: { format: 'jpg', size: '338x493', datastream: 'thumbnail' } }
13
+ when *office_document_mime_types
14
+ obj.transform_datastream :content, { thumbnail: { format: 'jpg', size: '200x150>', datastream: 'thumbnail' } }, processor: :document
15
+ when *audio_mime_types
16
+ obj.transform_datastream :content, { mp3: { format: 'mp3', datastream: 'mp3' }, ogg: { format: 'ogg', datastream: 'ogg' } }, processor: :audio
17
+ when *video_mime_types
18
+ obj.transform_datastream :content, { webm: { format: 'webm', datastream: 'webm' }, mp4: { format: 'mp4', datastream: 'mp4' }, thumbnail: { format: 'jpg', datastream: 'thumbnail' } }, processor: :video
19
+ when *image_mime_types
20
+ obj.transform_datastream :content, { thumbnail: { format: 'jpg', size: '200x150>', datastream: 'thumbnail' } }
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -46,19 +46,19 @@ module Sufia
46
46
  export_text = []
47
47
  export_text << "url_ver=Z39.88-2004&ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fblacklight.rubyforge.org%3Agenerator"
48
48
  field_map = {
49
- :title => 'title',
50
- :creator => 'creator',
51
- :subject => 'subject',
52
- :description => 'description',
53
- :publisher => 'publisher',
54
- :contributor => 'contributor',
55
- :date_created => 'date',
56
- :resource_type => 'format',
57
- :identifier => 'identifier',
58
- :language => 'language',
59
- :tag => 'relation',
60
- :based_near => 'coverage',
61
- :rights => 'rights'
49
+ title: 'title',
50
+ creator: 'creator',
51
+ subject: 'subject',
52
+ description: 'description',
53
+ publisher: 'publisher',
54
+ contributor: 'contributor',
55
+ date_created: 'date',
56
+ resource_type: 'format',
57
+ identifier: 'identifier',
58
+ language: 'language',
59
+ tag: 'relation',
60
+ based_near: 'coverage',
61
+ rights: 'rights'
62
62
  }
63
63
  field_map.each do |element, kev|
64
64
  values = self.send(element)
@@ -19,6 +19,10 @@ module Sufia
19
19
  self.class.audio_mime_types.include? self.mime_type
20
20
  end
21
21
 
22
+ def office_document?
23
+ self.class.office_document_mime_types.include? self.mime_type
24
+ end
25
+
22
26
  def file_format
23
27
  return nil if self.mime_type.blank? and self.format_label.blank?
24
28
  return self.mime_type.split('/')[1]+ " ("+self.format_label.join(", ")+")" unless self.mime_type.blank? or self.format_label.blank?
@@ -28,7 +32,7 @@ module Sufia
28
32
 
29
33
  module ClassMethods
30
34
  def image_mime_types
31
- ['image/png','image/jpeg', 'image/jpg', 'image/jp2', 'image/bmp', 'image/gif']
35
+ ['image/png', 'image/jpeg', 'image/jpg', 'image/jp2', 'image/bmp', 'image/gif']
32
36
  end
33
37
 
34
38
  def pdf_mime_types
@@ -44,6 +48,16 @@ module Sufia
44
48
  # audio/mpeg is the mime type that fits 0.6.0 returns for an mp3 file.
45
49
  ['audio/mp3', 'audio/mpeg', 'audio/wav', 'audio/x-wave', 'audio/x-wav', 'audio/ogg']
46
50
  end
51
+
52
+ def office_document_mime_types
53
+ ['text/rtf',
54
+ 'application/msword',
55
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
56
+ 'application/vnd.ms-excel',
57
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
58
+ 'application/vnd.ms-powerpoint',
59
+ 'application/vnd.openxmlformats-officedocument.presentationml.presentation']
60
+ end
47
61
  end
48
62
  end
49
63
  end
@@ -7,7 +7,7 @@ module Sufia
7
7
  include Hydra::AccessControls::Visibility
8
8
 
9
9
  included do
10
- has_metadata "rightsMetadata", :type => ParanoidRightsDatastream
10
+ has_metadata "rightsMetadata", type: ParanoidRightsDatastream
11
11
  validate :paranoid_permissions
12
12
  end
13
13
 
@@ -34,6 +34,10 @@ module Sufia
34
34
  perms.map {|p| { name: p.name, access: p.access, type:p.type } }
35
35
  end
36
36
 
37
+ def public?
38
+ read_groups.include?('public')
39
+ end
40
+
37
41
  private
38
42
 
39
43
  def permission_hash
@@ -0,0 +1,16 @@
1
+ module Sufia
2
+ module GenericFile
3
+ module Versions
4
+ def record_version_committer(user)
5
+ version = content.latest_version
6
+ # content datastream not (yet?) present
7
+ return if version.nil?
8
+ VersionCommitter.create(obj_id: version.pid,
9
+ datastream_id: version.dsid,
10
+ version_id: version.versionID,
11
+ committer_login: user.user_key)
12
+ end
13
+
14
+ end
15
+ end
16
+ end
@@ -20,14 +20,13 @@ module Sufia
20
20
  t.path
21
21
  end
22
22
  end
23
- Sufia::GenericFile::Actions.virus_check(path)
23
+ Sufia::GenericFile::Actor.virus_check(path)
24
24
  true
25
25
  rescue Sufia::VirusFoundError => virus
26
26
  logger.warn(virus.message)
27
- errors.add(:content, virus.message)
27
+ errors.add(:base, virus.message)
28
28
  false
29
29
  end
30
-
31
30
  end
32
31
  end
33
32
  end
@@ -28,7 +28,14 @@ module Sufia
28
28
  def terms_for_display
29
29
  # 'type' is the RDF.type assertion, which is not present by default, but may be
30
30
  # provided in some RDF schemas
31
- self.descMetadata.class.fields - [:part_of]
31
+ self.class.terms_for_display
32
+ end
33
+
34
+ module ClassMethods
35
+ def terms_for_display
36
+ [:resource_type, :title, :creator, :contributor, :description, :tag, :rights, :publisher, :date_created,
37
+ :date_uploaded, :date_modified, :subject, :language, :identifier, :based_near, :related_url]
38
+ end
32
39
  end
33
40
 
34
41
  def to_jq_upload
@@ -37,7 +44,7 @@ module Sufia
37
44
  "size" => self.file_size,
38
45
  "url" => "/files/#{noid}",
39
46
  "thumbnail_url" => self.pid,
40
- "delete_url" => "deleteme", # generic_file_path(:id => id),
47
+ "delete_url" => "deleteme", # generic_file_path(id: id),
41
48
  "delete_type" => "DELETE"
42
49
  }
43
50
  end
@@ -4,12 +4,12 @@ module Sufia
4
4
 
5
5
  included do
6
6
  set_terminology do |t|
7
- t.root(:path=>"fields" )
7
+ t.root(path: "fields")
8
8
  # This is where we put the user id of the object depositor -- impacts permissions/access controls
9
- t.depositor :index_as=>[:stored_searchable]
9
+ t.depositor index_as: [:symbol, :stored_searchable]
10
10
  # This is where we put the relative path of the file if submitted as a folder
11
11
  t.relative_path
12
- t.import_url path: 'importUrl', :index_as=>:symbol
12
+ t.import_url path: 'importUrl', index_as: :symbol
13
13
  end
14
14
  end
15
15
 
@@ -25,6 +25,5 @@ module Sufia
25
25
  def prefix
26
26
  ""
27
27
  end
28
-
29
28
  end
30
29
  end
@@ -8,7 +8,7 @@ module Sufia::User
8
8
  include Blacklight::User
9
9
  include Hydra::User
10
10
 
11
- delegate :can?, :cannot?, :to => :ability
11
+ delegate :can?, :cannot?, to: :ability
12
12
 
13
13
  # set this up as a messageable object
14
14
  acts_as_messageable
@@ -18,7 +18,7 @@ module Sufia::User
18
18
  # Users should be followable
19
19
  acts_as_followable
20
20
 
21
- mount_uploader :avatar, AvatarUploader, :mount_on => :avatar_file_name
21
+ mount_uploader :avatar, AvatarUploader, mount_on: :avatar_file_name
22
22
  validates_with AvatarValidator
23
23
  has_many :trophies
24
24
  end
@@ -1,182 +1,183 @@
1
1
  class FitsDatastream < ActiveFedora::OmDatastream
2
2
  include OM::XML::Document
3
+
3
4
  def prefix
4
5
  ""
5
6
  end
6
7
 
7
8
  set_terminology do |t|
8
- t.root(:path => "fits",
9
- :xmlns => "http://hul.harvard.edu/ois/xml/ns/fits/fits_output",
10
- :schema => "http://hul.harvard.edu/ois/xml/xsd/fits/fits_output.xsd")
9
+ t.root(path: "fits",
10
+ xmlns: "http://hul.harvard.edu/ois/xml/ns/fits/fits_output",
11
+ schema: "http://hul.harvard.edu/ois/xml/xsd/fits/fits_output.xsd")
11
12
  t.identification {
12
13
  t.identity {
13
- t.format_label(:path=>{:attribute=>"format"})
14
- t.mime_type(:path=>{:attribute=>"mimetype"}, index_as: [:stored_searchable])
14
+ t.format_label(path: {attribute: "format"})
15
+ t.mime_type(path: {attribute: "mimetype"}, index_as: [:stored_searchable])
15
16
  }
16
17
  }
17
18
  t.fileinfo {
18
- t.file_size(:path=>"size")
19
- t.last_modified(:path=>"lastmodified")
20
- t.filename(:path=>"filename")
21
- t.original_checksum(:path=>"md5checksum")
22
- t.rights_basis(:path=>"rightsBasis")
23
- t.copyright_basis(:path=>"copyrightBasis")
24
- t.copyright_note(:path=>"copyrightNote")
19
+ t.file_size(path: "size")
20
+ t.last_modified(path: "lastmodified")
21
+ t.filename(path: "filename")
22
+ t.original_checksum(path: "md5checksum")
23
+ t.rights_basis(path: "rightsBasis")
24
+ t.copyright_basis(path: "copyrightBasis")
25
+ t.copyright_note(path: "copyrightNote")
25
26
  }
26
- t.filestatus {
27
- t.well_formed(:path=>"well-formed")
28
- t.valid(:path=>"valid")
29
- t.status_message(:path=>"message")
27
+ t.filestatus {
28
+ t.well_formed(path: "well-formed")
29
+ t.valid(path: "valid")
30
+ t.status_message(path: "message")
30
31
  }
31
32
  t.metadata {
32
33
  t.document {
33
- t.file_title(:path=>"title")
34
- t.file_author(:path=>"author")
35
- t.file_language(:path=>"language")
36
- t.page_count(:path=>"pageCount")
37
- t.word_count(:path=>"wordCount")
38
- t.character_count(:path=>"characterCount")
39
- t.paragraph_count(:path=>"paragraphCount")
40
- t.line_count(:path=>"lineCount")
41
- t.table_count(:path=>"tableCount")
42
- t.graphics_count(:path=>"graphicsCount")
34
+ t.file_title(path: "title")
35
+ t.file_author(path: "author")
36
+ t.file_language(path: "language")
37
+ t.page_count(path: "pageCount")
38
+ t.word_count(path: "wordCount")
39
+ t.character_count(path: "characterCount")
40
+ t.paragraph_count(path: "paragraphCount")
41
+ t.line_count(path: "lineCount")
42
+ t.table_count(path: "tableCount")
43
+ t.graphics_count(path: "graphicsCount")
43
44
  }
44
45
  t.image {
45
- t.byte_order(:path=>"byteOrder")
46
- t.compression(:path=>"compressionScheme")
47
- t.width(:path=>"imageWidth")
48
- t.height(:path=>"imageHeight")
49
- t.color_space(:path=>"colorSpace")
50
- t.profile_name(:path=>"iccProfileName")
51
- t.profile_version(:path=>"iccProfileVersion")
52
- t.orientation(:path=>"orientation")
53
- t.color_map(:path=>"colorMap")
54
- t.image_producer(:path=>"imageProducer")
55
- t.capture_device(:path=>"captureDevice")
56
- t.scanning_software(:path=>"scanningSoftwareName")
57
- t.exif_version(:path=>"exifVersion")
58
- t.gps_timestamp(:path=>"gpsTimeStamp")
59
- t.latitude(:path=>"gpsDestLatitude")
60
- t.longitude(:path=>"gpsDestLongitude")
46
+ t.byte_order(path: "byteOrder")
47
+ t.compression(path: "compressionScheme")
48
+ t.width(path: "imageWidth")
49
+ t.height(path: "imageHeight")
50
+ t.color_space(path: "colorSpace")
51
+ t.profile_name(path: "iccProfileName")
52
+ t.profile_version(path: "iccProfileVersion")
53
+ t.orientation(path: "orientation")
54
+ t.color_map(path: "colorMap")
55
+ t.image_producer(path: "imageProducer")
56
+ t.capture_device(path: "captureDevice")
57
+ t.scanning_software(path: "scanningSoftwareName")
58
+ t.exif_version(path: "exifVersion")
59
+ t.gps_timestamp(path: "gpsTimeStamp")
60
+ t.latitude(path: "gpsDestLatitude")
61
+ t.longitude(path: "gpsDestLongitude")
61
62
  }
62
63
  t.text {
63
- t.character_set(:path=>"charset")
64
- t.markup_basis(:path=>"markupBasis")
65
- t.markup_language(:path=>"markupLanguage")
64
+ t.character_set(path: "charset")
65
+ t.markup_basis(path: "markupBasis")
66
+ t.markup_language(path: "markupLanguage")
66
67
  }
67
68
  t.audio {
68
- t.duration(:path=>"duration")
69
- t.bit_depth(:path=>"bitDepth")
70
- t.sample_rate(:path=>"sampleRate")
71
- t.channels(:path=>"channels")
72
- t.data_format(:path=>"dataFormatType")
73
- t.offset(:path=>"offset")
69
+ t.duration(path: "duration")
70
+ t.bit_depth(path: "bitDepth")
71
+ t.sample_rate(path: "sampleRate")
72
+ t.channels(path: "channels")
73
+ t.data_format(path: "dataFormatType")
74
+ t.offset(path: "offset")
74
75
  }
75
76
  t.video {
76
- t.width(:path=>"imageWidth")
77
- t.height(:path=>"imageHeight")
78
- t.duration(:path=>"duration")
79
- t.sample_rate(:path=>"sampleRate")
80
- t.frame_rate(:path=>"frameRate")
77
+ t.width(path: "imageWidth")
78
+ t.height(path: "imageHeight")
79
+ t.duration(path: "duration")
80
+ t.sample_rate(path: "sampleRate")
81
+ t.frame_rate(path: "frameRate")
81
82
  }
82
83
  }
83
- t.format_label(:proxy=>[:identification, :identity, :format_label])
84
- t.mime_type(:proxy=>[:identification, :identity, :mime_type])
85
- t.file_size(:proxy=>[:fileinfo, :file_size])
86
- t.last_modified(:proxy=>[:fileinfo, :last_modified])
87
- t.filename(:proxy=>[:fileinfo, :filename])
88
- t.original_checksum(:proxy=>[:fileinfo, :original_checksum])
89
- t.rights_basis(:proxy=>[:fileinfo, :rights_basis])
90
- t.copyright_basis(:proxy=>[:fileinfo, :copyright_basis])
91
- t.copyright_note(:proxy=>[:fileinfo, :copyright_note])
92
- t.well_formed(:proxy=>[:filestatus, :well_formed])
93
- t.valid(:proxy=>[:filestatus, :valid])
94
- t.status_message(:proxy=>[:filestatus, :status_message])
95
- t.file_title(:proxy=>[:metadata, :document, :file_title])
96
- t.file_author(:proxy=>[:metadata, :document, :file_author])
97
- t.page_count(:proxy=>[:metadata, :document, :page_count])
98
- t.file_language(:proxy=>[:metadata, :document, :file_language])
99
- t.word_count(:proxy=>[:metadata, :document, :word_count])
100
- t.character_count(:proxy=>[:metadata, :document, :character_count])
101
- t.paragraph_count(:proxy=>[:metadata, :document, :paragraph_count])
102
- t.line_count(:proxy=>[:metadata, :document, :line_count])
103
- t.table_count(:proxy=>[:metadata, :document, :table_count])
104
- t.graphics_count(:proxy=>[:metadata, :document, :graphics_count])
105
- t.byte_order(:proxy=>[:metadata, :image, :byte_order])
106
- t.compression(:proxy=>[:metadata, :image, :compression])
107
- t.width(:proxy=>[:metadata, :image, :width])
108
- t.video_width( :proxy=>[:metadata, :video, :width])
109
- t.height(:proxy=>[:metadata, :image, :height])
110
- t.video_height(:proxy=>[:metadata, :video, :height])
111
- t.color_space(:proxy=>[:metadata, :image, :color_space])
112
- t.profile_name(:proxy=>[:metadata, :image, :profile_name])
113
- t.profile_version(:proxy=>[:metadata, :image, :profile_version])
114
- t.orientation(:proxy=>[:metadata, :image, :orientation])
115
- t.color_map(:proxy=>[:metadata, :image, :color_map])
116
- t.image_producer(:proxy=>[:metadata, :image, :image_producer])
117
- t.capture_device(:proxy=>[:metadata, :image, :capture_device])
118
- t.scanning_software(:proxy=>[:metadata, :image, :scanning_software])
119
- t.exif_version(:proxy=>[:metadata, :image, :exif_version])
120
- t.gps_timestamp(:proxy=>[:metadata, :image, :gps_timestamp])
121
- t.latitude(:proxy=>[:metadata, :image, :latitude])
122
- t.longitude(:proxy=>[:metadata, :image, :longitude])
123
- t.character_set(:proxy=>[:metadata, :text, :character_set])
124
- t.markup_basis(:proxy=>[:metadata, :text, :markup_basis])
125
- t.markup_language(:proxy=>[:metadata, :text, :markup_language])
126
- t.duration(:proxy=>[:metadata, :audio, :duration])
127
- t.video_duration(:proxy=>[:metadata, :video, :duration])
128
- t.bit_depth(:proxy=>[:metadata, :audio, :bit_depth])
129
- t.sample_rate(:proxy=>[:metadata, :audio, :sample_rate])
130
- t.video_sample_rate(:proxy=>[:metadata, :video, :sample_rate])
131
- t.channels(:proxy=>[:metadata, :audio, :channels])
132
- t.data_format(:proxy=>[:metadata, :audio, :data_format])
133
- t.offset(:proxy=>[:metadata, :audio, :offset])
134
- t.frame_rate(:proxy=>[:metadata, :video, :frame_rate])
84
+ t.format_label(proxy: [:identification, :identity, :format_label])
85
+ t.mime_type(proxy: [:identification, :identity, :mime_type])
86
+ t.file_size(proxy: [:fileinfo, :file_size])
87
+ t.last_modified(proxy: [:fileinfo, :last_modified])
88
+ t.filename(proxy: [:fileinfo, :filename])
89
+ t.original_checksum(proxy: [:fileinfo, :original_checksum])
90
+ t.rights_basis(proxy: [:fileinfo, :rights_basis])
91
+ t.copyright_basis(proxy: [:fileinfo, :copyright_basis])
92
+ t.copyright_note(proxy: [:fileinfo, :copyright_note])
93
+ t.well_formed(proxy: [:filestatus, :well_formed])
94
+ t.valid(proxy: [:filestatus, :valid])
95
+ t.status_message(proxy: [:filestatus, :status_message])
96
+ t.file_title(proxy: [:metadata, :document, :file_title])
97
+ t.file_author(proxy: [:metadata, :document, :file_author])
98
+ t.page_count(proxy: [:metadata, :document, :page_count])
99
+ t.file_language(proxy: [:metadata, :document, :file_language])
100
+ t.word_count(proxy: [:metadata, :document, :word_count])
101
+ t.character_count(proxy: [:metadata, :document, :character_count])
102
+ t.paragraph_count(proxy: [:metadata, :document, :paragraph_count])
103
+ t.line_count(proxy: [:metadata, :document, :line_count])
104
+ t.table_count(proxy: [:metadata, :document, :table_count])
105
+ t.graphics_count(proxy: [:metadata, :document, :graphics_count])
106
+ t.byte_order(proxy: [:metadata, :image, :byte_order])
107
+ t.compression(proxy: [:metadata, :image, :compression])
108
+ t.width(proxy: [:metadata, :image, :width])
109
+ t.video_width( proxy: [:metadata, :video, :width])
110
+ t.height(proxy: [:metadata, :image, :height])
111
+ t.video_height(proxy: [:metadata, :video, :height])
112
+ t.color_space(proxy: [:metadata, :image, :color_space])
113
+ t.profile_name(proxy: [:metadata, :image, :profile_name])
114
+ t.profile_version(proxy: [:metadata, :image, :profile_version])
115
+ t.orientation(proxy: [:metadata, :image, :orientation])
116
+ t.color_map(proxy: [:metadata, :image, :color_map])
117
+ t.image_producer(proxy: [:metadata, :image, :image_producer])
118
+ t.capture_device(proxy: [:metadata, :image, :capture_device])
119
+ t.scanning_software(proxy: [:metadata, :image, :scanning_software])
120
+ t.exif_version(proxy: [:metadata, :image, :exif_version])
121
+ t.gps_timestamp(proxy: [:metadata, :image, :gps_timestamp])
122
+ t.latitude(proxy: [:metadata, :image, :latitude])
123
+ t.longitude(proxy: [:metadata, :image, :longitude])
124
+ t.character_set(proxy: [:metadata, :text, :character_set])
125
+ t.markup_basis(proxy: [:metadata, :text, :markup_basis])
126
+ t.markup_language(proxy: [:metadata, :text, :markup_language])
127
+ t.duration(proxy: [:metadata, :audio, :duration])
128
+ t.video_duration(proxy: [:metadata, :video, :duration])
129
+ t.bit_depth(proxy: [:metadata, :audio, :bit_depth])
130
+ t.sample_rate(proxy: [:metadata, :audio, :sample_rate])
131
+ t.video_sample_rate(proxy: [:metadata, :video, :sample_rate])
132
+ t.channels(proxy: [:metadata, :audio, :channels])
133
+ t.data_format(proxy: [:metadata, :audio, :data_format])
134
+ t.offset(proxy: [:metadata, :audio, :offset])
135
+ t.frame_rate(proxy: [:metadata, :video, :frame_rate])
135
136
  end
136
137
 
137
138
  def self.xml_template
138
139
  builder = Nokogiri::XML::Builder.new do |xml|
139
- xml.fits(:xmlns => 'http://hul.harvard.edu/ois/xml/ns/fits/fits_output',
140
+ xml.fits(xmlns: 'http://hul.harvard.edu/ois/xml/ns/fits/fits_output',
140
141
  'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
141
142
  'xsi:schemaLocation' =>
142
143
  "http://hul.harvard.edu/ois/xml/ns/fits/fits_output
143
144
  http://hul.harvard.edu/ois/xml/xsd/fits/fits_output.xsd",
144
- :version => "0.6.0",
145
- :timestamp => "1/25/12 11:04 AM") {
145
+ version: "0.6.0",
146
+ timestamp: "1/25/12 11:04 AM") {
146
147
  xml.identification {
147
- xml.identity(:format => '', :mimetype => '',
148
- :toolname => 'FITS', :toolversion => '') {
149
- xml.tool(:toolname => '', :toolversion => '')
150
- xml.version(:toolname => '', :toolversion => '')
151
- xml.externalIdentifier(:toolname => '', :toolversion => '')
148
+ xml.identity(format: '', mimetype: '',
149
+ toolname: 'FITS', toolversion: '') {
150
+ xml.tool(toolname: '', toolversion: '')
151
+ xml.version(toolname: '', toolversion: '')
152
+ xml.externalIdentifier(toolname: '', toolversion: '')
152
153
  }
153
154
  }
154
155
  xml.fileinfo {
155
- xml.size(:toolname => '', :toolversion => '')
156
- xml.creatingApplicatioName(:toolname => '', :toolversion => '',
157
- :status => '')
158
- xml.lastmodified(:toolname => '', :toolversion => '', :status => '')
159
- xml.filepath(:toolname => '', :toolversion => '', :status => '')
160
- xml.filename(:toolname => '', :toolversion => '', :status => '')
161
- xml.md5checksum(:toolname => '', :toolversion => '', :status => '')
162
- xml.fslastmodified(:toolname => '', :toolversion => '', :status => '')
156
+ xml.size(toolname: '', toolversion: '')
157
+ xml.creatingApplicatioName(toolname: '', toolversion: '',
158
+ status: '')
159
+ xml.lastmodified(toolname: '', toolversion: '', status: '')
160
+ xml.filepath(toolname: '', toolversion: '', status: '')
161
+ xml.filename(toolname: '', toolversion: '', status: '')
162
+ xml.md5checksum(toolname: '', toolversion: '', status: '')
163
+ xml.fslastmodified(toolname: '', toolversion: '', status: '')
163
164
  }
164
165
  xml.filestatus {
165
- xml.tag! "well-formed", :toolname => '', :toolversion => '', :status => ''
166
- xml.valid(:toolname => '', :toolversion => '', :status => '')
166
+ xml.tag! "well-formed", toolname: '', toolversion: '', status: ''
167
+ xml.valid(toolname: '', toolversion: '', status: '')
167
168
  }
168
169
  xml.metadata {
169
170
  xml.document {
170
- xml.title(:toolname => '', :toolversion => '', :status => '')
171
- xml.author(:toolname => '', :toolversion => '', :status => '')
172
- xml.pageCount(:toolname => '', :toolversion => '')
173
- xml.isTagged(:toolname => '', :toolversion => '')
174
- xml.hasOutline(:toolname => '', :toolversion => '')
175
- xml.hasAnnotations(:toolname => '', :toolversion => '')
176
- xml.isRightsManaged(:toolname => '', :toolversion => '',
177
- :status => '')
178
- xml.isProtected(:toolname => '', :toolversion => '')
179
- xml.hasForms(:toolname => '', :toolversion => '', :status => '')
171
+ xml.title(toolname: '', toolversion: '', status: '')
172
+ xml.author(toolname: '', toolversion: '', status: '')
173
+ xml.pageCount(toolname: '', toolversion: '')
174
+ xml.isTagged(toolname: '', toolversion: '')
175
+ xml.hasOutline(toolname: '', toolversion: '')
176
+ xml.hasAnnotations(toolname: '', toolversion: '')
177
+ xml.isRightsManaged(toolname: '', toolversion: '',
178
+ status: '')
179
+ xml.isProtected(toolname: '', toolversion: '')
180
+ xml.hasForms(toolname: '', toolversion: '', status: '')
180
181
  }
181
182
  }
182
183
  }