bplmodels 0.0.91
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.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +0 -0
- data/Rakefile +40 -0
- data/app/assets/javascripts/bplmodels/application.js +15 -0
- data/app/assets/stylesheets/bplmodels/application.css +13 -0
- data/app/controllers/bplmodels/application_controller.rb +4 -0
- data/app/helpers/bplmodels/application_helper.rb +4 -0
- data/app/models/bplmodels/audio_file.rb +14 -0
- data/app/models/bplmodels/book.rb +35 -0
- data/app/models/bplmodels/card.rb +35 -0
- data/app/models/bplmodels/characterization.rb +92 -0
- data/app/models/bplmodels/collection.rb +118 -0
- data/app/models/bplmodels/complex_object_base.rb +24 -0
- data/app/models/bplmodels/correspondence.rb +35 -0
- data/app/models/bplmodels/document.rb +35 -0
- data/app/models/bplmodels/document_file.rb +8 -0
- data/app/models/bplmodels/ephemera.rb +35 -0
- data/app/models/bplmodels/file.rb +151 -0
- data/app/models/bplmodels/file_content_datastream.rb +10 -0
- data/app/models/bplmodels/fits_datastream.rb +190 -0
- data/app/models/bplmodels/image.rb +14 -0
- data/app/models/bplmodels/image_file.rb +18 -0
- data/app/models/bplmodels/institution.rb +159 -0
- data/app/models/bplmodels/manuscript.rb +34 -0
- data/app/models/bplmodels/map.rb +34 -0
- data/app/models/bplmodels/mods_desc_metadata.rb +1826 -0
- data/app/models/bplmodels/musical_notation.rb +34 -0
- data/app/models/bplmodels/newspaper.rb +15 -0
- data/app/models/bplmodels/nom_terminology.rb +1242 -0
- data/app/models/bplmodels/non_photographic_print.rb +34 -0
- data/app/models/bplmodels/oai_collection.rb +19 -0
- data/app/models/bplmodels/oai_metadata.rb +75 -0
- data/app/models/bplmodels/oai_object.rb +45 -0
- data/app/models/bplmodels/object.rb +36 -0
- data/app/models/bplmodels/object_base.rb +1241 -0
- data/app/models/bplmodels/objects/collection.rb~ +28 -0
- data/app/models/bplmodels/objects/image.rb~ +59 -0
- data/app/models/bplmodels/objects/postcard.rb~ +56 -0
- data/app/models/bplmodels/organizational_set.rb +25 -0
- data/app/models/bplmodels/periodical.rb +37 -0
- data/app/models/bplmodels/photographic_print.rb +34 -0
- data/app/models/bplmodels/relation_base.rb +99 -0
- data/app/models/bplmodels/scrapbook.rb +35 -0
- data/app/models/bplmodels/simple_object_base.rb +27 -0
- data/app/models/bplmodels/sound_recording.rb +15 -0
- data/app/models/bplmodels/system_collection.rb +8 -0
- data/app/models/bplmodels/uploads_set.rb +3 -0
- data/app/models/bplmodels/workflow_metadata.rb +99 -0
- data/app/views/layouts/bplmodels/application.html.erb +14 -0
- data/config/application.rb +6 -0
- data/config/predicate_mappings.yml +61 -0
- data/config/routes.rb +2 -0
- data/lib/bplmodels.rb +21 -0
- data/lib/bplmodels/constants.rb +119 -0
- data/lib/bplmodels/datastream_input_funcs.rb +949 -0
- data/lib/bplmodels/engine.rb +5 -0
- data/lib/bplmodels/engine.rb~ +5 -0
- data/lib/bplmodels/finder.rb +192 -0
- data/lib/bplmodels/object_funcs.rb +10 -0
- data/lib/bplmodels/version.rb +3 -0
- data/lib/tasks/bplmodels_tasks.rake +4 -0
- data/test/bplmodels_test.rb +7 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/test_helper.rb +15 -0
- metadata +234 -0
@@ -0,0 +1,28 @@
|
|
1
|
+
module Bplmodels
|
2
|
+
class Collection < ActiveFedora::Base
|
3
|
+
include Hydra::ModelMixins::CommonMetadata
|
4
|
+
include Hydra::ModelMethods
|
5
|
+
include ActiveFedora::Relationships
|
6
|
+
|
7
|
+
#has_relationship "similar_audio", :has_part, :type=>AudioRecord
|
8
|
+
|
9
|
+
has_metadata :name => "descMetadata", :type => ModsDescMetadata
|
10
|
+
|
11
|
+
delegate :title, :to=>'descMetadata', :at => [:mods, :titleInfo, :title], :unique=>true
|
12
|
+
delegate :abstract, :to => "descMetadata"
|
13
|
+
delegate :url, :to=>'descMetadata', :at => [:relatedItem, :location, :url], :unique=>true
|
14
|
+
delegate :description, :to=>'descMetadata', :at => [:abstract], :unique=>true
|
15
|
+
delegate :location, :to=>'descMetadata', :at => [:relatedItem, :location, :physicalLocation], :unique=>true
|
16
|
+
delegate :identifier_accession, :to=>'descMetadata', :at => [:identifier_accession], :unique=>true
|
17
|
+
delegate :identifier_barcode, :to=>'descMetadata', :at => [:identifier_barcode], :unique=>true
|
18
|
+
delegate :identifier_bpldc, :to=>'descMetadata', :at => [:identifier_bpldc], :unique=>true
|
19
|
+
delegate :identifier_other, :to=>'descMetadata', :at => [:identifier_other], :unique=>true
|
20
|
+
|
21
|
+
def apply_default_permissions
|
22
|
+
self.datastreams["rightsMetadata"].update_permissions( "group"=>{"Repository Administrators"=>"edit"} )
|
23
|
+
self.datastreams["rightsMetadata"].update_permissions( "group"=>{"Repository Administrators"=>"read"} )
|
24
|
+
self.datastreams["rightsMetadata"].update_permissions( "group"=>{"Repository Administrators"=>"discover"} )
|
25
|
+
self.save
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Bplmodels
|
2
|
+
class Image < ActiveFedora::Base
|
3
|
+
#has_file_datastream :name => 'productionMaster', :type => ActiveFedora::Datastream
|
4
|
+
|
5
|
+
include Hydra::ModelMixins::CommonMetadata
|
6
|
+
include Hydra::ModelMethods
|
7
|
+
include ActiveFedora::Relationships
|
8
|
+
|
9
|
+
belongs_to :collection, :class_name => 'Collection', :property => :is_member_of_collection
|
10
|
+
|
11
|
+
has_metadata :name => "descMetadata", :type => ModsDescMetadata
|
12
|
+
has_metadata :name => "admin", :type => AdminDatastream
|
13
|
+
|
14
|
+
#has_file_datastream :name => "productionMaster", :type => FileContentDatastream
|
15
|
+
#has_file_datastream :name => "accessMaster", :type => FileContentDatastream
|
16
|
+
|
17
|
+
delegate :title, :to=>'descMetadata', :at => [:mods, :titleInfo, :title], :unique=>true
|
18
|
+
delegate :abstract, :to => "descMetadata"
|
19
|
+
delegate :description, :to=>'descMetadata', :at => [:abstract], :unique=>true
|
20
|
+
delegate :url, :to=>'descMetadata', :at => [:relatedItem, :location, :url], :unique=>true
|
21
|
+
delegate :description, :to=>'descMetadata', :at => [:abstract], :unique=>true
|
22
|
+
delegate :identifier_accession, :to=>'descMetadata', :at => [:identifier_accession], :unique=>true
|
23
|
+
delegate :identifier_barcode, :to=>'descMetadata', :at => [:identifier_barcode], :unique=>true
|
24
|
+
delegate :identifier_bpldc, :to=>'descMetadata', :at => [:identifier_bpldc], :unique=>true
|
25
|
+
delegate :identifier_other, :to=>'descMetadata', :at => [:identifier_other], :unique=>true
|
26
|
+
|
27
|
+
delegate :state, :to=>'admin', :at => [:item_status, :state], :unique=>true
|
28
|
+
delegate :state_comment, :to=>'admin', :at => [:item_status, :state_comment], :unique=>true
|
29
|
+
|
30
|
+
#has_relationship "collections", :is_member_of_collection, :type => Collection
|
31
|
+
|
32
|
+
def apply_default_permissions
|
33
|
+
self.datastreams["rightsMetadata"].update_permissions( "group"=>{"Repository Administrators"=>"edit"} )
|
34
|
+
self.datastreams["rightsMetadata"].update_permissions( "group"=>{"Repository Administrators"=>"read"} )
|
35
|
+
self.datastreams["rightsMetadata"].update_permissions( "group"=>{"Repository Administrators"=>"discover"} )
|
36
|
+
self.save
|
37
|
+
end
|
38
|
+
|
39
|
+
def save_production_master(filename)
|
40
|
+
#self.productionMaster.content = File.open(filename).to_blob
|
41
|
+
#self.productionMaster.label = "productionMaster datastream"
|
42
|
+
#self.productionMaster.mimetype = "image/tiff"
|
43
|
+
#self.save
|
44
|
+
end
|
45
|
+
|
46
|
+
## Produce a unique filename that doesn't already exist.
|
47
|
+
def temp_filename(basename, tmpdir='/tmp')
|
48
|
+
n = 0
|
49
|
+
begin
|
50
|
+
tmpname = File.join(tmpdir, sprintf('%s%d.%d', basename, $$, n))
|
51
|
+
lock = tmpname + '.lock'
|
52
|
+
n += 1
|
53
|
+
end while File.exist?(tmpname)
|
54
|
+
tmpname
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
@@ -0,0 +1,56 @@
|
|
1
|
+
class Postcard < ActiveFedora::Base
|
2
|
+
#has_file_datastream :name => 'productionMaster', :type => ActiveFedora::Datastream
|
3
|
+
|
4
|
+
include Hydra::ModelMixins::CommonMetadata
|
5
|
+
include Hydra::ModelMethods
|
6
|
+
include ActiveFedora::Relationships
|
7
|
+
|
8
|
+
belongs_to :collection, :class_name => 'Collection', :property => :is_member_of_collection
|
9
|
+
|
10
|
+
has_metadata :name => "descMetadata", :type => ModsDescMetadata
|
11
|
+
has_metadata :name => "admin", :type => AdminDatastream
|
12
|
+
|
13
|
+
#has_file_datastream :name => "productionMaster", :type => FileContentDatastream
|
14
|
+
#has_file_datastream :name => "accessMaster", :type => FileContentDatastream
|
15
|
+
|
16
|
+
delegate :title, :to=>'descMetadata', :at => [:mods, :titleInfo, :title], :unique=>true
|
17
|
+
delegate :abstract, :to => "descMetadata"
|
18
|
+
delegate :description, :to=>'descMetadata', :at => [:abstract], :unique=>true
|
19
|
+
delegate :url, :to=>'descMetadata', :at => [:relatedItem, :location, :url], :unique=>true
|
20
|
+
delegate :description, :to=>'descMetadata', :at => [:abstract], :unique=>true
|
21
|
+
delegate :identifier_accession, :to=>'descMetadata', :at => [:identifier_accession], :unique=>true
|
22
|
+
delegate :identifier_barcode, :to=>'descMetadata', :at => [:identifier_barcode], :unique=>true
|
23
|
+
delegate :identifier_bpldc, :to=>'descMetadata', :at => [:identifier_bpldc], :unique=>true
|
24
|
+
delegate :identifier_other, :to=>'descMetadata', :at => [:identifier_other], :unique=>true
|
25
|
+
|
26
|
+
delegate :state, :to=>'admin', :at => [:item_status, :state], :unique=>true
|
27
|
+
delegate :state_comment, :to=>'admin', :at => [:item_status, :state_comment], :unique=>true
|
28
|
+
|
29
|
+
#has_relationship "collections", :is_member_of_collection, :type => Collection
|
30
|
+
|
31
|
+
def apply_default_permissions
|
32
|
+
self.datastreams["rightsMetadata"].update_permissions( "group"=>{"Repository Administrators"=>"edit"} )
|
33
|
+
self.datastreams["rightsMetadata"].update_permissions( "group"=>{"Repository Administrators"=>"read"} )
|
34
|
+
self.datastreams["rightsMetadata"].update_permissions( "group"=>{"Repository Administrators"=>"discover"} )
|
35
|
+
self.save
|
36
|
+
end
|
37
|
+
|
38
|
+
def save_production_master(filename)
|
39
|
+
#self.productionMaster.content = File.open(filename).to_blob
|
40
|
+
#self.productionMaster.label = "productionMaster datastream"
|
41
|
+
#self.productionMaster.mimetype = "image/tiff"
|
42
|
+
#self.save
|
43
|
+
end
|
44
|
+
|
45
|
+
## Produce a unique filename that doesn't already exist.
|
46
|
+
def temp_filename(basename, tmpdir='/tmp')
|
47
|
+
n = 0
|
48
|
+
begin
|
49
|
+
tmpname = File.join(tmpdir, sprintf('%s%d.%d', basename, $$, n))
|
50
|
+
lock = tmpname + '.lock'
|
51
|
+
n += 1
|
52
|
+
end while File.exist?(tmpname)
|
53
|
+
tmpname
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Bplmodels
|
2
|
+
class OrganizationalSet < Bplmodels::RelationBase
|
3
|
+
|
4
|
+
has_many :objects, :class_name=> "Bplmodels::ObjectBase", :property=> :hasSubset
|
5
|
+
|
6
|
+
|
7
|
+
#A collection can have another collection as a member, or an image
|
8
|
+
def insert_member(fedora_object)
|
9
|
+
if (fedora_object.instance_of?(Bplmodels::ObjectBase))
|
10
|
+
|
11
|
+
#add to the members ds
|
12
|
+
members.insert_member(:member_id=>fedora_object.pid, :member_title=>fedora_object.titleSet_display, :member_type=>fedora_object.fedora_name)
|
13
|
+
|
14
|
+
#add to the rels-ext ds
|
15
|
+
fedora_object.organized_sets << self
|
16
|
+
self.objects << fedora_object
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
fedora_object.save!
|
21
|
+
self.save!
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Bplmodels
|
2
|
+
class Periodical < Bplmodels::SimpleObjectBase
|
3
|
+
#has_file_datastream :name => 'productionMaster', :type => ActiveFedora::Datastream
|
4
|
+
|
5
|
+
belongs_to :institution, :class_name => 'Bplmodels::Institution', :property => :is_member_of
|
6
|
+
|
7
|
+
|
8
|
+
#A collection can have another collection as a member, or an image
|
9
|
+
def insert_member(fedora_object)
|
10
|
+
if (fedora_object.instance_of?(Bplmodels::ImageFile))
|
11
|
+
|
12
|
+
#add to the members ds
|
13
|
+
members.insert_member(:member_id=>fedora_object.pid, :member_title=>fedora_object.titleSet_display, :member_type=>fedora_object.fedora_name)
|
14
|
+
|
15
|
+
#add to the rels-ext ds
|
16
|
+
fedora_object.object << self
|
17
|
+
self.image_files << fedora_object
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
fedora_object.save!
|
22
|
+
self.save!
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
def fedora_name
|
27
|
+
'periodical'
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_solr(doc = {} )
|
31
|
+
doc = super(doc)
|
32
|
+
doc['active_fedora_model_ssi'] = self.class.name
|
33
|
+
doc
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Bplmodels
|
2
|
+
class PhotographicPrint < Bplmodels::SimpleObjectBase
|
3
|
+
#has_file_datastream :name => 'productionMaster', :type => ActiveFedora::Datastream
|
4
|
+
|
5
|
+
|
6
|
+
#A collection can have another collection as a member, or an image
|
7
|
+
def insert_member(fedora_object)
|
8
|
+
if (fedora_object.instance_of?(Bplmodels::ImageFile))
|
9
|
+
|
10
|
+
#add to the members ds
|
11
|
+
members.insert_member(:member_id=>fedora_object.pid, :member_title=>fedora_object.titleSet_display, :member_type=>fedora_object.fedora_name)
|
12
|
+
|
13
|
+
#add to the rels-ext ds
|
14
|
+
fedora_object.object << self
|
15
|
+
self.image_files << fedora_object
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
fedora_object.save!
|
20
|
+
self.save!
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_solr(doc = {} )
|
25
|
+
doc = super(doc)
|
26
|
+
doc['active_fedora_model_ssi'] = self.class.name
|
27
|
+
doc
|
28
|
+
end
|
29
|
+
|
30
|
+
def fedora_name
|
31
|
+
'photographic_print'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
module Bplmodels
|
2
|
+
class RelationBase < ActiveFedora::Base
|
3
|
+
include Hydra::AccessControls::Permissions
|
4
|
+
include Hydra::ModelMethods
|
5
|
+
|
6
|
+
#include Hydra::ModelMixins::CommonMetadata
|
7
|
+
#include Hydra::ModelMethods
|
8
|
+
#include Hydra::ModelMixins::RightsMetadata
|
9
|
+
|
10
|
+
include ActiveFedora::Auditable
|
11
|
+
|
12
|
+
# Uses the Hydra Rights Metadata Schema for tracking access permissions & copyright
|
13
|
+
has_metadata :name => "rightsMetadata", :type => Hydra::Datastream::RightsMetadata
|
14
|
+
|
15
|
+
has_metadata :name => "descMetadata", :type => ModsDescMetadata
|
16
|
+
|
17
|
+
has_metadata :name => "workflowMetadata", :type => WorkflowMetadata
|
18
|
+
|
19
|
+
# collections and institutions can have an associated image file
|
20
|
+
has_many :image_files, :class_name => "Bplmodels::ImageFile", :property=> :is_image_of
|
21
|
+
|
22
|
+
has_attributes :abstract, :datastream=>'descMetadata', :at => [:abstract], :multiple=>false
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
#delegate :title, :to=>'descMetadata', :at => [:mods, :titleInfo, :title], :unique=>true
|
27
|
+
#delegate :abstract, :to => "descMetadata"
|
28
|
+
#delegate :url, :to=>'descMetadata', :at => [:relatedItem, :location, :url], :unique=>true
|
29
|
+
#delegate :description, :to=>'descMetadata', :at => [:abstract], :unique=>true
|
30
|
+
#delegate :location, :to=>'descMetadata', :at => [:relatedItem, :location, :physicalLocation], :unique=>true
|
31
|
+
#delegate :identifier_accession, :to=>'descMetadata', :at => [:identifier_accession], :unique=>true
|
32
|
+
#delegate :identifier_barcode, :to=>'descMetadata', :at => [:identifier_barcode], :unique=>true
|
33
|
+
#delegate :identifier_bpldc, :to=>'descMetadata', :at => [:identifier_bpldc], :unique=>true
|
34
|
+
#delegate :identifier_other, :to=>'descMetadata', :at => [:identifier_other], :unique=>true
|
35
|
+
|
36
|
+
|
37
|
+
def apply_default_permissions
|
38
|
+
self.datastreams["rightsMetadata"].update_permissions( "group"=>{"Repository Administrators"=>"edit"} )
|
39
|
+
self.save
|
40
|
+
end
|
41
|
+
|
42
|
+
def to_solr(doc = {} )
|
43
|
+
doc = super(doc)
|
44
|
+
doc['label_ssim'] = self.label
|
45
|
+
#FIXME
|
46
|
+
if self.class.to_s == 'Bplmodels::Institution' || self.class.to_s == 'Bplmodels::Collection'
|
47
|
+
doc['active_fedora_model_suffix_ssi'] = self.class.to_s.gsub(/\A[\w]*::/,'')
|
48
|
+
else
|
49
|
+
doc['active_fedora_model_suffix_ssi'] = self.class.superclass.to_s.gsub(/\A[\w]*::/,'')
|
50
|
+
end
|
51
|
+
|
52
|
+
# title fields
|
53
|
+
title_prefix = self.descMetadata.mods(0).title_info(0).nonSort[0].presence || ''
|
54
|
+
main_title = self.descMetadata.mods(0).title_info(0).main_title[0]
|
55
|
+
doc['title_info_primary_tsi'] = title_prefix + main_title
|
56
|
+
doc['title_info_primary_ssort'] = main_title
|
57
|
+
|
58
|
+
if self.workflowMetadata
|
59
|
+
doc['workflow_state_ssi'] = self.workflowMetadata.item_status.state
|
60
|
+
end
|
61
|
+
puts self.pid
|
62
|
+
doc
|
63
|
+
end
|
64
|
+
|
65
|
+
=begin
|
66
|
+
def save
|
67
|
+
super()
|
68
|
+
end
|
69
|
+
=end
|
70
|
+
|
71
|
+
def assert_content_model
|
72
|
+
super()
|
73
|
+
object_superclass = self.class.superclass
|
74
|
+
until object_superclass == ActiveFedora::Base || object_superclass == Object do
|
75
|
+
add_relationship(:has_model, object_superclass.to_class_uri)
|
76
|
+
object_superclass = object_superclass.superclass
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
#Rough initial attempt at this implementation
|
81
|
+
#use test2.relationships(:has_model)?
|
82
|
+
def convert_to(klass)
|
83
|
+
#if !self.instance_of?(klass)
|
84
|
+
adapted_object = self.adapt_to(klass)
|
85
|
+
|
86
|
+
self.relationships.each_statement do |statement|
|
87
|
+
if statement.predicate == "info:fedora/fedora-system:def/model#hasModel"
|
88
|
+
self.remove_relationship(:has_model, statement.object)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
adapted_object.assert_content_model
|
93
|
+
adapted_object.save
|
94
|
+
#end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Bplmodels
|
2
|
+
class Scrapbook < Bplmodels::ComplexObjectBase
|
3
|
+
#has_file_datastream :name => 'productionMaster', :type => ActiveFedora::Datastream
|
4
|
+
|
5
|
+
|
6
|
+
#A collection can have another collection as a member, or an image
|
7
|
+
def insert_member(fedora_object)
|
8
|
+
if (fedora_object.instance_of?(Bplmodels::ImageFile))
|
9
|
+
|
10
|
+
#add to the members ds
|
11
|
+
members.insert_member(:member_id=>fedora_object.pid, :member_title=>fedora_object.titleSet_display, :member_type=>fedora_object.fedora_name)
|
12
|
+
|
13
|
+
#add to the rels-ext ds
|
14
|
+
fedora_object.object << self
|
15
|
+
self.image_files << fedora_object
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
fedora_object.save!
|
20
|
+
self.save!
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
def fedora_name
|
25
|
+
'scrapbook'
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_solr(doc = {} )
|
29
|
+
doc = super(doc)
|
30
|
+
doc['active_fedora_model_ssi'] = self.class.name
|
31
|
+
doc
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Bplmodels
|
2
|
+
class SimpleObjectBase < Bplmodels::ObjectBase
|
3
|
+
|
4
|
+
## Produce a unique filename that doesn't already exist.
|
5
|
+
def temp_filename(basename, tmpdir='/tmp')
|
6
|
+
n = 0
|
7
|
+
begin
|
8
|
+
tmpname = File.join(tmpdir, sprintf('%s%d.%d', basename, $$, n))
|
9
|
+
lock = tmpname + '.lock'
|
10
|
+
n += 1
|
11
|
+
end while File.exist?(tmpname)
|
12
|
+
tmpname
|
13
|
+
end
|
14
|
+
|
15
|
+
#def save
|
16
|
+
#super()
|
17
|
+
#super
|
18
|
+
#end
|
19
|
+
|
20
|
+
def to_solr(doc = {} )
|
21
|
+
doc = super(doc)
|
22
|
+
doc
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Bplmodels
|
2
|
+
class SoundRecording < Bplmodels::ComplexObjectBase
|
3
|
+
#has_file_datastream :name => 'productionMaster', :type => ActiveFedora::Datastream
|
4
|
+
|
5
|
+
def to_solr(doc = {} )
|
6
|
+
doc = super(doc)
|
7
|
+
doc['active_fedora_model_ssi'] = self.class.name
|
8
|
+
doc
|
9
|
+
end
|
10
|
+
|
11
|
+
def fedora_name
|
12
|
+
'sound_recording'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|