active-fedora 1.0.5 → 1.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.
- data/.document +5 -0
- data/.gitignore +21 -0
- data/.hg/00changelog.i +0 -0
- data/.hg/branch +1 -0
- data/.hg/branch.cache +2 -0
- data/.hg/dirstate +0 -0
- data/.hg/hgrc +2 -0
- data/.hg/requires +2 -0
- data/.hg/store/00changelog.i +0 -0
- data/.hg/store/00manifest.i +0 -0
- data/.hg/store/data/.hgignore.i +0 -0
- data/.hg/store/data/.hgtags.i +0 -0
- data/.hg/store/data/_c_o_p_y_i_n_g.txt.i +0 -0
- data/.hg/store/data/_c_o_y_i_n_g._l_e_s_s_e_r.txt.i +0 -0
- data/.hg/store/data/_history.txt.i +0 -0
- data/.hg/store/data/_license.txt.i +0 -0
- data/.hg/store/data/_manifest.txt.i +0 -0
- data/.hg/store/data/_post_install.txt.i +0 -0
- data/.hg/store/data/_r_e_a_d_m_e.rdoc.i +0 -0
- data/.hg/store/data/_r_e_a_d_m_e.txt.i +0 -0
- data/.hg/store/data/_rakefile.i +0 -0
- data/.hg/store/data/_v_e_r_s_i_o_n.i +0 -0
- data/.hg/store/data/active-fedora.gemspec.i +0 -0
- data/.hg/store/data/active__fedora/_history.txt.i +0 -0
- data/.hg/store/data/active__fedora/_manifest.txt.i +0 -0
- data/.hg/store/data/active__fedora/_post_install.txt.i +0 -0
- data/.hg/store/data/active__fedora/_r_e_a_d_m_e.rdoc.i +0 -0
- data/.hg/store/data/active__fedora/_rakefile.i +0 -0
- data/.hg/store/data/active__fedora/lib/active__fedora.rb.i +0 -0
- data/.hg/store/data/active__fedora/script/console.i +0 -0
- data/.hg/store/data/active__fedora/script/destroy.i +0 -0
- data/.hg/store/data/active__fedora/script/generate.i +0 -0
- data/.hg/store/data/active__fedora/spec/active__fedora__spec.rb.i +0 -0
- data/.hg/store/data/active__fedora/spec/spec__helper.rb.i +0 -0
- data/.hg/store/data/config/fedora.yml.i +0 -0
- data/.hg/store/data/config/solr__mappings.yml.i +0 -0
- data/.hg/store/data/config/solr__mappings__af__0.1.yml.i +0 -0
- data/.hg/store/data/config/solr__mappings__bl__2.4.yml.i +0 -0
- data/.hg/store/data/lib/active-fedora.rb.i +0 -0
- data/.hg/store/data/lib/active__fedora.rb.i +0 -0
- data/.hg/store/data/lib/active__fedora/base.rb.i +0 -0
- data/.hg/store/data/lib/active__fedora/content__model.rb.i +0 -0
- data/.hg/store/data/lib/active__fedora/datastream.rb.i +0 -0
- data/.hg/store/data/lib/active__fedora/fedora__object.rb.i +0 -0
- data/.hg/store/data/lib/active__fedora/metadata__datastream.rb.i +0 -0
- data/.hg/store/data/lib/active__fedora/model.rb.i +0 -0
- data/.hg/store/data/lib/active__fedora/property.rb.i +0 -0
- data/.hg/store/data/lib/active__fedora/qualified__dublin__core__datastream.rb.i +0 -0
- data/.hg/store/data/lib/active__fedora/relationship.rb.i +0 -0
- data/.hg/store/data/lib/active__fedora/rels__ext__datastream.rb.i +0 -0
- data/.hg/store/data/lib/active__fedora/semantic__node.rb.i +0 -0
- data/.hg/store/data/lib/active__fedora/solr__mapper.rb.i +0 -0
- data/.hg/store/data/lib/active__fedora/solr__service.rb.i +0 -0
- data/.hg/store/data/lib/fedora/base.rb.i +0 -0
- data/.hg/store/data/lib/fedora/connection.rb.i +0 -0
- data/.hg/store/data/lib/fedora/datastream.rb.i +0 -0
- data/.hg/store/data/lib/fedora/fedora__object.rb.i +0 -0
- data/.hg/store/data/lib/fedora/formats.rb.i +0 -0
- data/.hg/store/data/lib/fedora/generic__search.rb.i +0 -0
- data/.hg/store/data/lib/fedora/repository.rb.i +0 -0
- data/.hg/store/data/lib/ruby-fedora.rb.i +0 -0
- data/.hg/store/data/lib/util/class__level__inheritable__attributes.rb.i +0 -0
- data/.hg/store/data/script/console.i +0 -0
- data/.hg/store/data/script/destroy.i +0 -0
- data/.hg/store/data/script/generate.i +0 -0
- data/.hg/store/data/solr/config/schema-1.5.xml.i +0 -0
- data/.hg/store/data/solr/config/schema.xml.i +0 -0
- data/.hg/store/data/solr/config/solrconfig-1.5.xml.i +0 -0
- data/.hg/store/data/spec/fixtures/changeme155.xml.i +0 -0
- data/.hg/store/data/spec/fixtures/dino.jpg.i +0 -0
- data/.hg/store/data/spec/fixtures/minivan.jpg.d +0 -0
- data/.hg/store/data/spec/fixtures/minivan.jpg.i +0 -0
- data/.hg/store/data/spec/fixtures/test__12.foxml.xml.i +0 -0
- data/.hg/store/data/spec/integration/active__fedora/base__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/active__fedora/datastream__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/active__fedora/fedora__object__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/active__fedora/full__featured__model__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/active__fedora/model__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/active__fedora/rels__ext__datastream__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/active__fedora/semantic__node__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/base__file__management__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/base__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/bug__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/datastream__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/datastreams__crud__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/fedora__object__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/full__featured__model__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/model__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/rels__ext__datastream__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/repository__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/rf__fedora__object__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/semantic__node__spec.rb.i +0 -0
- data/.hg/store/data/spec/integration/solr__service__spec.rb.i +0 -0
- data/.hg/store/data/spec/samples/models/audio__record.rb.i +0 -0
- data/.hg/store/data/spec/samples/models/image.rb.i +0 -0
- data/.hg/store/data/spec/samples/models/oral__history.rb.i +0 -0
- data/.hg/store/data/spec/samples/models/seminar.rb.i +0 -0
- data/.hg/store/data/spec/samples/models/seminar__audio__file.rb.i +0 -0
- data/.hg/store/data/spec/samples/oh__qdc.xml.i +0 -0
- data/.hg/store/data/spec/samples/oral__history.rb.i +0 -0
- data/.hg/store/data/spec/samples/oral__history__sample.xml.i +0 -0
- data/.hg/store/data/spec/samples/oral__history__sample__model.rb.i +0 -0
- data/.hg/store/data/spec/samples/oral__history__xml.xml.i +0 -0
- data/.hg/store/data/spec/spec.opts.i +0 -0
- data/.hg/store/data/spec/spec__helper.rb.i +0 -0
- data/.hg/store/data/spec/unit/active__fedora/base__cma__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/active__fedora/base__extra__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/active__fedora/base__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/active__fedora/content__model__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/active__fedora/datastream__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/active__fedora/inheritance__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/active__fedora/metadata__datastream__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/active__fedora/model__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/active__fedora/property__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/active__fedora/qualified__dublin__core__datastream__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/active__fedora/relationship__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/active__fedora/rels__ext__datastream__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/active__fedora/semantic__node__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/active__fedora/solr__service__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/active__fedora__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/base__cma__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/base__datastream__management__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/base__extra__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/base__file__management__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/base__loader__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/base__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/connection__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/content__model__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/datastream__concurrency__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/datastream__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/fedora__object__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/inheritance__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/metadata__datastream__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/model__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/property__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/qualified__dublin__core__datastream__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/relationship__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/rels__ext__datastream__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/repository__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/rf__datastream__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/semantic__node__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/solr__config__options__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/solr__mapper__spec.rb.i +0 -0
- data/.hg/store/data/spec/unit/solr__service__spec.rb.i +0 -0
- data/.hg/store/data/tasks/rspec.rake.i +0 -0
- data/.hg/store/undo +0 -0
- data/.hg/undo.branch +1 -0
- data/.hg/undo.dirstate +0 -0
- data/.hgignore +7 -0
- data/.hgtags +14 -0
- data/COPYING.txt +674 -0
- data/COYING.LESSER.txt +165 -0
- data/History.txt +34 -0
- data/LICENSE +20 -0
- data/License.txt +58 -0
- data/Manifest.txt +1 -1
- data/README.rdoc +13 -54
- data/README.txt +59 -0
- data/Rakefile +35 -0
- data/VERSION +1 -0
- data/active-fedora.gemspec +359 -0
- data/config/fedora.yml +16 -0
- data/config/solr_mappings.yml +14 -0
- data/config/solr_mappings_af_0.1.yml +16 -0
- data/config/solr_mappings_bl_2.4.yml +14 -0
- data/lib/active_fedora.rb +66 -6
- data/lib/active_fedora/base.rb +59 -23
- data/lib/active_fedora/datastream.rb +1 -1
- data/lib/active_fedora/metadata_datastream.rb +14 -7
- data/lib/active_fedora/model.rb +4 -4
- data/lib/active_fedora/rels_ext_datastream.rb +1 -1
- data/lib/active_fedora/semantic_node.rb +4 -3
- data/lib/active_fedora/solr_mapper.rb +17 -0
- data/lib/active_fedora/solr_service.rb +44 -2
- data/lib/fedora/base.rb +38 -0
- data/lib/fedora/connection.rb +210 -0
- data/lib/fedora/datastream.rb +56 -0
- data/lib/fedora/fedora_object.rb +161 -0
- data/lib/fedora/formats.rb +30 -0
- data/lib/fedora/generic_search.rb +71 -0
- data/lib/fedora/repository.rb +287 -0
- data/lib/ruby-fedora.rb +20 -0
- data/lib/util/class_level_inheritable_attributes.rb +23 -0
- data/script/console +15 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/solr/config/schema-1.5.xml +468 -0
- data/solr/config/schema.xml +174 -212
- data/solr/config/solrconfig-1.5.xml +1069 -0
- data/spec/active_fedora_spec.rb +7 -0
- data/spec/fixtures/changeme155.xml +255 -0
- data/spec/fixtures/dino.jpg +0 -0
- data/spec/fixtures/minivan.jpg +0 -0
- data/spec/fixtures/test_12.foxml.xml +121 -0
- data/spec/integration/base_file_management_spec.rb +20 -0
- data/spec/integration/base_spec.rb +196 -0
- data/spec/integration/bug_spec.rb +57 -0
- data/spec/integration/datastream_spec.rb +60 -0
- data/spec/integration/datastreams_crud_spec.rb +208 -0
- data/spec/integration/fedora_object_spec.rb +77 -0
- data/spec/integration/full_featured_model_spec.rb +207 -0
- data/spec/integration/model_spec.rb +54 -0
- data/spec/integration/rels_ext_datastream_spec.rb +67 -0
- data/spec/integration/repository_spec.rb +297 -0
- data/spec/integration/rf_fedora_object_spec.rb +95 -0
- data/spec/integration/semantic_node_spec.rb +95 -0
- data/spec/integration/solr_service_spec.rb +33 -0
- data/spec/samples/models/audio_record.rb +29 -0
- data/spec/samples/models/image.rb +5 -0
- data/spec/samples/models/oral_history.rb +50 -0
- data/spec/samples/models/seminar.rb +29 -0
- data/spec/samples/models/seminar_audio_file.rb +34 -0
- data/spec/samples/oh_qdc.xml +32 -0
- data/spec/samples/oral_history_sample.xml +38 -0
- data/spec/samples/oral_history_sample_model.rb +39 -0
- data/spec/samples/oral_history_xml.xml +35 -0
- data/spec/spec.opts +5 -0
- data/spec/spec_helper.rb +41 -0
- data/spec/unit/active_fedora_spec.rb +15 -0
- data/spec/unit/base_cma_spec.rb +25 -0
- data/spec/unit/base_datastream_management_spec.rb +119 -0
- data/spec/unit/base_extra_spec.rb +108 -0
- data/spec/unit/base_file_management_spec.rb +90 -0
- data/spec/unit/base_loader_spec.rb +43 -0
- data/spec/unit/base_spec.rb +584 -0
- data/spec/unit/connection_spec.rb +25 -0
- data/spec/unit/content_model_spec.rb +51 -0
- data/spec/unit/datastream_concurrency_spec.rb +59 -0
- data/spec/unit/datastream_spec.rb +85 -0
- data/spec/unit/fedora_object_spec.rb +66 -0
- data/spec/unit/inheritance_spec.rb +46 -0
- data/spec/unit/metadata_datastream_spec.rb +290 -0
- data/spec/unit/model_spec.rb +186 -0
- data/spec/unit/property_spec.rb +50 -0
- data/spec/unit/qualified_dublin_core_datastream_spec.rb +177 -0
- data/spec/unit/relationship_spec.rb +77 -0
- data/spec/unit/rels_ext_datastream_spec.rb +99 -0
- data/spec/unit/repository_spec.rb +136 -0
- data/spec/unit/rf_datastream_spec.rb +49 -0
- data/spec/unit/semantic_node_spec.rb +354 -0
- data/spec/unit/solr_config_options_spec.rb +98 -0
- data/spec/unit/solr_mapper_spec.rb +31 -0
- data/spec/unit/solr_service_spec.rb +83 -0
- data/tasks/hoe.rake +0 -0
- data/tasks/rspec.rake +29 -0
- metadata +373 -55
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
require File.join( File.dirname(__FILE__), "../spec_helper" )
|
|
2
|
+
|
|
3
|
+
require 'active_fedora'
|
|
4
|
+
|
|
5
|
+
describe ActiveFedora::SemanticNode do
|
|
6
|
+
|
|
7
|
+
before(:all) do
|
|
8
|
+
class SpecNode
|
|
9
|
+
include ActiveFedora::SemanticNode
|
|
10
|
+
has_relationship "collection_members", :has_collection_member
|
|
11
|
+
end
|
|
12
|
+
@node = SpecNode.new
|
|
13
|
+
class SpecModel < ActiveFedora::Base
|
|
14
|
+
has_relationship("parts", :is_part_of, :inbound => true)
|
|
15
|
+
has_relationship("containers", :is_member_of)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
@test_object = SpecModel.new
|
|
19
|
+
@test_object.save
|
|
20
|
+
|
|
21
|
+
@part1 = ActiveFedora::Base.new()
|
|
22
|
+
@part1.add_relationship(:is_part_of, @test_object)
|
|
23
|
+
@part1.save
|
|
24
|
+
@part2 = ActiveFedora::Base.new()
|
|
25
|
+
@part2.add_relationship(:is_part_of, @test_object)
|
|
26
|
+
@part2.save
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@container1 = ActiveFedora::Base.new()
|
|
30
|
+
@container1.save
|
|
31
|
+
@container2 = ActiveFedora::Base.new()
|
|
32
|
+
@container2.save
|
|
33
|
+
|
|
34
|
+
@test_object.add_relationship(:is_member_of, @container1)
|
|
35
|
+
@test_object.add_relationship(:is_member_of, @container2)
|
|
36
|
+
@test_object.save
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
after(:all) do
|
|
40
|
+
@part1.delete
|
|
41
|
+
@part2.delete
|
|
42
|
+
@container1.delete
|
|
43
|
+
@container2.delete
|
|
44
|
+
@test_object.delete
|
|
45
|
+
|
|
46
|
+
Object.send(:remove_const, :SpecModel)
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe '#has_relationship' do
|
|
51
|
+
it "should create useable finders" do
|
|
52
|
+
spec_node = SpecNode.new
|
|
53
|
+
spec_node.collection_members.should == []
|
|
54
|
+
rel = ActiveFedora::Relationship.new(:subject => :self, :predicate => :has_collection_member, :object => @test_object.pid)
|
|
55
|
+
spec_node.add_relationship(rel)
|
|
56
|
+
collection_members = spec_node.collection_members
|
|
57
|
+
collection_members.length.should == 1
|
|
58
|
+
collection_members.first.pid.should == @test_object.pid
|
|
59
|
+
collection_members.first.class.should == @test_object.class
|
|
60
|
+
end
|
|
61
|
+
it "should create useable inbound finders if :inbound is set to true"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
describe "inbound relationship finders" do
|
|
65
|
+
it "should return an array of Base objects" do
|
|
66
|
+
parts = @test_object.parts
|
|
67
|
+
parts.each do |part|
|
|
68
|
+
part.should be_kind_of(ActiveFedora::Base)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
it "_ids should return an array of pids" do
|
|
72
|
+
ids = @test_object.parts_ids
|
|
73
|
+
ids.each do |id|
|
|
74
|
+
id.should satisfy {|id| id == @part1.pid || @part2.pid}
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
describe "outbound relationship finders" do
|
|
80
|
+
it "should return an array of Base objects" do
|
|
81
|
+
containers = @test_object.containers
|
|
82
|
+
containers.length.should > 0
|
|
83
|
+
containers.each do |container|
|
|
84
|
+
container.should be_kind_of(ActiveFedora::Base)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
it "_ids should return an array of pids" do
|
|
88
|
+
ids = @test_object.containers_ids
|
|
89
|
+
ids.each do |id|
|
|
90
|
+
id.should satisfy {|id| id == @container1.pid || @container2.pid}
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require File.join( File.dirname(__FILE__), "../spec_helper" )
|
|
2
|
+
|
|
3
|
+
require 'active_fedora'
|
|
4
|
+
|
|
5
|
+
include ActiveFedora
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
describe ActiveFedora::SolrService do
|
|
9
|
+
describe "#reify_solr_results" do
|
|
10
|
+
before(:all) do
|
|
11
|
+
class FooObject < ActiveFedora::Base
|
|
12
|
+
end
|
|
13
|
+
@test_object = ActiveFedora::Base.new
|
|
14
|
+
@foo_object = FooObject.new
|
|
15
|
+
@test_object.save
|
|
16
|
+
@foo_object.save
|
|
17
|
+
end
|
|
18
|
+
after(:all) do
|
|
19
|
+
@test_object.delete
|
|
20
|
+
@foo_object.delete
|
|
21
|
+
end
|
|
22
|
+
it "should return an array of objects that are of the class stored in active_fedora_model_s" do
|
|
23
|
+
query = "id\:#{SolrService.escape_uri_for_query(@test_object.pid)} OR id\:#{SolrService.escape_uri_for_query(@foo_object.pid)}"
|
|
24
|
+
solr_result = SolrService.instance.conn.query(query)
|
|
25
|
+
result = ActiveFedora::SolrService.reify_solr_results(solr_result)
|
|
26
|
+
result.length.should == 2
|
|
27
|
+
result.each do |r|
|
|
28
|
+
(r.class == ActiveFedora::Base || r.class == FooObject).should be_true
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
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
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'active-fedora'
|
|
2
|
+
|
|
3
|
+
include ActiveFedora
|
|
4
|
+
include SemanticNode
|
|
5
|
+
|
|
6
|
+
class OralHistory < ActiveFedora::Base
|
|
7
|
+
include Model
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# Imitating DataMapper ...
|
|
11
|
+
|
|
12
|
+
has_relationship "parts", :is_part_of, :inbound => true
|
|
13
|
+
|
|
14
|
+
# These are all the properties that don't quite fit into Qualified DC
|
|
15
|
+
# Put them on the object itself (in the properties datastream) for now.
|
|
16
|
+
has_metadata :name => "properties", :type => MetadataDatastream do |m|
|
|
17
|
+
field "alt_title", :string
|
|
18
|
+
field "narrator", :string
|
|
19
|
+
field "interviewer", :integer
|
|
20
|
+
field "transcript_editor", :text
|
|
21
|
+
field "bio", :string
|
|
22
|
+
field "notes", :text
|
|
23
|
+
field "hard_copy_availability", :text
|
|
24
|
+
field "hard_copy_location", :text
|
|
25
|
+
field "other_contributors", :string
|
|
26
|
+
field "restrictions", :text
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
has_metadata :name => "dublin_core", :type => QualifiedDublinCoreDatastream do |m|
|
|
30
|
+
# Default :multiple => true
|
|
31
|
+
#
|
|
32
|
+
# on retrieval, these will be pluralized and returned as arrays
|
|
33
|
+
# ie. subject_entries = my_oral_history.dublin_core.subjects
|
|
34
|
+
#
|
|
35
|
+
# aimint to use method-missing to support calling methods like
|
|
36
|
+
# my_oral_history.subjects OR my_oral_history.titles OR EVEN my_oral_history.title whenever possible
|
|
37
|
+
|
|
38
|
+
#field :name => "subject_heading", :string, {:xml_node => "subject", :encoding => "LCSH"}
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
has_metadata :name => "significant_passages" do |m|
|
|
42
|
+
field "significant_passage", :text
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
has_metadata :name => "sensitive_passages" do |m|
|
|
46
|
+
field "sensitive_passage", :text
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
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
|
|
@@ -0,0 +1,34 @@
|
|
|
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
|
+
#has_metadata "dublin_core", :type => ActiveFedora::MetadataDatastream::QualifiedDublinCore
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<wrapper xmlns:foxml="info:fedora/fedora-system:def/foxml#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
3
|
+
xsi:schemaLocation="info:fedora/fedora-system:def/foxml# http://www.fedora.info/definitions/1/0/foxml1-1.xsd">
|
|
4
|
+
|
|
5
|
+
<foxml:datastream ID='dublin_core' STATE='A' CONTROL_GROUP='X' VERSIONABLE='true'>
|
|
6
|
+
<foxml:datastreamVersion SIZE='1726' ID='dublin_core.0' MIMETYPE='text/xml' LABEL='' CREATED='2009-01-15T17:55:49.277Z'>
|
|
7
|
+
<foxml:xmlContent>
|
|
8
|
+
<dc xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:dcterms='http://purl.org/dc/terms/'>
|
|
9
|
+
<dcterms:type xsi:type='DCMITYPE'>sound</dcterms:type>
|
|
10
|
+
<dcterms:medium>medium</dcterms:medium>
|
|
11
|
+
<dcterms:rights>rights</dcterms:rights>
|
|
12
|
+
<dcterms:language>English</dcterms:language>
|
|
13
|
+
<dcterms:temporal>tmp</dcterms:temporal>
|
|
14
|
+
<dcterms:subject>kw1</dcterms:subject>
|
|
15
|
+
<dcterms:subject>kw2</dcterms:subject>
|
|
16
|
+
<dcterms:creator>creator</dcterms:creator>
|
|
17
|
+
<dcterms:title>title</dcterms:title>
|
|
18
|
+
<dcterms:extent>extent</dcterms:extent>
|
|
19
|
+
<dcterms:format>audio/x-wav</dcterms:format>
|
|
20
|
+
<dcterms:subject xsi:type='LCSH'>sh1</dcterms:subject>
|
|
21
|
+
<dcterms:subject xsi:type='LCSH'>sh2</dcterms:subject>
|
|
22
|
+
<dcterms:spatial>sp1</dcterms:spatial>
|
|
23
|
+
<dcterms:spatial>sp2</dcterms:spatial>
|
|
24
|
+
<dcterms:publisher>jwa</dcterms:publisher>
|
|
25
|
+
<dcterms:alternative>alt</dcterms:alternative>
|
|
26
|
+
<dcterms:description>desc</dcterms:description>
|
|
27
|
+
<dcterms:date>datestr</dcterms:date>
|
|
28
|
+
</dc>
|
|
29
|
+
</foxml:xmlContent>
|
|
30
|
+
</foxml:datastreamVersion>
|
|
31
|
+
</foxml:datastream>
|
|
32
|
+
</wrapper>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<xml>
|
|
2
|
+
<fields>
|
|
3
|
+
<system_create_date>2008-07-02T05:09:42.015Z</system_create_date>
|
|
4
|
+
<system_modified_date>2008-09-29T21:21:52.892Z</system_modified_date>
|
|
5
|
+
<active_fedora_model_field>OralHistory</active_fedora_model_field>
|
|
6
|
+
<id>changeme:14527</id>
|
|
7
|
+
<subject_heading>subject heading</subject_heading>
|
|
8
|
+
<type>type</type>
|
|
9
|
+
<rights>rights</rights>
|
|
10
|
+
<publisher>publisher</publisher>
|
|
11
|
+
<creation_date>creation date</creation_date>
|
|
12
|
+
<identifier>jwa:sample_pid</identifier>
|
|
13
|
+
<format>format</format>
|
|
14
|
+
<extent>extent</extent>
|
|
15
|
+
<language>language</language>
|
|
16
|
+
<description>description</description>
|
|
17
|
+
<title>title</title>
|
|
18
|
+
<medium>medium</medium>
|
|
19
|
+
<spatial_coverage>spatial coverage</spatial_coverage>
|
|
20
|
+
<alt_title>alt_title</alt_title>
|
|
21
|
+
<temporal_coverage>temporal coverage</temporal_coverage>
|
|
22
|
+
<subject>subject</subject>
|
|
23
|
+
<creator>creator</creator>
|
|
24
|
+
<abstract>abstract</abstract>
|
|
25
|
+
<other_contributors>Sally Ride</other_contributors>
|
|
26
|
+
<transcript_editor>Transcript Editor</transcript_editor>
|
|
27
|
+
<restrictions>None</restrictions>
|
|
28
|
+
<bio>Biographic info</bio>
|
|
29
|
+
<series>My Series</series>
|
|
30
|
+
<notes>My Note</notes>
|
|
31
|
+
<location>location</location>
|
|
32
|
+
<hard_copy_availability>Yes</hard_copy_availability>
|
|
33
|
+
<narrator>Narrator</narrator>
|
|
34
|
+
<hard_copy_location>Archives</hard_copy_location>
|
|
35
|
+
<interviewer>Interviewer</interviewer>
|
|
36
|
+
</fields>
|
|
37
|
+
<content/>
|
|
38
|
+
</xml>
|
|
@@ -0,0 +1,39 @@
|
|
|
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::MetadataDatastream 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 do |m|
|
|
21
|
+
m.field "creation_date", :date, :xml_node => "date"
|
|
22
|
+
m.field "abstract", :text, :xml_node => "abstract"
|
|
23
|
+
m.field "rights", :text, :xml_node => "rights"
|
|
24
|
+
m.field "subject_heading", :string, :xml_node => "subject", :encoding => "LCSH"
|
|
25
|
+
m.field "spatial_coverage", :string, :xml_node => "spatial", :encoding => "TGN"
|
|
26
|
+
m.field "temporal_coverage", :string, :xml_node => "temporal", :encoding => "Period"
|
|
27
|
+
m.field "type", :string, :xml_node => "type", :encoding => "DCMITYPE"
|
|
28
|
+
m.field "alt_title", :string, :xml_node => "alternative"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
has_metadata :name => "significant_passages", :type => ActiveFedora::MetadataDatastream do |m|
|
|
32
|
+
m.field "significant_passage", :text
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
has_metadata :name => "sensitive_passages", :type => ActiveFedora::MetadataDatastream do |m|
|
|
36
|
+
m.field "sensitive_passage", :text
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<doc>
|
|
2
|
+
<field name="system_create_date">2008-07-02T05:09:42.015Z</field>
|
|
3
|
+
<field name="system_modified_date">2008-09-29T21:21:52.892Z</field>
|
|
4
|
+
<field name="active_fedora_model_field">OralHistory</field>
|
|
5
|
+
<field name="id">changeme:13919</field>
|
|
6
|
+
<field name="subject_heading_field">subject heading</field>
|
|
7
|
+
<field name="type_field">type</field>
|
|
8
|
+
<field name="rights_text">rights</field>
|
|
9
|
+
<field name="publisher_field">publisher</field>
|
|
10
|
+
<field name="creation_date">creation date</field>
|
|
11
|
+
<field name="identifier_field">jwa:sample_pid</field>
|
|
12
|
+
<field name="format_field">format</field>
|
|
13
|
+
<field name="extent_field">extent</field>
|
|
14
|
+
<field name="language_field">language</field>
|
|
15
|
+
<field name="description_field">description</field>
|
|
16
|
+
<field name="title_field">title</field>
|
|
17
|
+
<field name="medium_field">medium</field>
|
|
18
|
+
<field name="spatial_coverage_field">spatial coverage</field>
|
|
19
|
+
<field name="alt_title_field">alt_title</field>
|
|
20
|
+
<field name="temporal_coverage_field">temporal coverage</field>
|
|
21
|
+
<field name="subject_field">subject</field>
|
|
22
|
+
<field name="creator_field">creator</field>
|
|
23
|
+
<field name="abstract_text">abstract</field>
|
|
24
|
+
<field name="other_contributors_field">Sally Ride</field>
|
|
25
|
+
<field name="transcript_editor_text">Transcript Editor</field>
|
|
26
|
+
<field name="restrictions_text">None</field>
|
|
27
|
+
<field name="bio_field">Biographic info</field>
|
|
28
|
+
<field name="series_field">My Series</field>
|
|
29
|
+
<field name="notes_text">My Note</field>
|
|
30
|
+
<field name="location_field">location</field>
|
|
31
|
+
<field name="hard_copy_availability_text">Yes</field>
|
|
32
|
+
<field name="narrator_field">Narrator</field>
|
|
33
|
+
<field name="hard_copy_location_text">Archives</field>
|
|
34
|
+
<field name="interviewer_integer">Interviewer</field>
|
|
35
|
+
</doc>
|
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
gem 'mocha'
|
|
3
|
+
require 'ruby-debug'
|
|
4
|
+
require 'mocha'
|
|
5
|
+
require 'ruby-fedora'
|
|
6
|
+
begin
|
|
7
|
+
require 'spec'
|
|
8
|
+
rescue LoadError
|
|
9
|
+
gem 'rspec'
|
|
10
|
+
require 'spec'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
|
15
|
+
Dir[File.join(File.dirname(__FILE__)+'/../lib/')+'**/*.rb'].each{|x| require x}
|
|
16
|
+
$VERBOSE=nil
|
|
17
|
+
|
|
18
|
+
# This loads the Fedora and Solr config info from /config/fedora.yml
|
|
19
|
+
# You can load it from a different location by passing a file path as an argument.
|
|
20
|
+
ActiveFedora.init(File.join(File.dirname(__FILE__), "..", "config", "fedora.yml"))
|
|
21
|
+
|
|
22
|
+
Spec::Runner.configure do |config|
|
|
23
|
+
config.mock_with :mocha
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
#TEST_FEDORA_URL = 'http://fedoraAdmin:fedoraAdmin@127.0.0.1:8080/fedora'
|
|
27
|
+
#TEST_SOLR_URL = 'http://127.0.0.1:8080/solr'
|
|
28
|
+
#Fedora::Repository.register(TEST_FEDORA_URL)
|
|
29
|
+
#ActiveFedora::SolrService.register(TEST_SOLR_URL)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def fixture(file)
|
|
34
|
+
File.new(File.join(File.dirname(__FILE__), 'fixtures', file))
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def validate_xml(xml, expected_root)
|
|
38
|
+
root = REXML::Document.new(xml).root
|
|
39
|
+
root.should_not be_nil
|
|
40
|
+
root.name.should == expected_root
|
|
41
|
+
end
|