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.
Files changed (93) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +0 -0
  4. data/Rakefile +40 -0
  5. data/app/assets/javascripts/bplmodels/application.js +15 -0
  6. data/app/assets/stylesheets/bplmodels/application.css +13 -0
  7. data/app/controllers/bplmodels/application_controller.rb +4 -0
  8. data/app/helpers/bplmodels/application_helper.rb +4 -0
  9. data/app/models/bplmodels/audio_file.rb +14 -0
  10. data/app/models/bplmodels/book.rb +35 -0
  11. data/app/models/bplmodels/card.rb +35 -0
  12. data/app/models/bplmodels/characterization.rb +92 -0
  13. data/app/models/bplmodels/collection.rb +118 -0
  14. data/app/models/bplmodels/complex_object_base.rb +24 -0
  15. data/app/models/bplmodels/correspondence.rb +35 -0
  16. data/app/models/bplmodels/document.rb +35 -0
  17. data/app/models/bplmodels/document_file.rb +8 -0
  18. data/app/models/bplmodels/ephemera.rb +35 -0
  19. data/app/models/bplmodels/file.rb +151 -0
  20. data/app/models/bplmodels/file_content_datastream.rb +10 -0
  21. data/app/models/bplmodels/fits_datastream.rb +190 -0
  22. data/app/models/bplmodels/image.rb +14 -0
  23. data/app/models/bplmodels/image_file.rb +18 -0
  24. data/app/models/bplmodels/institution.rb +159 -0
  25. data/app/models/bplmodels/manuscript.rb +34 -0
  26. data/app/models/bplmodels/map.rb +34 -0
  27. data/app/models/bplmodels/mods_desc_metadata.rb +1826 -0
  28. data/app/models/bplmodels/musical_notation.rb +34 -0
  29. data/app/models/bplmodels/newspaper.rb +15 -0
  30. data/app/models/bplmodels/nom_terminology.rb +1242 -0
  31. data/app/models/bplmodels/non_photographic_print.rb +34 -0
  32. data/app/models/bplmodels/oai_collection.rb +19 -0
  33. data/app/models/bplmodels/oai_metadata.rb +75 -0
  34. data/app/models/bplmodels/oai_object.rb +45 -0
  35. data/app/models/bplmodels/object.rb +36 -0
  36. data/app/models/bplmodels/object_base.rb +1241 -0
  37. data/app/models/bplmodels/objects/collection.rb~ +28 -0
  38. data/app/models/bplmodels/objects/image.rb~ +59 -0
  39. data/app/models/bplmodels/objects/postcard.rb~ +56 -0
  40. data/app/models/bplmodels/organizational_set.rb +25 -0
  41. data/app/models/bplmodels/periodical.rb +37 -0
  42. data/app/models/bplmodels/photographic_print.rb +34 -0
  43. data/app/models/bplmodels/relation_base.rb +99 -0
  44. data/app/models/bplmodels/scrapbook.rb +35 -0
  45. data/app/models/bplmodels/simple_object_base.rb +27 -0
  46. data/app/models/bplmodels/sound_recording.rb +15 -0
  47. data/app/models/bplmodels/system_collection.rb +8 -0
  48. data/app/models/bplmodels/uploads_set.rb +3 -0
  49. data/app/models/bplmodels/workflow_metadata.rb +99 -0
  50. data/app/views/layouts/bplmodels/application.html.erb +14 -0
  51. data/config/application.rb +6 -0
  52. data/config/predicate_mappings.yml +61 -0
  53. data/config/routes.rb +2 -0
  54. data/lib/bplmodels.rb +21 -0
  55. data/lib/bplmodels/constants.rb +119 -0
  56. data/lib/bplmodels/datastream_input_funcs.rb +949 -0
  57. data/lib/bplmodels/engine.rb +5 -0
  58. data/lib/bplmodels/engine.rb~ +5 -0
  59. data/lib/bplmodels/finder.rb +192 -0
  60. data/lib/bplmodels/object_funcs.rb +10 -0
  61. data/lib/bplmodels/version.rb +3 -0
  62. data/lib/tasks/bplmodels_tasks.rake +4 -0
  63. data/test/bplmodels_test.rb +7 -0
  64. data/test/dummy/README.rdoc +261 -0
  65. data/test/dummy/Rakefile +7 -0
  66. data/test/dummy/app/assets/javascripts/application.js +15 -0
  67. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  68. data/test/dummy/app/controllers/application_controller.rb +3 -0
  69. data/test/dummy/app/helpers/application_helper.rb +2 -0
  70. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  71. data/test/dummy/config.ru +4 -0
  72. data/test/dummy/config/application.rb +59 -0
  73. data/test/dummy/config/boot.rb +10 -0
  74. data/test/dummy/config/environment.rb +5 -0
  75. data/test/dummy/config/environments/development.rb +37 -0
  76. data/test/dummy/config/environments/production.rb +67 -0
  77. data/test/dummy/config/environments/test.rb +37 -0
  78. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  79. data/test/dummy/config/initializers/inflections.rb +15 -0
  80. data/test/dummy/config/initializers/mime_types.rb +5 -0
  81. data/test/dummy/config/initializers/secret_token.rb +7 -0
  82. data/test/dummy/config/initializers/session_store.rb +8 -0
  83. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  84. data/test/dummy/config/locales/en.yml +5 -0
  85. data/test/dummy/config/routes.rb +4 -0
  86. data/test/dummy/public/404.html +26 -0
  87. data/test/dummy/public/422.html +26 -0
  88. data/test/dummy/public/500.html +25 -0
  89. data/test/dummy/public/favicon.ico +0 -0
  90. data/test/dummy/script/rails +6 -0
  91. data/test/integration/navigation_test.rb +10 -0
  92. data/test/test_helper.rb +15 -0
  93. 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
@@ -0,0 +1,8 @@
1
+ module Bplmodels
2
+ class SystemCollection < Bplmodels::Collection
3
+ def fedora_name
4
+ 'system_collection'
5
+ end
6
+ # To change this template use File | Settings | File Templates.
7
+ end
8
+ end
@@ -0,0 +1,3 @@
1
+ class UploadsSet < Bplmodels::RelationBase
2
+ # To change this template use File | Settings | File Templates.
3
+ end