curation_concerns-models 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.md +177 -0
  5. data/README.md +42 -0
  6. data/Rakefile +1 -0
  7. data/app/actors/concerns/curation_concerns/manages_embargoes_actor.rb +99 -0
  8. data/app/actors/curation_concerns/base_actor.rb +90 -0
  9. data/app/actors/curation_concerns/generic_file_actor.rb +150 -0
  10. data/app/actors/curation_concerns/work_actor_behavior.rb +88 -0
  11. data/app/jobs/active_fedora_id_based_job.rb +22 -0
  12. data/app/jobs/active_fedora_pid_based_job.rb +6 -0
  13. data/app/jobs/audit_job.rb +58 -0
  14. data/app/jobs/characterize_job.rb +11 -0
  15. data/app/jobs/copy_permissions_job.rb +24 -0
  16. data/app/jobs/create_derivatives_job.rb +15 -0
  17. data/app/jobs/import_url_job.rb +56 -0
  18. data/app/jobs/ingest_local_file_job.rb +48 -0
  19. data/app/jobs/resolrize_job.rb +9 -0
  20. data/app/models/checksum_audit_log.rb +21 -0
  21. data/app/models/concerns/curation_concerns/ability.rb +34 -0
  22. data/app/models/concerns/curation_concerns/basic_metadata.rb +87 -0
  23. data/app/models/concerns/curation_concerns/collection_behavior.rb +47 -0
  24. data/app/models/concerns/curation_concerns/generic_file/belongs_to_works.rb +53 -0
  25. data/app/models/concerns/curation_concerns/generic_file/characterization.rb +89 -0
  26. data/app/models/concerns/curation_concerns/generic_file/content.rb +8 -0
  27. data/app/models/concerns/curation_concerns/generic_file/export.rb +343 -0
  28. data/app/models/concerns/curation_concerns/generic_file/full_text_indexing.rb +12 -0
  29. data/app/models/concerns/curation_concerns/generic_file/indexing.rb +14 -0
  30. data/app/models/concerns/curation_concerns/generic_file/versions.rb +16 -0
  31. data/app/models/concerns/curation_concerns/generic_file.rb +5 -0
  32. data/app/models/concerns/curation_concerns/generic_file_behavior.rb +44 -0
  33. data/app/models/concerns/curation_concerns/generic_work_behavior.rb +38 -0
  34. data/app/models/concerns/curation_concerns/has_representative.rb +14 -0
  35. data/app/models/concerns/curation_concerns/human_readable_type.rb +23 -0
  36. data/app/models/concerns/curation_concerns/permissions/readable.rb +19 -0
  37. data/app/models/concerns/curation_concerns/permissions/writable.rb +75 -0
  38. data/app/models/concerns/curation_concerns/permissions.rb +7 -0
  39. data/app/models/concerns/curation_concerns/serializers.rb +15 -0
  40. data/app/models/concerns/curation_concerns/solr_document_behavior.rb +135 -0
  41. data/app/models/concerns/curation_concerns/user.rb +65 -0
  42. data/app/models/concerns/curation_concerns/with_basic_metadata.rb +98 -0
  43. data/app/models/concerns/curation_concerns/with_generic_files.rb +29 -0
  44. data/app/models/curation_concerns/classify_concern.rb +47 -0
  45. data/app/models/curation_concerns/quick_classification_query.rb +31 -0
  46. data/app/models/datastreams/fits_datastream.rb +148 -0
  47. data/app/models/version_committer.rb +2 -0
  48. data/app/services/curation_concerns/characterization_service.rb +71 -0
  49. data/app/services/curation_concerns/full_text_extraction_service.rb +38 -0
  50. data/app/services/curation_concerns/generic_file_audit_service.rb +85 -0
  51. data/app/services/curation_concerns/generic_file_indexing_service.rb +14 -0
  52. data/app/services/curation_concerns/generic_work_indexing_service.rb +16 -0
  53. data/app/services/curation_concerns/noid.rb +23 -0
  54. data/app/services/curation_concerns/repository_audit_service.rb +9 -0
  55. data/app/services/curation_concerns/versioning_service.rb +27 -0
  56. data/config/locales/curation_concerns.en.yml +6 -0
  57. data/curation_concerns-models.gemspec +34 -0
  58. data/lib/curation_concerns/messages.rb +66 -0
  59. data/lib/curation_concerns/models/engine.rb +61 -0
  60. data/lib/curation_concerns/models/resque.rb +36 -0
  61. data/lib/curation_concerns/models/utils.rb +22 -0
  62. data/lib/curation_concerns/models/version.rb +5 -0
  63. data/lib/curation_concerns/models.rb +32 -0
  64. data/lib/generators/curation_concerns/models/abstract_migration_generator.rb +30 -0
  65. data/lib/generators/curation_concerns/models/clamav_generator.rb +19 -0
  66. data/lib/generators/curation_concerns/models/fulltext_generator.rb +28 -0
  67. data/lib/generators/curation_concerns/models/install_generator.rb +70 -0
  68. data/lib/generators/curation_concerns/models/templates/app/models/collection.rb +4 -0
  69. data/lib/generators/curation_concerns/models/templates/app/models/generic_file.rb +4 -0
  70. data/lib/generators/curation_concerns/models/templates/config/clamav.rb +1 -0
  71. data/lib/generators/curation_concerns/models/templates/config/curation_concerns.rb +123 -0
  72. data/lib/generators/curation_concerns/models/templates/config/mime_types.rb +6 -0
  73. data/lib/generators/curation_concerns/models/templates/config/redis.yml +9 -0
  74. data/lib/generators/curation_concerns/models/templates/config/redis_config.rb +32 -0
  75. data/lib/generators/curation_concerns/models/templates/config/resque-pool.yml +1 -0
  76. data/lib/generators/curation_concerns/models/templates/config/resque_admin.rb +10 -0
  77. data/lib/generators/curation_concerns/models/templates/config/resque_config.rb +5 -0
  78. data/lib/generators/curation_concerns/models/templates/migrations/create_checksum_audit_logs.rb +19 -0
  79. data/lib/generators/curation_concerns/models/templates/migrations/create_version_committers.rb +15 -0
  80. data/lib/tasks/curation_concerns-models_tasks.rake +75 -0
  81. data/lib/tasks/migrate.rake +13 -0
  82. data/lib/tasks/resque.rake +13 -0
  83. data/lib/tasks/solr_reindex.rake +8 -0
  84. metadata +282 -0
@@ -0,0 +1,123 @@
1
+ CurationConcerns.config do |config|
2
+ config.fits_to_desc_mapping = {
3
+ file_title: :title,
4
+ file_author: :creator
5
+ }
6
+
7
+ config.max_days_between_audits = 7
8
+
9
+ config.cc_licenses = {
10
+ 'Attribution 3.0 United States' => 'http://creativecommons.org/licenses/by/3.0/us/',
11
+ 'Attribution-ShareAlike 3.0 United States' => 'http://creativecommons.org/licenses/by-sa/3.0/us/',
12
+ 'Attribution-NonCommercial 3.0 United States' => 'http://creativecommons.org/licenses/by-nc/3.0/us/',
13
+ 'Attribution-NoDerivs 3.0 United States' => 'http://creativecommons.org/licenses/by-nd/3.0/us/',
14
+ 'Attribution-NonCommercial-NoDerivs 3.0 United States' => 'http://creativecommons.org/licenses/by-nc-nd/3.0/us/',
15
+ 'Attribution-NonCommercial-ShareAlike 3.0 United States' => 'http://creativecommons.org/licenses/by-nc-sa/3.0/us/',
16
+ 'Public Domain Mark 1.0' => 'http://creativecommons.org/publicdomain/mark/1.0/',
17
+ 'CC0 1.0 Universal' => 'http://creativecommons.org/publicdomain/zero/1.0/',
18
+ 'All rights reserved' => 'All rights reserved'
19
+ }
20
+
21
+ config.cc_licenses_reverse = Hash[*config.cc_licenses.to_a.flatten.reverse]
22
+
23
+ config.resource_types = {
24
+ "Article" => "Article",
25
+ "Audio" => "Audio",
26
+ "Book" => "Book",
27
+ "Capstone Project" => "Capstone Project",
28
+ "Conference Proceeding" => "Conference Proceeding",
29
+ "Dataset" => "Dataset",
30
+ "Dissertation" => "Dissertation",
31
+ "Image" => "Image",
32
+ "Journal" => "Journal",
33
+ "Map or Cartographic Material" => "Map or Cartographic Material",
34
+ "Masters Thesis" => "Masters Thesis",
35
+ "Part of Book" => "Part of Book",
36
+ "Poster" => "Poster",
37
+ "Presentation" => "Presentation",
38
+ "Project" => "Project",
39
+ "Report" => "Report",
40
+ "Research Paper" => "Research Paper",
41
+ "Software or Program Code" => "Software or Program Code",
42
+ "Video" => "Video",
43
+ "Other" => "Other",
44
+ }
45
+
46
+ config.resource_types_to_schema = {
47
+ "Article" => "http://schema.org/Article",
48
+ "Audio" => "http://schema.org/AudioObject",
49
+ "Book" => "http://schema.org/Book",
50
+ "Capstone Project" => "http://schema.org/CreativeWork",
51
+ "Conference Proceeding" => "http://schema.org/ScholarlyArticle",
52
+ "Dataset" => "http://schema.org/Dataset",
53
+ "Dissertation" => "http://schema.org/ScholarlyArticle",
54
+ "Image" => "http://schema.org/ImageObject",
55
+ "Journal" => "http://schema.org/CreativeWork",
56
+ "Map or Cartographic Material" => "http://schema.org/Map",
57
+ "Masters Thesis" => "http://schema.org/ScholarlyArticle",
58
+ "Part of Book" => "http://schema.org/Book",
59
+ "Poster" => "http://schema.org/CreativeWork",
60
+ "Presentation" => "http://schema.org/CreativeWork",
61
+ "Project" => "http://schema.org/CreativeWork",
62
+ "Report" => "http://schema.org/CreativeWork",
63
+ "Research Paper" => "http://schema.org/ScholarlyArticle",
64
+ "Software or Program Code" => "http://schema.org/Code",
65
+ "Video" => "http://schema.org/VideoObject",
66
+ "Other" => "http://schema.org/CreativeWork",
67
+ }
68
+
69
+ config.permission_levels = {
70
+ "Choose Access"=>"none",
71
+ "View/Download" => "read",
72
+ "Edit" => "edit"
73
+ }
74
+
75
+ config.owner_permission_levels = {
76
+ "Edit" => "edit"
77
+ }
78
+
79
+ config.queue = CurationConcerns::Resque::Queue
80
+
81
+ # Enable displaying usage statistics in the UI
82
+ # Defaults to FALSE
83
+ # Requires a Google Analytics id and OAuth2 keyfile. See README for more info
84
+ config.analytics = false
85
+
86
+ # Specify a Google Analytics tracking ID to gather usage statistics
87
+ # config.google_analytics_id = 'UA-99999999-1'
88
+
89
+ # Specify a date you wish to start collecting Google Analytic statistics for.
90
+ # config.analytic_start_date = DateTime.new(2014,9,10)
91
+
92
+ # Where to store tempfiles, leave blank for the system temp directory (e.g. /tmp)
93
+ # config.temp_file_base = '/home/developer1'
94
+
95
+ # Specify the form of hostpath to be used in Endnote exports
96
+ # config.persistent_hostpath = 'http://localhost/files/'
97
+
98
+ # If you have ffmpeg installed and want to transcode audio and video uncomment this line
99
+ # config.enable_ffmpeg = true
100
+
101
+ # CurationConcerns uses NOIDs for files and collections instead of Fedora UUIDs
102
+ # where NOID = 10-character string and UUID = 32-character string w/ hyphens
103
+ # config.enable_noids = true
104
+
105
+ # Specify a different template for your repository's NOID IDs
106
+ # config.noid_template = ".reeddeeddk"
107
+
108
+ # Specify the prefix for Redis keys:
109
+ # config.redis_namespace = "curation_concerns"
110
+
111
+ # Specify the path to the file characterization tool:
112
+ # config.fits_path = "fits.sh"
113
+
114
+ # Specify a date you wish to start collecting Google Analytic statistics for.
115
+ # Leaving it blank will set the start date to when ever the file was uploaded by
116
+ # NOTE: if you have always sent analytics to GA for downloads and page views leave this commented out
117
+ # config.analytic_start_date = DateTime.new(2014,9,10)
118
+
119
+
120
+
121
+ end
122
+
123
+ Date::DATE_FORMATS[:standard] = "%m/%d/%Y"
@@ -0,0 +1,6 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Add new mime types for use in respond_to blocks:
4
+ # Mime::Type.register "text/richtext", :rtf
5
+ # Mime::Type.register_alias "text/html", :iphone
6
+ Mime::Type.register 'application/x-endnote-refer', :endnote
@@ -0,0 +1,9 @@
1
+ development:
2
+ host: localhost
3
+ port: 6379
4
+ test:
5
+ host: localhost
6
+ port: 6379
7
+ production:
8
+ host: localhost
9
+ port: 6379
@@ -0,0 +1,32 @@
1
+ if defined?(PhusionPassenger)
2
+ PhusionPassenger.on_event(:starting_worker_process) do |forked|
3
+ # We're in smart spawning mode.
4
+ if forked
5
+ # Re-establish redis connection
6
+ require 'redis'
7
+ config = YAML::load(ERB.new(IO.read(File.join(Rails.root, 'config', 'redis.yml'))).result)[Rails.env].with_indifferent_access
8
+
9
+ # The important two lines
10
+ $redis.client.disconnect if $redis
11
+ $redis = Redis.new(host: config[:host], port: config[:port], thread_safe: true) rescue nil
12
+ Resque.redis = $redis
13
+ Resque.redis.client.reconnect if Resque.redis
14
+ end
15
+ end
16
+ else
17
+ config = YAML::load(ERB.new(IO.read(File.join(Rails.root, 'config', 'redis.yml'))).result)[Rails.env].with_indifferent_access
18
+ $redis = Redis.new(host: config[:host], port: config[:port], thread_safe: true) rescue nil
19
+ end
20
+
21
+
22
+ # Code borrowed from Obie's Redis patterns talk at RailsConf'12
23
+ Nest.class_eval do
24
+ def initialize(key, redis=$redis)
25
+ super(key.to_param)
26
+ @redis = redis
27
+ end
28
+
29
+ def [](key)
30
+ self.class.new("#{self}:#{key.to_param}", @redis)
31
+ end
32
+ end
@@ -0,0 +1,10 @@
1
+ module CurationConcerns
2
+ class ResqueAdmin
3
+ def self.matches?(request)
4
+ current_user = request.env['warden'].user
5
+ return false if current_user.blank?
6
+ # TODO code a group here that makes sense
7
+ #current_user.groups.include? 'umg/up.dlt.scholarsphere-admin'
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ config = YAML::load(ERB.new(IO.read(File.join(Rails.root, 'config', 'redis.yml'))).result)[Rails.env].with_indifferent_access
2
+ Resque.redis = Redis.new(host: config[:host], port: config[:port], thread_safe: true)
3
+
4
+ Resque.inline = Rails.env.test?
5
+ Resque.redis.namespace = "#{CurationConcerns.config.redis_namespace}:#{Rails.env}"
@@ -0,0 +1,19 @@
1
+ class CreateChecksumAuditLogs < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :checksum_audit_logs do |t|
4
+ t.string :generic_file_id
5
+ t.string :file_id
6
+ t.string :version
7
+ t.integer :pass
8
+ t.string :expected_result
9
+ t.string :actual_result
10
+ t.timestamps
11
+ end
12
+ add_index :checksum_audit_logs, [:generic_file_id, :file_id], name: 'by_generic_file_id_and_file_id', order: {created_at: "DESC" }
13
+ end
14
+
15
+ def self.down
16
+ remove_index(:checksum_audit_logs, name: 'by_generic_file_id_and_file_id')
17
+ drop_table :checksum_audit_logs
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ class CreateVersionCommitters < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :version_committers do |t|
4
+ t.string :obj_id
5
+ t.string :datastream_id
6
+ t.string :version_id
7
+ t.string :committer_login
8
+ t.timestamps
9
+ end
10
+ end
11
+
12
+ def self.down
13
+ drop_table :version_committers
14
+ end
15
+ end
@@ -0,0 +1,75 @@
1
+ require 'net/http'
2
+
3
+ namespace :curation_concerns do
4
+ namespace :jetty do
5
+
6
+ FULLTEXT_JARS = %w(
7
+ org/apache/james/apache-mime4j-core/0.7.2/apache-mime4j-core-0.7.2.jar
8
+ org/apache/james/apache-mime4j-dom/0.7.2/apache-mime4j-dom-0.7.2.jar
9
+ org/apache/solr/solr-cell/4.0.0/solr-cell-4.0.0.jar
10
+ org/bouncycastle/bcmail-jdk15/1.45/bcmail-jdk15-1.45.jar
11
+ org/bouncycastle/bcprov-jdk15/1.45/bcprov-jdk15-1.45.jar
12
+ de/l3s/boilerpipe/boilerpipe/1.1.0/boilerpipe-1.1.0.jar
13
+ org/apache/commons/commons-compress/1.4.1/commons-compress-1.4.1.jar
14
+ dom4j/dom4j/1.6.1/dom4j-1.6.1.jar
15
+ org/apache/pdfbox/fontbox/1.7.0/fontbox-1.7.0.jar
16
+ com/ibm/icu/icu4j/49.1/icu4j-49.1.jar
17
+ com/googlecode/mp4parser/isoparser/1.0-RC-1/isoparser-1.0-RC-1.jar
18
+ jdom/jdom/1.0/jdom-1.0.jar
19
+ org/apache/pdfbox/jempbox/1.7.0/jempbox-1.7.0.jar
20
+ com/googlecode/juniversalchardet/juniversalchardet/1.0.3/juniversalchardet-1.0.3.jar
21
+ com/drewnoakes/metadata-extractor/2.4.0-beta-1/metadata-extractor-2.4.0-beta-1.jar
22
+ edu/ucar/netcdf/4.2-min/netcdf-4.2-min.jar
23
+ org/apache/pdfbox/pdfbox/1.7.0/pdfbox-1.7.0.jar
24
+ org/apache/poi/poi/3.8/poi-3.8.jar
25
+ org/apache/poi/poi-ooxml/3.8/poi-ooxml-3.8.jar
26
+ org/apache/poi/poi-ooxml-schemas/3.8/poi-ooxml-schemas-3.8.jar
27
+ org/apache/poi/poi-scratchpad/3.8/poi-scratchpad-3.8.jar
28
+ rome/rome/0.9/rome-0.9.jar
29
+ org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar
30
+ org/apache/tika/tika-core/1.2/tika-core-1.2.jar
31
+ org/apache/tika/tika-parsers/1.2/tika-parsers-1.2.jar
32
+ org/gagravarr/vorbis-java-core/0.1/vorbis-java-core-0.1.jar
33
+ org/gagravarr/vorbis-java-tika/0.1/vorbis-java-tika-0.1.jar
34
+ xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar
35
+ org/apache/xmlbeans/xmlbeans/2.3.0/xmlbeans-2.3.0.jar
36
+ org/tukaani/xz/1.0/xz-1.0.jar
37
+ org/aspectj/aspectjrt/1.8.5/aspectjrt-1.8.5.jar
38
+ )
39
+
40
+ desc 'Configure jetty with full-text indexing'
41
+ task config: :download_jars do
42
+ Rake::Task['jetty:config'].invoke
43
+ end
44
+
45
+ desc 'Download Solr full-text extraction jars'
46
+ task :download_jars do
47
+ puts "Downloading full-text jars from maven.org ..."
48
+ fulltext_dir = 'jetty/solr/lib/contrib/extraction/lib'
49
+ FileUtils.mkdir_p(fulltext_dir) unless File.directory?(fulltext_dir)
50
+ Dir.chdir(fulltext_dir) do
51
+ FULLTEXT_JARS.each do |jar|
52
+ destination = jar.split('/').last
53
+ download_from_maven(jar, destination) unless File.exists?(destination)
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+
60
+ def download_from_maven url, dst
61
+ full_url = '/remotecontent?filepath=' + url
62
+ file = File.open(dst, "wb")
63
+ endpoint = Net::HTTP.new('search.maven.org', 443)
64
+ endpoint.use_ssl = true
65
+ endpoint.start do |http|
66
+ puts "Fetching #{full_url}"
67
+ begin
68
+ http.request_get(full_url) do |resp|
69
+ resp.read_body { |segment| file.write(segment) }
70
+ end
71
+ ensure
72
+ file.close
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,13 @@
1
+ namespace :curation_concerns do
2
+ namespace :migrate do
3
+
4
+ desc "Migrate audit logs"
5
+ task audit_logs: :environment do
6
+ ChecksumAuditLog.all.each do |cs|
7
+ cs.generic_file_id = cs.generic_file_id.delete "#{CurationConcerns.config.redis_namespace}:"
8
+ cs.save
9
+ end
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require 'resque/pool/tasks'
2
+
3
+ # This provides access to the Rails env within all Resque workers
4
+ task 'resque:setup' => :environment
5
+
6
+ # Set up resque-pool
7
+ task 'resque:pool:setup' do
8
+ ActiveRecord::Base.connection.disconnect!
9
+ Resque::Pool.after_prefork do |job|
10
+ ActiveRecord::Base.establish_connection
11
+ Resque.redis.client.reconnect
12
+ end
13
+ end
@@ -0,0 +1,8 @@
1
+ namespace :curation_concerns do
2
+ namespace :solr do
3
+ desc "Enqueue a job to resolrize the repository objects"
4
+ task reindex: :environment do
5
+ CurationConcerns.queue.push(ResolrizeJob.new)
6
+ end
7
+ end
8
+ end
metadata ADDED
@@ -0,0 +1,282 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: curation_concerns-models
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Justin Coyne
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-08-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: active_attr
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: nest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: hydra-collections
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 6.0.0.alpha
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 6.0.0.alpha
55
+ - !ruby/object:Gem::Dependency
56
+ name: hydra-head
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 9.2.2
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 9.2.2
69
+ - !ruby/object:Gem::Dependency
70
+ name: hydra-works
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.1'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: active-fedora
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 9.3.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 9.3.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: active_fedora-noid
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 1.0.2
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 1.0.2
111
+ - !ruby/object:Gem::Dependency
112
+ name: resque
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.23'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.23'
125
+ - !ruby/object:Gem::Dependency
126
+ name: resque-pool
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.3'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.3'
139
+ - !ruby/object:Gem::Dependency
140
+ name: bundler
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '1.6'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.6'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rake
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ description: An extensible repository data-model with works and and many attached
168
+ files
169
+ email:
170
+ - justin@curationexperts.com
171
+ executables: []
172
+ extensions: []
173
+ extra_rdoc_files: []
174
+ files:
175
+ - ".gitignore"
176
+ - Gemfile
177
+ - LICENSE.md
178
+ - README.md
179
+ - Rakefile
180
+ - app/actors/concerns/curation_concerns/manages_embargoes_actor.rb
181
+ - app/actors/curation_concerns/base_actor.rb
182
+ - app/actors/curation_concerns/generic_file_actor.rb
183
+ - app/actors/curation_concerns/work_actor_behavior.rb
184
+ - app/jobs/active_fedora_id_based_job.rb
185
+ - app/jobs/active_fedora_pid_based_job.rb
186
+ - app/jobs/audit_job.rb
187
+ - app/jobs/characterize_job.rb
188
+ - app/jobs/copy_permissions_job.rb
189
+ - app/jobs/create_derivatives_job.rb
190
+ - app/jobs/import_url_job.rb
191
+ - app/jobs/ingest_local_file_job.rb
192
+ - app/jobs/resolrize_job.rb
193
+ - app/models/checksum_audit_log.rb
194
+ - app/models/concerns/curation_concerns/ability.rb
195
+ - app/models/concerns/curation_concerns/basic_metadata.rb
196
+ - app/models/concerns/curation_concerns/collection_behavior.rb
197
+ - app/models/concerns/curation_concerns/generic_file.rb
198
+ - app/models/concerns/curation_concerns/generic_file/belongs_to_works.rb
199
+ - app/models/concerns/curation_concerns/generic_file/characterization.rb
200
+ - app/models/concerns/curation_concerns/generic_file/content.rb
201
+ - app/models/concerns/curation_concerns/generic_file/export.rb
202
+ - app/models/concerns/curation_concerns/generic_file/full_text_indexing.rb
203
+ - app/models/concerns/curation_concerns/generic_file/indexing.rb
204
+ - app/models/concerns/curation_concerns/generic_file/versions.rb
205
+ - app/models/concerns/curation_concerns/generic_file_behavior.rb
206
+ - app/models/concerns/curation_concerns/generic_work_behavior.rb
207
+ - app/models/concerns/curation_concerns/has_representative.rb
208
+ - app/models/concerns/curation_concerns/human_readable_type.rb
209
+ - app/models/concerns/curation_concerns/permissions.rb
210
+ - app/models/concerns/curation_concerns/permissions/readable.rb
211
+ - app/models/concerns/curation_concerns/permissions/writable.rb
212
+ - app/models/concerns/curation_concerns/serializers.rb
213
+ - app/models/concerns/curation_concerns/solr_document_behavior.rb
214
+ - app/models/concerns/curation_concerns/user.rb
215
+ - app/models/concerns/curation_concerns/with_basic_metadata.rb
216
+ - app/models/concerns/curation_concerns/with_generic_files.rb
217
+ - app/models/curation_concerns/classify_concern.rb
218
+ - app/models/curation_concerns/quick_classification_query.rb
219
+ - app/models/datastreams/fits_datastream.rb
220
+ - app/models/version_committer.rb
221
+ - app/services/curation_concerns/characterization_service.rb
222
+ - app/services/curation_concerns/full_text_extraction_service.rb
223
+ - app/services/curation_concerns/generic_file_audit_service.rb
224
+ - app/services/curation_concerns/generic_file_indexing_service.rb
225
+ - app/services/curation_concerns/generic_work_indexing_service.rb
226
+ - app/services/curation_concerns/noid.rb
227
+ - app/services/curation_concerns/repository_audit_service.rb
228
+ - app/services/curation_concerns/versioning_service.rb
229
+ - config/locales/curation_concerns.en.yml
230
+ - curation_concerns-models.gemspec
231
+ - lib/curation_concerns/messages.rb
232
+ - lib/curation_concerns/models.rb
233
+ - lib/curation_concerns/models/engine.rb
234
+ - lib/curation_concerns/models/resque.rb
235
+ - lib/curation_concerns/models/utils.rb
236
+ - lib/curation_concerns/models/version.rb
237
+ - lib/generators/curation_concerns/models/abstract_migration_generator.rb
238
+ - lib/generators/curation_concerns/models/clamav_generator.rb
239
+ - lib/generators/curation_concerns/models/fulltext_generator.rb
240
+ - lib/generators/curation_concerns/models/install_generator.rb
241
+ - lib/generators/curation_concerns/models/templates/app/models/collection.rb
242
+ - lib/generators/curation_concerns/models/templates/app/models/generic_file.rb
243
+ - lib/generators/curation_concerns/models/templates/config/clamav.rb
244
+ - lib/generators/curation_concerns/models/templates/config/curation_concerns.rb
245
+ - lib/generators/curation_concerns/models/templates/config/mime_types.rb
246
+ - lib/generators/curation_concerns/models/templates/config/redis.yml
247
+ - lib/generators/curation_concerns/models/templates/config/redis_config.rb
248
+ - lib/generators/curation_concerns/models/templates/config/resque-pool.yml
249
+ - lib/generators/curation_concerns/models/templates/config/resque_admin.rb
250
+ - lib/generators/curation_concerns/models/templates/config/resque_config.rb
251
+ - lib/generators/curation_concerns/models/templates/migrations/create_checksum_audit_logs.rb
252
+ - lib/generators/curation_concerns/models/templates/migrations/create_version_committers.rb
253
+ - lib/tasks/curation_concerns-models_tasks.rake
254
+ - lib/tasks/migrate.rake
255
+ - lib/tasks/resque.rake
256
+ - lib/tasks/solr_reindex.rake
257
+ homepage: ''
258
+ licenses:
259
+ - APACHE2
260
+ metadata: {}
261
+ post_install_message:
262
+ rdoc_options: []
263
+ require_paths:
264
+ - lib
265
+ required_ruby_version: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - ">="
268
+ - !ruby/object:Gem::Version
269
+ version: '0'
270
+ required_rubygems_version: !ruby/object:Gem::Requirement
271
+ requirements:
272
+ - - ">="
273
+ - !ruby/object:Gem::Version
274
+ version: '0'
275
+ requirements: []
276
+ rubyforge_project:
277
+ rubygems_version: 2.4.5
278
+ signing_key:
279
+ specification_version: 4
280
+ summary: Simple institutional repository models for Hydra
281
+ test_files: []
282
+ has_rdoc: