fcrepo_admin 0.1.0

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 (96) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +1 -0
  4. data/Gemfile +5 -0
  5. data/LICENSE +27 -0
  6. data/README.rdoc +75 -0
  7. data/Rakefile +22 -0
  8. data/app/controllers/fcrepo_admin/audit_trail_controller.rb +17 -0
  9. data/app/controllers/fcrepo_admin/datastreams_controller.rb +29 -0
  10. data/app/controllers/fcrepo_admin/objects_controller.rb +14 -0
  11. data/app/helpers/application_helper.rb +2 -0
  12. data/app/mailers/.gitkeep +0 -0
  13. data/app/models/.gitkeep +0 -0
  14. data/app/views/fcrepo_admin/audit_trail/index.html.erb +34 -0
  15. data/app/views/fcrepo_admin/catalog/_datastreams.html.erb +19 -0
  16. data/app/views/fcrepo_admin/catalog/_show.html.erb +2 -0
  17. data/app/views/fcrepo_admin/datastreams/_content.html.erb +12 -0
  18. data/app/views/fcrepo_admin/datastreams/_datastreams.html +18 -0
  19. data/app/views/fcrepo_admin/datastreams/_profile.html.erb +10 -0
  20. data/app/views/fcrepo_admin/datastreams/index.html.erb +4 -0
  21. data/app/views/fcrepo_admin/datastreams/show.html.erb +22 -0
  22. data/app/views/fcrepo_admin/objects/_more_info.html.erb +6 -0
  23. data/app/views/fcrepo_admin/objects/_properties.html.erb +8 -0
  24. data/app/views/fcrepo_admin/objects/show.html.erb +18 -0
  25. data/config/locales/fcrepo_admin.en.yml +55 -0
  26. data/config/routes.rb +14 -0
  27. data/doc/README_FOR_APP +2 -0
  28. data/fcrepo_admin.gemspec +42 -0
  29. data/lib/assets/.gitkeep +0 -0
  30. data/lib/assets/stylesheets/fcrepo_admin/fcrepo_admin.css +4 -0
  31. data/lib/fcrepo_admin.rb +8 -0
  32. data/lib/fcrepo_admin/controller_behavior.rb +10 -0
  33. data/lib/fcrepo_admin/engine.rb +12 -0
  34. data/lib/fcrepo_admin/solr_document_extension.rb +49 -0
  35. data/lib/fcrepo_admin/version.rb +3 -0
  36. data/lib/tasks/.gitkeep +0 -0
  37. data/lib/tasks/fcrepo_admin.rake +24 -0
  38. data/script/rails +6 -0
  39. data/spec/controllers/audit_trail_controller_spec.rb +20 -0
  40. data/spec/controllers/datastreams_controller_spec.rb +21 -0
  41. data/spec/factories/fcrepo_admin_factories.rb +20 -0
  42. data/spec/factories/user_factories.rb +8 -0
  43. data/spec/features/audit_trail/index.html.erb_spec.rb +11 -0
  44. data/spec/features/catalog/show.html.erb_spec.rb +21 -0
  45. data/spec/features/datastreams/show.html.erb_spec.rb +31 -0
  46. data/spec/features/objects/show.html.erb_spec.rb +29 -0
  47. data/spec/fixtures/auditable.foxml.xml +110 -0
  48. data/spec/internal/README.rdoc +261 -0
  49. data/spec/internal/Rakefile +7 -0
  50. data/spec/internal/app/assets/javascripts/application.js +16 -0
  51. data/spec/internal/app/assets/stylesheets/application.css +13 -0
  52. data/spec/internal/app/assets/stylesheets/blacklight.css.scss +3 -0
  53. data/spec/internal/app/controllers/application_controller.rb +11 -0
  54. data/spec/internal/app/controllers/catalog_controller.rb +169 -0
  55. data/spec/internal/app/helpers/application_helper.rb +2 -0
  56. data/spec/internal/app/mailers/.gitkeep +0 -0
  57. data/spec/internal/app/models/.gitkeep +0 -0
  58. data/spec/internal/app/models/ability.rb +4 -0
  59. data/spec/internal/app/models/content_model.rb +12 -0
  60. data/spec/internal/app/models/solr_document.rb +36 -0
  61. data/spec/internal/app/models/user.rb +26 -0
  62. data/spec/internal/app/views/catalog/_show_default.html.erb +12 -0
  63. data/spec/internal/app/views/layouts/application.html.erb +14 -0
  64. data/spec/internal/config.ru +4 -0
  65. data/spec/internal/config/application.rb +59 -0
  66. data/spec/internal/config/boot.rb +10 -0
  67. data/spec/internal/config/database.yml +25 -0
  68. data/spec/internal/config/environment.rb +5 -0
  69. data/spec/internal/config/environments/development.rb +37 -0
  70. data/spec/internal/config/environments/production.rb +67 -0
  71. data/spec/internal/config/environments/test.rb +37 -0
  72. data/spec/internal/config/fedora.yml +12 -0
  73. data/spec/internal/config/initializers/backtrace_silencers.rb +7 -0
  74. data/spec/internal/config/initializers/devise.rb +240 -0
  75. data/spec/internal/config/initializers/hydra_config.rb +34 -0
  76. data/spec/internal/config/initializers/inflections.rb +15 -0
  77. data/spec/internal/config/initializers/mime_types.rb +12 -0
  78. data/spec/internal/config/initializers/secret_token.rb +7 -0
  79. data/spec/internal/config/initializers/session_store.rb +8 -0
  80. data/spec/internal/config/initializers/wrap_parameters.rb +14 -0
  81. data/spec/internal/config/locales/devise.en.yml +59 -0
  82. data/spec/internal/config/locales/en.yml +5 -0
  83. data/spec/internal/config/role_map_development.yml +6 -0
  84. data/spec/internal/config/role_map_test.yml +6 -0
  85. data/spec/internal/config/routes.rb +6 -0
  86. data/spec/internal/config/solr.yml +6 -0
  87. data/spec/internal/db/schema.rb +57 -0
  88. data/spec/internal/lib/assets/.gitkeep +0 -0
  89. data/spec/internal/log/.gitkeep +0 -0
  90. data/spec/internal/public/404.html +26 -0
  91. data/spec/internal/public/422.html +26 -0
  92. data/spec/internal/public/500.html +25 -0
  93. data/spec/internal/public/favicon.ico +0 -0
  94. data/spec/internal/script/rails +6 -0
  95. data/spec/spec_helper.rb +45 -0
  96. metadata +397 -0
data/config/routes.rb ADDED
@@ -0,0 +1,14 @@
1
+ FcrepoAdmin::Engine.routes.draw do
2
+
3
+ scope :module => "fcrepo_admin" do
4
+ resources :objects, :only => :show do
5
+ resources :datastreams, :only => [:index, :show] do
6
+ member do
7
+ get 'download'
8
+ end
9
+ end
10
+ resources :audit_trail, :only => :index
11
+ end
12
+ end
13
+
14
+ end
@@ -0,0 +1,2 @@
1
+ Use this README file to introduce your application and point to useful places in the API for learning more.
2
+ Run "rake doc:app" to generate API documentation for your models, controllers, helpers, and libraries.
@@ -0,0 +1,42 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+
3
+ # Maintain your gem's version:
4
+ require "fcrepo_admin/version"
5
+
6
+ # Describe your gem and declare its dependencies:
7
+ Gem::Specification.new do |s|
8
+ s.name = "fcrepo_admin"
9
+ s.version = FcrepoAdmin::VERSION
10
+ s.platform = Gem::Platform::RUBY
11
+ s.authors = ["David Chandek-Stark", "Jim Coble", "Chris Beer", "Justin Coyne"]
12
+ s.email = ["hydra-tech@googlegroups.com"]
13
+ s.homepage = "http://projecthydra.org"
14
+ s.summary = "Hydra-based Fedora Commons repository admin tool."
15
+ s.description = "A Rails engine for administrative access to a Fedora Commons repository based on the Hydra Project repository application framework."
16
+ s.license = "BSD Simplified"
17
+
18
+ s.required_ruby_version = '>= 1.9.3'
19
+
20
+ s.files = `git ls-files`.split("\n")
21
+ s.test_files = `git ls-files -- spec/*`.split("\n")
22
+
23
+ s.extra_rdoc_files = ["LICENSE", "README.rdoc"]
24
+
25
+ s.require_paths = ["lib"]
26
+
27
+ s.add_dependency "hydra-head", "6.0.0"
28
+ s.add_dependency "blacklight"
29
+ s.add_dependency "rails", "~> 3.2"
30
+ s.add_dependency "mime-types", '~> 1.19'
31
+
32
+ s.add_development_dependency "devise"
33
+ s.add_development_dependency "rspec"
34
+ s.add_development_dependency "rspec-rails"
35
+ s.add_development_dependency "capybara"
36
+ s.add_development_dependency "sqlite3"
37
+ s.add_development_dependency "factory_girl_rails"
38
+ s.add_development_dependency "jettywrapper"
39
+ s.add_development_dependency "jquery-rails"
40
+ s.add_development_dependency "sass-rails"
41
+ s.add_development_dependency "bootstrap-sass"
42
+ end
File without changes
@@ -0,0 +1,4 @@
1
+ #fcrepo-admin-dsprofile {
2
+ /* datastream profile table */
3
+ width: 40em;
4
+ }
@@ -0,0 +1,8 @@
1
+ require 'fcrepo_admin/engine'
2
+ require 'blacklight'
3
+ require 'hydra/head'
4
+
5
+ module FcrepoAdmin
6
+ autoload :SolrDocumentExtension, 'fcrepo_admin/solr_document_extension'
7
+ autoload :ControllerBehavior, 'fcrepo_admin/controller_behavior'
8
+ end
@@ -0,0 +1,10 @@
1
+ module FcrepoAdmin
2
+ module ControllerBehavior
3
+
4
+ def load_and_authz_object
5
+ @object = ActiveFedora::Base.find(params[:object_id], :cast => true)
6
+ authorize! :read, @object
7
+ end
8
+
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ module FcrepoAdmin
2
+ class Engine < ::Rails::Engine
3
+
4
+ config.generators do |g|
5
+ g.test_framework :rspec, :fixture => false
6
+ g.fixture_replacement :factory_girl, :dir => 'spec/factories'
7
+ g.assets false
8
+ g.helper false
9
+ end
10
+
11
+ end
12
+ end
@@ -0,0 +1,49 @@
1
+ require 'json'
2
+
3
+ module FcrepoAdmin
4
+ module SolrDocumentExtension
5
+
6
+ def object_profile
7
+ @object_profile ||= JSON.parse(self[ActiveFedora::Base.profile_solr_name].first)
8
+ end
9
+
10
+ def datastreams
11
+ object_profile["datastreams"]
12
+ end
13
+
14
+ def has_datastream?(dsID)
15
+ !datastreams[dsID].blank?
16
+ end
17
+
18
+ def has_admin_policy?
19
+ !admin_policy_uri.blank?
20
+ end
21
+
22
+ def admin_policy_uri
23
+ get ActiveFedora::SolrService.solr_name('is_governed_by', :symbol)
24
+ end
25
+
26
+ def admin_policy_pid
27
+ uri = admin_policy_uri
28
+ uri &&= ActiveFedora::Base.pids_from_uris(uri)
29
+ end
30
+
31
+ def has_parent?
32
+ !parent_uri
33
+ end
34
+
35
+ def parent_uri
36
+ get(ActiveFedora::SolrService.solr_name('is_part_of', :symbol)) || get(ActiveFedora::SolrService.solr_name('is_member_of', :symbol)) || get(ActiveFedora::SolrService.solr_name('is_member_of_collection', :symbol))
37
+ end
38
+
39
+ def parent_pid
40
+ uri = parent_uri
41
+ uri &&= ActiveFedora::Base.pids_from_uris(uri)
42
+ end
43
+
44
+ def active_fedora_model
45
+ get(ActiveFedora::SolrService.solr_name('active_fedora_model', :symbol))
46
+ end
47
+
48
+ end
49
+ end
@@ -0,0 +1,3 @@
1
+ module FcrepoAdmin
2
+ VERSION = "0.1.0"
3
+ end
File without changes
@@ -0,0 +1,24 @@
1
+ namespace :fcrepo_admin do
2
+ namespace :solr do
3
+ desc "Deletes everything from the Solr index"
4
+ task :clean => :environment do
5
+ Blacklight.solr.delete_by_query("*:*")
6
+ Blacklight.solr.commit
7
+ end
8
+ desc "Index a single object in solr specified by PID="
9
+ task :index => :environment do
10
+ raise "Must specify a pid. Ex: PID=changeme:12" unless ENV['PID']
11
+ ActiveFedora::Base.connection_for_pid('foo:1') # Loads Rubydora connection with fake object
12
+ ActiveFedora::Base.find(ENV['PID'], cast: true).update_index
13
+ end
14
+ desc 'Index all objects in the repository (except fedora-system: objects).'
15
+ task :index_all => :environment do
16
+ ActiveFedora::Base.connection_for_pid('foo:1') # Loads Rubydora connection with fake object
17
+ ActiveFedora::Base.fedora_connection[0].connection.search(nil) do |object|
18
+ if !object.pid.starts_with?('fedora-system:')
19
+ ActiveFedora::Base.find(object.pid, cast: true).update_index
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
data/script/rails ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe FcrepoAdmin::AuditTrailController do
4
+ context "#index" do
5
+ let(:object) { FactoryGirl.create(:content_model) }
6
+ after { object.delete }
7
+ it "should render the index template" do
8
+ get :index, :object_id => object, :use_route => 'fcrepo_admin'
9
+ response.should render_template(:index)
10
+ end
11
+ end
12
+ context "#index?download=true" do
13
+ context "object does not respond to audit_trail" do
14
+ subject { get :index, :object_id => object, :download => 'true', :use_route => 'fcrepo_admin' }
15
+ let(:object) { FactoryGirl.create(:content_model) }
16
+ after { object.delete }
17
+ its(:response_code) { should eq(200) }
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ shared_examples "a datastream profile view" do
4
+ it { should render_template(:show) }
5
+ end
6
+
7
+ describe FcrepoAdmin::DatastreamsController do
8
+ after { object.delete }
9
+ context "#show" do
10
+ let(:object) { FactoryGirl.create(:content_model) }
11
+ let(:dsid) { "DC" }
12
+ context "profile information" do
13
+ subject { get :show, :object_id => object, :id => dsid, :use_route => 'fcrepo_admin' }
14
+ it { should render_template(:show) }
15
+ end
16
+ context "download content" do
17
+ subject { get :show, :object_id => object, :id => dsid, :download => 'true', :use_route => 'fcrepo_admin' }
18
+ it { should be_successful }
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ FactoryGirl.define do
2
+
3
+ factory :admin_policy do
4
+ title "Test APO"
5
+ permissions [{type: 'group', name: 'public', access: 'read'}]
6
+ default_permissions [{type: 'group', name: 'public', access: 'read'}]
7
+ end
8
+
9
+ factory :content_model do
10
+ title "Test Object"
11
+ permissions [{type: 'group', name: 'public', access: 'read'}]
12
+
13
+ trait :has_apo do
14
+ admin_policy
15
+ end
16
+
17
+ factory :content_model_has_apo, :traits => [:has_apo]
18
+ end
19
+
20
+ end
@@ -0,0 +1,8 @@
1
+ FactoryGirl.define do
2
+
3
+ factory :user do
4
+ sequence(:email) { |n| "person#{n}@example.com" }
5
+ password 'b1gSecret'
6
+ end
7
+
8
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe "audit_trail/index.html.erb" do
4
+ let(:object) { FactoryGirl.create(:content_model) }
5
+ after { object.delete }
6
+ it "should display the audit trail" do
7
+ visit fcrepo_admin.object_audit_trail_index_path(object)
8
+ page.should have_content(object.pid)
9
+ page.should have_link(I18n.t("fcrepo_admin.audit_trail.download"), :href => "#{fcrepo_admin.object_audit_trail_index_path(object)}?download=true")
10
+ end
11
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe "catalog/show.html.erb" do
4
+ after { object.delete }
5
+ context "basic object" do
6
+ let(:object) { FactoryGirl.create(:content_model) }
7
+ it "should link to all datastreams" do
8
+ visit catalog_path(object)
9
+ object.datastreams.reject { |dsid, ds| ds.profile.empty? }.each_key do |dsid|
10
+ page.should have_link(dsid, :href => fcrepo_admin.object_datastream_path(object, dsid))
11
+ end
12
+ end
13
+ it "should link to its audit trail" do
14
+ visit catalog_path(object)
15
+ page.should have_link(I18n.t("fcrepo_admin.audit_trail.title"))
16
+ end
17
+ end
18
+ context "object has admin policy" do
19
+ it "should link to the APO"
20
+ end
21
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ shared_examples "a datastream show page" do
4
+ it "should display all attributes of the datastream profile" do
5
+ object.datastreams[dsid].profile.each do |key, value|
6
+ expect(subject).to have_content(I18n.t("fcrepo_admin.datastream.profile.#{key}"))
7
+ expect(subject).to have_content(value)
8
+ end
9
+ end
10
+ it "should have a link to download the datastream content" do
11
+ expect(subject).to have_link(I18n.t("fcrepo_admin.datastream.download"), :href => fcrepo_admin.download_object_datastream_path(object, dsid))
12
+ end
13
+ end
14
+
15
+ shared_examples "an object having datastream show pages" do
16
+ it_behaves_like "a datastream show page" do
17
+ let(:dsid) { "DC" }
18
+ end
19
+ it_behaves_like "a datastream show page" do
20
+ let(:dsid) { "RELS-EXT" }
21
+ end
22
+ end
23
+
24
+ describe "datastreams/show.html.erb" do
25
+ subject { page }
26
+ before { visit fcrepo_admin.object_datastream_path(object, dsid) }
27
+ after { object.delete }
28
+ it_behaves_like "an object having datastream show pages" do
29
+ let(:object) { FactoryGirl.create(:content_model) }
30
+ end
31
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe "objects/show.html.erb" do
4
+ after { object.delete }
5
+ context "basic object" do
6
+ let(:object) { FactoryGirl.create(:content_model) }
7
+ it "should display the object's properties" do
8
+ visit fcrepo_admin.object_path(object)
9
+ page.should have_content(I18n.t("fcrepo_admin.object.properties.keys.state"))
10
+ page.should have_content(I18n.t("fcrepo_admin.object.properties.keys.create_date"))
11
+ page.should have_content(I18n.t("fcrepo_admin.object.properties.keys.modified_date"))
12
+ page.should have_content(I18n.t("fcrepo_admin.object.properties.keys.owner_id"))
13
+ page.should have_content(I18n.t("fcrepo_admin.object.properties.keys.label"))
14
+ end
15
+ it "should link to all datastreams" do
16
+ visit fcrepo_admin.object_path(object)
17
+ object.datastreams.reject { |dsid, ds| ds.profile.empty? }.each_key do |dsid|
18
+ page.should have_link(dsid, :href => fcrepo_admin.object_datastream_path(object, dsid))
19
+ end
20
+ end
21
+ it "should link to its audit trail" do
22
+ visit fcrepo_admin.object_path(object)
23
+ page.should have_link(I18n.t("fcrepo_admin.audit_trail.title"), :href => fcrepo_admin.object_audit_trail_index_path(object))
24
+ end
25
+ context "object governed by an admin policy" do
26
+ it "should link to the APO"
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,110 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <foxml:digitalObject VERSION="1.1" PID="changeme:242"
3
+ xmlns:foxml="info:fedora/fedora-system:def/foxml#"
4
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
+ xsi:schemaLocation="info:fedora/fedora-system:def/foxml# http://www.fedora.info/definitions/1/0/foxml1-1.xsd">
6
+ <foxml:objectProperties>
7
+ <foxml:property NAME="info:fedora/fedora-system:def/model#state" VALUE="Active"/>
8
+ <foxml:property NAME="info:fedora/fedora-system:def/model#label" VALUE=""/>
9
+ <foxml:property NAME="info:fedora/fedora-system:def/model#ownerId" VALUE="fedoraAdmin"/>
10
+ <foxml:property NAME="info:fedora/fedora-system:def/model#createdDate" VALUE="2013-02-25T16:43:05.802Z"/>
11
+ <foxml:property NAME="info:fedora/fedora-system:def/view#lastModifiedDate" VALUE="2013-02-25T16:43:06.379Z"/>
12
+ </foxml:objectProperties>
13
+ <foxml:datastream ID="AUDIT" STATE="A" CONTROL_GROUP="X" VERSIONABLE="false">
14
+ <foxml:datastreamVersion ID="AUDIT.0" LABEL="Audit Trail for this object" CREATED="2013-02-25T16:43:05.802Z" MIMETYPE="text/xml" FORMAT_URI="info:fedora/fedora-system:format/xml.fedora.audit">
15
+ <foxml:xmlContent>
16
+ <audit:auditTrail xmlns:audit="info:fedora/fedora-system:def/audit#">
17
+ <audit:record ID="AUDREC1">
18
+ <audit:process type="Fedora API-M"/>
19
+ <audit:action>addDatastream</audit:action>
20
+ <audit:componentID>RELS-EXT</audit:componentID>
21
+ <audit:responsibility>fedoraAdmin</audit:responsibility>
22
+ <audit:date>2013-02-25T16:43:06.219Z</audit:date>
23
+ <audit:justification></audit:justification>
24
+ </audit:record>
25
+ <audit:record ID="AUDREC2">
26
+ <audit:process type="Fedora API-M"/>
27
+ <audit:action>addDatastream</audit:action>
28
+ <audit:componentID>descMetadata</audit:componentID>
29
+ <audit:responsibility>fedoraAdmin</audit:responsibility>
30
+ <audit:date>2013-02-25T16:43:06.315Z</audit:date>
31
+ <audit:justification></audit:justification>
32
+ </audit:record>
33
+ <audit:record ID="AUDREC3">
34
+ <audit:process type="Fedora API-M"/>
35
+ <audit:action>addDatastream</audit:action>
36
+ <audit:componentID>rightsMetadata</audit:componentID>
37
+ <audit:responsibility>fedoraAdmin</audit:responsibility>
38
+ <audit:date>2013-02-25T16:43:06.379Z</audit:date>
39
+ <audit:justification></audit:justification>
40
+ </audit:record>
41
+ </audit:auditTrail>
42
+ </foxml:xmlContent>
43
+ </foxml:datastreamVersion>
44
+ </foxml:datastream>
45
+ <foxml:datastream ID="DC" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
46
+ <foxml:datastreamVersion ID="DC1.0" LABEL="Dublin Core Record for this object" CREATED="2013-02-25T16:43:05.802Z" MIMETYPE="text/xml" FORMAT_URI="http://www.openarchives.org/OAI/2.0/oai_dc/" SIZE="341">
47
+ <foxml:contentDigest TYPE="SHA-256" DIGEST="eb075bf6da5903e54464631dc998f66f95bffde9f4137132796457d31de5cd44"/>
48
+ <foxml:xmlContent>
49
+ <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
50
+ <dc:identifier>changeme:242</dc:identifier>
51
+ </oai_dc:dc>
52
+ </foxml:xmlContent>
53
+ </foxml:datastreamVersion>
54
+ </foxml:datastream>
55
+ <foxml:datastream ID="RELS-EXT" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
56
+ <foxml:datastreamVersion ID="RELS-EXT.0" LABEL="Fedora Object-to-Object Relationship Metadata" CREATED="2013-02-25T16:43:06.219Z" MIMETYPE="application/rdf+xml" SIZE="284">
57
+ <foxml:contentDigest TYPE="SHA-256" DIGEST="013d2229de7bd91c61256563eff1b475cd1e8f7e45a2f15de5a36f2d20ec2852"/>
58
+ <foxml:xmlContent>
59
+ <rdf:RDF xmlns:ns0="info:fedora/fedora-system:def/model#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
60
+ <rdf:Description rdf:about="info:fedora/changeme:242">
61
+ <ns0:hasModel rdf:resource="info:fedora/afmodel:TestModel"></ns0:hasModel>
62
+ </rdf:Description>
63
+ </rdf:RDF>
64
+ </foxml:xmlContent>
65
+ </foxml:datastreamVersion>
66
+ </foxml:datastream>
67
+ <foxml:datastream ID="descMetadata" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
68
+ <foxml:datastreamVersion ID="descMetadata.0" LABEL="" CREATED="2013-02-25T16:43:06.315Z" MIMETYPE="text/xml" SIZE="215">
69
+ <foxml:contentDigest TYPE="SHA-256" DIGEST="3f588eca58dea77b31c9ed0b90e4560288a419856c4bb744fab9c7fe8749ad19"/>
70
+ <foxml:xmlContent>
71
+ <dc xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
72
+ <dcterms:title>Fcrepo Test Object</dcterms:title>
73
+ <dcterms:identifier>test00001</dcterms:identifier>
74
+ </dc>
75
+ </foxml:xmlContent>
76
+ </foxml:datastreamVersion>
77
+ </foxml:datastream>
78
+ <foxml:datastream ID="rightsMetadata" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
79
+ <foxml:datastreamVersion ID="rightsMetadata.0" LABEL="" CREATED="2013-02-25T16:43:06.379Z" MIMETYPE="text/xml" SIZE="596">
80
+ <foxml:contentDigest TYPE="SHA-256" DIGEST="472f8634b31bd425dadd9206531ab02a70c08c22e4250bb2b0d3dd0314cfb240"/>
81
+ <foxml:xmlContent>
82
+ <rightsMetadata xmlns="http://hydra-collab.stanford.edu/schemas/rightsMetadata/v1" version="0.1">
83
+ <copyright>
84
+ <human type="title"></human>
85
+ <human type="description"></human>
86
+ <machine type="uri"></machine>
87
+ </copyright>
88
+ <access type="discover">
89
+ <human></human>
90
+ <machine></machine>
91
+ </access>
92
+ <access type="read">
93
+ <human></human>
94
+ <machine>
95
+ <group>public</group>
96
+ </machine>
97
+ </access>
98
+ <access type="edit">
99
+ <human></human>
100
+ <machine></machine>
101
+ </access>
102
+ <embargo>
103
+ <human></human>
104
+ <machine></machine>
105
+ </embargo>
106
+ </rightsMetadata>
107
+ </foxml:xmlContent>
108
+ </foxml:datastreamVersion>
109
+ </foxml:datastream>
110
+ </foxml:digitalObject>