active-fedora 9.0.6 → 9.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +5 -5
  2. data/History.txt +57 -0
  3. data/lib/active_fedora.rb +5 -0
  4. data/lib/active_fedora/associations/collection_association.rb +1 -18
  5. data/lib/active_fedora/associations/has_and_belongs_to_many_association.rb +12 -10
  6. data/lib/active_fedora/core.rb +15 -17
  7. data/lib/active_fedora/core/fedora_id_translator.rb +12 -0
  8. data/lib/active_fedora/core/fedora_uri_translator.rb +9 -0
  9. data/lib/active_fedora/errors.rb +4 -0
  10. data/lib/active_fedora/fedora_attributes.rb +15 -5
  11. data/lib/active_fedora/file.rb +2 -0
  12. data/lib/active_fedora/inheritable_accessors.rb +26 -0
  13. data/lib/active_fedora/reflection.rb +3 -1
  14. data/lib/active_fedora/relation/finder_methods.rb +27 -3
  15. data/lib/active_fedora/version.rb +1 -1
  16. data/lib/active_fedora/versions_graph.rb +7 -8
  17. data/spec/integration/associations_spec.rb +34 -22
  18. data/spec/integration/belongs_to_association_spec.rb +118 -47
  19. data/spec/integration/collection_association_spec.rb +46 -0
  20. data/spec/integration/has_and_belongs_to_many_associations_spec.rb +178 -139
  21. data/spec/integration/versionable_spec.rb +38 -1
  22. data/spec/samples/samples.rb +0 -1
  23. data/spec/unit/base_spec.rb +51 -0
  24. data/spec/unit/core/fedora_id_translator_spec.rb +20 -0
  25. data/spec/unit/core/fedora_uri_translator_spec.rb +19 -0
  26. data/spec/unit/core_spec.rb +50 -0
  27. data/spec/unit/has_many_association_spec.rb +27 -2
  28. data/spec/unit/qualified_dublin_core_datastream_spec.rb +0 -6
  29. data/spec/unit/reflection_spec.rb +44 -0
  30. metadata +9 -13
  31. data/spec/samples/marpa-dc_datastream.rb +0 -102
  32. data/spec/samples/models/audio_record.rb +0 -29
  33. data/spec/samples/models/image.rb +0 -5
  34. data/spec/samples/models/oral_history.rb +0 -36
  35. data/spec/samples/models/seminar.rb +0 -29
  36. data/spec/samples/models/seminar_audio_file.rb +0 -32
  37. data/spec/samples/oral_history_sample_model.rb +0 -30
  38. data/spec/samples/special_thing.rb +0 -44
@@ -1,29 +0,0 @@
1
- require 'active-fedora'
2
-
3
- class AudioRecord
4
-
5
- include ActiveFedora::Model
6
-
7
- # This seems a bit strange, since this Class might be used outside of Oral Histories.
8
- # From this perspective, it makes more sense to put triples on the containing object, not on the children...
9
-
10
- relationship "parents", :is_part_of, [nil, :oral_history]
11
- #has n, :parents, {:predicate => :is_part_of, :likely_types => [nil, :oral_history]}
12
- # OR
13
- # is_part_of [:oral_history]
14
-
15
- property "date_recorded", :date
16
- property "file_name", :string
17
- property "duration", :string
18
- property "notes", :text
19
-
20
- # This doesn't make sense when you have both compressed and uncompressed in the same object!
21
- # Probably better to rely on the file size in datastreamVersion "SIZE" attribute from Fedora anyway
22
- #property "file_size", :integer
23
-
24
- #property "restriction", :text
25
-
26
- datastream "compressed", ["audio/mpeg"], :multiple => true
27
- datastream "uncompressed", ["audio/wav", "audio/aiff"], :multiple => true
28
-
29
- end
@@ -1,5 +0,0 @@
1
- require 'active-fedora'
2
-
3
- class Image
4
- include ActiveFedora::Model
5
- end
@@ -1,36 +0,0 @@
1
- require 'active-fedora'
2
-
3
- class OralHistory < ActiveFedora::Base
4
- # Imitating DataMapper ...
5
-
6
- has_many :parts, :property=>:is_part_of
7
-
8
- # These are all the properties that don't quite fit into Qualified DC
9
- # Put them on the object itself (in the properties datastream) for now.
10
- has_metadata :name => "properties", :type => ActiveFedora::SimpleDatastream do |m|
11
- field "alt_title", :string
12
- field "narrator", :string
13
- field "interviewer", :integer
14
- field "transcript_editor", :text
15
- field "bio", :string
16
- field "notes", :text
17
- field "hard_copy_availability", :text
18
- field "hard_copy_location", :text
19
- field "other_contributors", :string
20
- field "restrictions", :text
21
- end
22
-
23
- has_metadata :name => "dublin_core", :type => ActiveFedora::QualifiedDublinCoreDatastream do |m|
24
- # Default :multiple => true
25
- #
26
- # on retrieval, these will be pluralized and returned as arrays
27
- # ie. subject_entries = my_oral_history.dublin_core.subjects
28
- #
29
- # aimint to use method-missing to support calling methods like
30
- # my_oral_history.subjects OR my_oral_history.titles OR EVEN my_oral_history.title whenever possible
31
-
32
- #field :name => "subject_heading", :string, {:xml_node => "subject", :encoding => "LCSH"}
33
- end
34
-
35
-
36
- end
@@ -1,29 +0,0 @@
1
- require 'active-fedora'
2
-
3
- class Seminar
4
-
5
- include ActiveFedora::Model
6
-
7
- # Imitating DataMapper ...
8
-
9
- relationship "parts", :is_part_of, [:seminar_audio_file], :inbound => true
10
- #has n, :parts, {:predicate => :is_part_of, :likely_types => [:seminar_audio_file], :inbound => true}
11
- # OR
12
- # has_parts [:seminar_audio_file]
13
-
14
- property "title_wylie", :text # Note: reserving title_tibetan for actual UTF-8 tibetan text
15
- property "title_english", :text
16
- property "original_media_format", :text
17
- property "original_media_number_of_units", :integer
18
- property "author_name_wylie", :text
19
- property "author_name_english", :text
20
- property "location", :string
21
- property "date_recorded", :date
22
- property "file_name", :string
23
- property "duration", :string
24
- property "file_size", :integer
25
- property "restriction", :text
26
- property "uri", :string
27
- property "notes", :text
28
-
29
- end
@@ -1,32 +0,0 @@
1
- require 'active-fedora'
2
-
3
- class SeminarAudioFile
4
-
5
- include ActiveFedora::Model
6
-
7
- # Imitating DataMapper ...
8
-
9
- relationship "parent", :is_part_of, :seminar
10
- #has n, :parents, {:predicate => :is_part_of, :likely_types => [:seminar]}
11
- # OR
12
- # is_part_of :seminar
13
-
14
- property "date_recorded", :date
15
- property "file_name", :string
16
- property "duration", :string
17
- property "uri", :string
18
- property "notes", :text
19
-
20
- # TODO: Figure out how to declare access restrictions
21
- #property "restriction", :text
22
- set_restrictions ["public", "private"]
23
-
24
- # A file_size property doesn't make sense when you have both compressed and uncompressed in the same object!
25
- # Probably better to rely on the file size in datastreamVersion "SIZE" attribute from Fedora anyway
26
- #property "file_size", :integer
27
-
28
- datastream "compressed", ["audio/mpeg"], :multiple => true
29
- datastream "uncompressed", ["audio/wav", "audio/aiff"], :multiple => true
30
-
31
-
32
- end
@@ -1,30 +0,0 @@
1
- require "active_fedora"
2
- class OralHistorySampleModel < ActiveFedora::Base
3
-
4
- #has_relationship "parts", :is_part_of, :inbound => true
5
-
6
- has_metadata :name => "properties", :type => ActiveFedora::SimpleDatastream do |m|
7
- m.field "narrator", :string
8
- m.field "interviewer", :string
9
- m.field "transcript_editor", :text
10
- m.field "bio", :string
11
- m.field "notes", :text
12
- m.field "hard_copy_availability", :text
13
- m.field "hard_copy_location", :text
14
- m.field "other_contributor", :string
15
- m.field "restrictions", :text
16
- m.field "series", :string
17
- m.field "location", :string
18
- end
19
-
20
- has_metadata :name => "dublin_core", :type => ActiveFedora::QualifiedDublinCoreDatastream
21
-
22
- has_metadata :name => "significant_passages", :type => ActiveFedora::SimpleDatastream do |m|
23
- m.field "significant_passage", :text
24
- end
25
-
26
- has_metadata :name => "sensitive_passages", :type => ActiveFedora::SimpleDatastream do |m|
27
- m.field "sensitive_passage", :text
28
- end
29
-
30
- end
@@ -1,44 +0,0 @@
1
- require "samples/marpa-dc_datastream.rb"
2
-
3
- # This is an example of an ActiveFedora Model
4
- #
5
- # Some of the datastream ids were chosen based on the Hydra modeling conventions. You don't have to follow them in your work.
6
- # ActiveFedora itself has no notion of those conventions, but we do encourage you to use them.
7
- #
8
- # The Hydra conventions encourage you to have a datastream with this dsid whose contents are descriptive metadata like MODS or Dublin Core. They especially encourage MODS.
9
- # The descMetadata dsid is a Hydra convention for a datastream with descriptive metadata contents, like MODS or Dublin Core. They especially encourage MODS.
10
- # The rightsMetadata dsid is also a convention provided by the Hydra Common Metadata "content model"
11
- #
12
- # For more info on the Hydra conventions, see the documentation on "Common Metadata content model" in https://wiki.duraspace.org/display/hydra/Hydra+content+models+and+disseminators
13
- # Note that on the wiki, "content model" is often used to refer to Fedora CModels and/or abstract/notional models. The Common Metadata content model is an example of this.
14
- # The wiki includes a page that attempts to shed some light on the question of "What is a content model?" https://wiki.duraspace.org/display/hydra/Don't+call+it+a+'content+model'!
15
- class SpecialThing < ActiveFedora::Base
16
-
17
- #
18
- # DATASTREAMS
19
- #
20
-
21
- # This declares a datastream with Datastream ID (dsid) of "descMetadata"
22
- # The descMetadata datastream is bound to the Hydra::ModsArticleDatastream class that's defined in lib/active_fedora/samples
23
- # Any time you load a Fedora object using an instance of SampleModel, the instance will assume its descMetadata datastream conforms to the assumptions in Hydra::ModsArticleDatastream class
24
- has_metadata "descMetadata", type: Hydra::ModsArticleDatastream
25
-
26
- # This declares a datastream with Datastream ID (dsid) of "rightsMetadata"
27
- # Like the descMetadata datastream, any time you load a Fedora object using an instance of SampleModel, the instance will assume its descMetadata datastream conforms to the assumptions in Hydra::RightsMetadataDatastream class
28
- has_metadata "rightsMetadata", type: Hydra::RightsMetadataDatastream
29
-
30
- # This is not part of the Hydra conventions
31
- # Adding an extra datastream called "extraMetadataForFun" that is bound to the Marpa::DcDatastream class
32
- has_metadata "extraMetadataForFun", type: Marpa::DcDatastream
33
-
34
- #
35
- # RELATIONSHIPS
36
- #
37
-
38
- # This is an example of how you can add a custom relationship to a model
39
- # This will allow you to call .derivation on instances of the model to get the _outbound_ "hasDerivation" relationship in the RELS-EXT datastream
40
- belongs_to :derivation, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasDerivation, class_name: 'SpecialThing'
41
-
42
- # This will allow you to call .inspirations on instances of the model to get a list of all of the objects that assert "hasDerivation" relationships pointing at this object
43
- has_many :inspirations, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasDerivation, class_name: 'SpecialThing'
44
- end