active-fedora 3.2.2 → 3.3.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/Gemfile +2 -2
- data/Gemfile.lock +33 -57
- data/History.txt +9 -0
- data/active-fedora.gemspec +5 -5
- data/lib/active_fedora.rb +37 -10
- data/lib/active_fedora/base.rb +0 -18
- data/lib/active_fedora/datastream.rb +10 -5
- data/lib/active_fedora/datastreams.rb +33 -7
- data/lib/active_fedora/dcrdf_datastream.rb +11 -0
- data/lib/active_fedora/delegating.rb +2 -2
- data/lib/active_fedora/metadata_datastream.rb +3 -2
- data/lib/active_fedora/nested_attributes.rb +0 -1
- data/lib/active_fedora/ntriples_rdf_datastream.rb +19 -0
- data/lib/active_fedora/predicates.rb +4 -0
- data/lib/active_fedora/rdf_datastream.rb +108 -0
- data/lib/active_fedora/rdf_xml_writer.rb +53 -41
- data/lib/active_fedora/relationship_graph.rb +15 -71
- data/lib/active_fedora/rels_ext_datastream.rb +1 -4
- data/lib/active_fedora/rubydora_connection.rb +2 -9
- data/lib/active_fedora/unsaved_digital_object.rb +1 -0
- data/lib/active_fedora/version.rb +1 -1
- data/lib/tasks/active_fedora_dev.rake +1 -1
- data/spec/fixtures/dublin_core_rdf_descMetadata.nt +13 -0
- data/spec/fixtures/rails_root/config/fedora.yml +1 -15
- data/spec/integration/base_loader_spec.rb +0 -1
- data/spec/integration/dc_rdf_datastream_spec.rb +24 -0
- data/spec/integration/full_featured_model_spec.rb +1 -1
- data/spec/integration/model_spec.rb +0 -1
- data/spec/unit/active_fedora_spec.rb +22 -14
- data/spec/unit/base_spec.rb +9 -184
- data/spec/unit/datastream_collections_spec.rb +2 -2
- data/spec/unit/datastream_spec.rb +36 -6
- data/spec/unit/datastreams_spec.rb +251 -0
- data/spec/unit/dc_rdf_datastream_spec.rb +50 -0
- data/spec/unit/metadata_datastream_spec.rb +1 -1
- data/spec/unit/nokogiri_datastream_spec.rb +2 -2
- data/spec/unit/{rdf_xml_writer.rb → rdf_xml_writer_spec.rb} +8 -8
- data/spec/unit/relationship_graph_spec.rb +14 -0
- data/spec/unit/rels_ext_datastream_spec.rb +29 -2
- data/spec/unit/rubydora_connection_spec.rb +2 -4
- data/spec/unit/unsaved_digital_object_spec.rb +22 -9
- metadata +106 -258
- data/.hg/00changelog.i +0 -0
- data/.hg/branch +0 -1
- data/.hg/branch.cache +0 -2
- data/.hg/dirstate +0 -0
- data/.hg/hgrc +0 -2
- data/.hg/requires +0 -2
- 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 +0 -1
- data/.hg/undo.dirstate +0 -0
- data/.hgignore +0 -7
- data/.hgtags +0 -14
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
active-fedora (3.
|
|
4
|
+
active-fedora (3.3.0)
|
|
5
5
|
activeresource (>= 3.0.0)
|
|
6
6
|
activesupport (>= 3.0.0)
|
|
7
7
|
equivalent-xml
|
|
@@ -10,38 +10,36 @@ PATH
|
|
|
10
10
|
mime-types (>= 1.16)
|
|
11
11
|
multipart-post (= 1.1.2)
|
|
12
12
|
nokogiri
|
|
13
|
-
om (>= 1.
|
|
13
|
+
om (>= 1.5.1)
|
|
14
14
|
rdf
|
|
15
15
|
rdf-rdfxml
|
|
16
|
-
rubydora (~> 0.
|
|
16
|
+
rubydora (~> 0.5.1)
|
|
17
17
|
solr-ruby (>= 0.0.6)
|
|
18
|
-
solrizer (
|
|
18
|
+
solrizer (~> 1.2.0)
|
|
19
19
|
xml-simple (>= 1.0.12)
|
|
20
20
|
|
|
21
21
|
GEM
|
|
22
22
|
remote: http://rubygems.org/
|
|
23
23
|
specs:
|
|
24
24
|
RedCloth (4.2.9)
|
|
25
|
-
activemodel (3.1
|
|
26
|
-
activesupport (= 3.1
|
|
25
|
+
activemodel (3.2.1)
|
|
26
|
+
activesupport (= 3.2.1)
|
|
27
27
|
builder (~> 3.0.0)
|
|
28
|
+
activeresource (3.2.1)
|
|
29
|
+
activemodel (= 3.2.1)
|
|
30
|
+
activesupport (= 3.2.1)
|
|
31
|
+
activesupport (3.2.1)
|
|
28
32
|
i18n (~> 0.6)
|
|
29
|
-
activeresource (3.1.3)
|
|
30
|
-
activemodel (= 3.1.3)
|
|
31
|
-
activesupport (= 3.1.3)
|
|
32
|
-
activesupport (3.1.3)
|
|
33
33
|
multi_json (~> 1.0)
|
|
34
34
|
addressable (2.2.6)
|
|
35
35
|
akami (1.0.0)
|
|
36
36
|
gyoku (>= 0.4.0)
|
|
37
|
-
archive-tar-minitar (0.5.2)
|
|
38
37
|
builder (3.0.0)
|
|
39
|
-
childprocess (0.
|
|
38
|
+
childprocess (0.3.0)
|
|
40
39
|
ffi (~> 1.0.6)
|
|
41
|
-
|
|
42
|
-
daemons (1.1.5)
|
|
40
|
+
daemons (1.1.6)
|
|
43
41
|
diff-lcs (1.1.3)
|
|
44
|
-
equivalent-xml (0.2.
|
|
42
|
+
equivalent-xml (0.2.9)
|
|
45
43
|
nokogiri (>= 1.4.3)
|
|
46
44
|
facets (2.9.3)
|
|
47
45
|
fastercsv (1.5.4)
|
|
@@ -51,33 +49,27 @@ GEM
|
|
|
51
49
|
httpi (0.9.5)
|
|
52
50
|
rack
|
|
53
51
|
i18n (0.6.0)
|
|
54
|
-
jettywrapper (1.2.
|
|
52
|
+
jettywrapper (1.2.1)
|
|
55
53
|
activesupport (>= 3.0.0)
|
|
56
54
|
childprocess
|
|
57
55
|
i18n
|
|
58
56
|
logger
|
|
59
57
|
mediashelf-loggable
|
|
60
|
-
linecache (0.46)
|
|
61
|
-
rbx-require-relative (> 0.0.4)
|
|
62
|
-
linecache19 (0.5.12)
|
|
63
|
-
ruby_core_source (>= 0.1.4)
|
|
64
58
|
logger (1.2.8)
|
|
65
59
|
mediashelf-loggable (0.4.9)
|
|
66
60
|
metaclass (0.0.1)
|
|
67
61
|
mime-types (1.17.2)
|
|
68
|
-
mocha (0.10.
|
|
62
|
+
mocha (0.10.3)
|
|
69
63
|
metaclass (~> 0.0.1)
|
|
70
64
|
multi_json (1.0.4)
|
|
71
65
|
multipart-post (1.1.2)
|
|
72
66
|
nokogiri (1.5.0)
|
|
73
67
|
nori (1.0.2)
|
|
74
|
-
om (1.
|
|
68
|
+
om (1.5.1)
|
|
75
69
|
mediashelf-loggable
|
|
76
70
|
nokogiri (>= 1.4.2)
|
|
77
|
-
rack (1.4.
|
|
71
|
+
rack (1.4.1)
|
|
78
72
|
rake (0.9.2.2)
|
|
79
|
-
rbx-require-relative (0.0.5)
|
|
80
|
-
rcov (0.9.11)
|
|
81
73
|
rdf (0.3.4.1)
|
|
82
74
|
addressable (>= 2.2.6)
|
|
83
75
|
rdf-rdfxml (0.3.5)
|
|
@@ -87,30 +79,15 @@ GEM
|
|
|
87
79
|
mime-types (>= 1.16)
|
|
88
80
|
rsolr (1.0.6)
|
|
89
81
|
builder (>= 2.1.2)
|
|
90
|
-
rspec (2.
|
|
91
|
-
rspec-core (~> 2.
|
|
92
|
-
rspec-expectations (~> 2.
|
|
93
|
-
rspec-mocks (~> 2.
|
|
94
|
-
rspec-core (2.
|
|
95
|
-
rspec-expectations (2.
|
|
82
|
+
rspec (2.8.0)
|
|
83
|
+
rspec-core (~> 2.8.0)
|
|
84
|
+
rspec-expectations (~> 2.8.0)
|
|
85
|
+
rspec-mocks (~> 2.8.0)
|
|
86
|
+
rspec-core (2.8.0)
|
|
87
|
+
rspec-expectations (2.8.0)
|
|
96
88
|
diff-lcs (~> 1.1.2)
|
|
97
|
-
rspec-mocks (2.
|
|
98
|
-
|
|
99
|
-
columnize (>= 0.1)
|
|
100
|
-
ruby-debug-base (~> 0.10.4.0)
|
|
101
|
-
ruby-debug-base (0.10.4)
|
|
102
|
-
linecache (>= 0.3)
|
|
103
|
-
ruby-debug-base19 (0.11.25)
|
|
104
|
-
columnize (>= 0.3.1)
|
|
105
|
-
linecache19 (>= 0.5.11)
|
|
106
|
-
ruby_core_source (>= 0.1.4)
|
|
107
|
-
ruby-debug19 (0.11.6)
|
|
108
|
-
columnize (>= 0.3.1)
|
|
109
|
-
linecache19 (>= 0.5.11)
|
|
110
|
-
ruby-debug-base19 (>= 0.11.19)
|
|
111
|
-
ruby_core_source (0.1.5)
|
|
112
|
-
archive-tar-minitar (>= 0.5.2)
|
|
113
|
-
rubydora (0.4.1)
|
|
89
|
+
rspec-mocks (2.8.0)
|
|
90
|
+
rubydora (0.5.1)
|
|
114
91
|
activemodel
|
|
115
92
|
activesupport
|
|
116
93
|
fastercsv
|
|
@@ -127,16 +104,18 @@ GEM
|
|
|
127
104
|
nori (~> 1.0)
|
|
128
105
|
wasabi (~> 2.0)
|
|
129
106
|
solr-ruby (0.0.8)
|
|
130
|
-
solrizer (1.
|
|
107
|
+
solrizer (1.2.0)
|
|
131
108
|
daemons
|
|
132
|
-
mediashelf-loggable
|
|
109
|
+
mediashelf-loggable (~> 0.4.7)
|
|
133
110
|
nokogiri
|
|
134
|
-
om (>= 1.
|
|
111
|
+
om (>= 1.5.0)
|
|
135
112
|
stomp
|
|
136
113
|
xml-simple
|
|
137
|
-
solrizer-fedora (1.
|
|
138
|
-
active-fedora (>=
|
|
114
|
+
solrizer-fedora (1.2.3)
|
|
115
|
+
active-fedora (>= 3.1.0)
|
|
116
|
+
activesupport
|
|
139
117
|
fastercsv
|
|
118
|
+
jettywrapper (>= 1.1.0)
|
|
140
119
|
rsolr
|
|
141
120
|
solr-ruby (>= 0.0.6)
|
|
142
121
|
solrizer (>= 1.0.0)
|
|
@@ -155,9 +134,6 @@ DEPENDENCIES
|
|
|
155
134
|
jettywrapper (>= 1.2.0)
|
|
156
135
|
mocha (>= 0.9.8)
|
|
157
136
|
rake
|
|
158
|
-
rcov
|
|
159
137
|
rspec (~> 2.0)
|
|
160
|
-
|
|
161
|
-
ruby-debug19
|
|
162
|
-
solrizer-fedora (>= 1.1.3)
|
|
138
|
+
solrizer-fedora (~> 1.2.3)
|
|
163
139
|
yard
|
data/History.txt
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
3.3.0
|
|
2
|
+
A label set on an unsaved datastream should be saved in the repository
|
|
3
|
+
Should be able to add checksumType parameter when creating a datastream
|
|
4
|
+
Upgrade rubydora to 0.5.1 so we can do checksum verification
|
|
5
|
+
Pass checksumVerification parameter to rubydora
|
|
6
|
+
Allow you to override the class of file datastream that gets created by using ActiveFedora::Base.has_file_datastream
|
|
7
|
+
Allow `predicate_mappings.yml` to specify explicit namespace prefixes to use instead of ns0, ns1, ..., nsN when serializing a `RelsExtDatastream`.
|
|
8
|
+
HYDRA-737 fixes for tests failing under ree 1.8.7-2011.12
|
|
9
|
+
|
|
1
10
|
3.2.2
|
|
2
11
|
Rubydora 0.4.1
|
|
3
12
|
Fixed bugs where updating datastream properties would overwrite content.
|
data/active-fedora.gemspec
CHANGED
|
@@ -20,21 +20,21 @@ Gem::Specification.new do |s|
|
|
|
20
20
|
s.add_dependency('mime-types', '>= 1.16')
|
|
21
21
|
s.add_dependency('multipart-post', "= 1.1.2")
|
|
22
22
|
s.add_dependency('nokogiri')
|
|
23
|
-
s.add_dependency('om', '>= 1.
|
|
24
|
-
s.add_dependency('solrizer', '
|
|
23
|
+
s.add_dependency('om', '>= 1.5.1')
|
|
24
|
+
s.add_dependency('solrizer', '~>1.2.0')
|
|
25
25
|
s.add_dependency("activeresource", '>= 3.0.0')
|
|
26
26
|
s.add_dependency("activesupport", '>= 3.0.0')
|
|
27
27
|
s.add_dependency("mediashelf-loggable")
|
|
28
28
|
s.add_dependency("equivalent-xml")
|
|
29
29
|
s.add_dependency("facets")
|
|
30
|
-
s.add_dependency("rubydora", '~>0.
|
|
30
|
+
s.add_dependency("rubydora", '~>0.5.1')
|
|
31
31
|
s.add_dependency("rdf")
|
|
32
32
|
s.add_dependency("rdf-rdfxml")
|
|
33
33
|
s.add_development_dependency("yard")
|
|
34
34
|
s.add_development_dependency("RedCloth") # for RDoc formatting
|
|
35
35
|
s.add_development_dependency("rake")
|
|
36
|
-
s.add_development_dependency("rcov")
|
|
37
|
-
s.add_development_dependency("solrizer-fedora", "
|
|
36
|
+
# s.add_development_dependency("rcov") # not ruby 1.9 compatible
|
|
37
|
+
s.add_development_dependency("solrizer-fedora", "~>1.2.3") # used by the fixtures rake tasks
|
|
38
38
|
s.add_development_dependency("jettywrapper", ">=1.2.0")
|
|
39
39
|
s.add_development_dependency("rspec", "~> 2.0")
|
|
40
40
|
s.add_development_dependency("mocha", ">= 0.9.8")
|
data/lib/active_fedora.rb
CHANGED
|
@@ -4,6 +4,7 @@ require 'active_fedora/solr_service'
|
|
|
4
4
|
require 'active_fedora/rubydora_connection'
|
|
5
5
|
require 'active_support/core_ext/class/attribute'
|
|
6
6
|
require 'active_support/core_ext/object'
|
|
7
|
+
require 'active_support/core_ext/hash/indifferent_access'
|
|
7
8
|
|
|
8
9
|
SOLR_DOCUMENT_ID = ActiveFedora::SolrService.id_field unless defined?(SOLR_DOCUMENT_ID)
|
|
9
10
|
ENABLE_SOLR_UPDATES = true unless defined?(ENABLE_SOLR_UPDATES)
|
|
@@ -22,6 +23,7 @@ module ActiveFedora #:nodoc:
|
|
|
22
23
|
autoload :FileManagement
|
|
23
24
|
autoload :RelationshipGraph
|
|
24
25
|
autoload :Datastream
|
|
26
|
+
autoload :DCRDFDatastream
|
|
25
27
|
autoload :Datastreams
|
|
26
28
|
autoload :Delegating
|
|
27
29
|
autoload :DigitalObject
|
|
@@ -31,9 +33,11 @@ module ActiveFedora #:nodoc:
|
|
|
31
33
|
autoload :MetadataDatastream
|
|
32
34
|
autoload :MetadataDatastreamHelper
|
|
33
35
|
autoload :NokogiriDatastream
|
|
36
|
+
autoload :NtriplesRDFDatastream
|
|
34
37
|
autoload :Property
|
|
35
38
|
autoload :Persistence
|
|
36
39
|
autoload :QualifiedDublinCoreDatastream
|
|
40
|
+
autoload :RDFDatastream
|
|
37
41
|
autoload :RelsExtDatastream
|
|
38
42
|
autoload :ServiceDefinitions
|
|
39
43
|
autoload :SemanticNode
|
|
@@ -84,6 +88,14 @@ module ActiveFedora #:nodoc:
|
|
|
84
88
|
# 1. look in config_options[:fedora_config_path]. If it finds a solr.yml there, it will use it.
|
|
85
89
|
# 2. If it does not find a solr.yml and the fedora.yml contains a solr url, it will raise an configuration error
|
|
86
90
|
# 3. If it does not find a solr.yml and the fedora.yml does not contain a solr url, it will look in: +Rails.root+/config, +current working directory+/config, then the solr.yml shipped with gem
|
|
91
|
+
|
|
92
|
+
# Options allowed in fedora.yml
|
|
93
|
+
# first level is the environment (e.g. development, test, production and any custom environments you may have)
|
|
94
|
+
# the second level has these keys:
|
|
95
|
+
# 1. url: url including protocol, user/pass, host, port and path (e.g. http://fedoraAdmin:fedoraAdmin@127.0.0.1:8983/fedora)
|
|
96
|
+
# 2. validateChecksum: indicates to the fedora server whether you want to validate checksums when the datastreams are queried.
|
|
97
|
+
|
|
98
|
+
|
|
87
99
|
def self.init( options={} )
|
|
88
100
|
# Make config_options into a Hash if nil is passed in as the value
|
|
89
101
|
options = {} if options.nil?
|
|
@@ -128,8 +140,8 @@ module ActiveFedora #:nodoc:
|
|
|
128
140
|
config_path = self.send("#{config_type}_config_path".to_sym)
|
|
129
141
|
|
|
130
142
|
logger.info("#{config_type.upcase}: loading ActiveFedora.#{config_type}_config from #{File.expand_path(config_path)}")
|
|
131
|
-
config = YAML
|
|
132
|
-
raise "The #{@config_env.
|
|
143
|
+
config = YAML.load(File.open(config_path)).symbolize_keys
|
|
144
|
+
raise "The #{@config_env.to_sym} environment settings were not found in the #{config_type}.yml config. If you already have a #{config_type}.yml file defined, make sure it defines settings for the #{@config_env} environment" unless config[@config_env.to_sym]
|
|
133
145
|
|
|
134
146
|
config[:url] = determine_url(config_type,config)
|
|
135
147
|
|
|
@@ -137,30 +149,45 @@ module ActiveFedora #:nodoc:
|
|
|
137
149
|
config
|
|
138
150
|
end
|
|
139
151
|
|
|
152
|
+
def self.config_for_environment
|
|
153
|
+
fedora_config[@config_env.to_sym].symbolize_keys
|
|
154
|
+
end
|
|
155
|
+
|
|
140
156
|
# Determines and sets the fedora_config[:url] or solr_config[:url]
|
|
141
157
|
# @param [String] config_type Either 'fedora' or 'solr'
|
|
142
158
|
# @param [Hash] config The config hash
|
|
143
159
|
# @return [String] the solr or fedora url
|
|
144
160
|
def self.determine_url(config_type,config)
|
|
161
|
+
c = config[environment.to_sym]
|
|
162
|
+
c.symbolize_keys!
|
|
145
163
|
if config_type == "fedora"
|
|
146
164
|
# support old-style config
|
|
147
|
-
if
|
|
148
|
-
|
|
165
|
+
url = if c.fetch(:fedora,nil)
|
|
166
|
+
ActiveSupport::Deprecation.warn("Using \"fedora\" in the fedora.yml file is no longer supported")
|
|
167
|
+
c[:fedora]["url"] if config[environment.to_sym].fetch(:fedora,nil)
|
|
149
168
|
else
|
|
150
|
-
|
|
169
|
+
c[:url]
|
|
170
|
+
end
|
|
171
|
+
if url && !c[:user]
|
|
172
|
+
u = URI.parse url
|
|
173
|
+
c[:user] = u.user
|
|
174
|
+
c[:password] = u.password
|
|
175
|
+
c[:url] = "#{u.scheme}://#{u.host}:#{u.port}#{u.path}"
|
|
176
|
+
url = c[:url]
|
|
151
177
|
end
|
|
178
|
+
return url
|
|
152
179
|
else
|
|
153
|
-
return get_solr_url(
|
|
180
|
+
return get_solr_url(c) if config_type == "solr"
|
|
154
181
|
end
|
|
155
182
|
end
|
|
156
183
|
|
|
157
184
|
# Given the solr_config that's been loaded for this environment,
|
|
158
185
|
# determine which solr url to use
|
|
159
186
|
def self.get_solr_url(solr_config)
|
|
160
|
-
if @index_full_text == true && solr_config.has_key?(
|
|
161
|
-
return solr_config[
|
|
162
|
-
elsif solr_config.has_key?(
|
|
163
|
-
return solr_config[
|
|
187
|
+
if @index_full_text == true && solr_config.has_key?(:fulltext) && solr_config[:fulltext].has_key?('url')
|
|
188
|
+
return solr_config[:fulltext]['url']
|
|
189
|
+
elsif solr_config.has_key?(:default) && solr_config[:default].has_key?('url')
|
|
190
|
+
return solr_config[:default]['url']
|
|
164
191
|
elsif solr_config.has_key?('url')
|
|
165
192
|
return solr_config['url']
|
|
166
193
|
elsif solr_config.has_key?(:url)
|
data/lib/active_fedora/base.rb
CHANGED
|
@@ -66,16 +66,6 @@ module ActiveFedora
|
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
# class_attribute :ds_specs
|
|
70
|
-
#
|
|
71
|
-
# def self.inherited(p)
|
|
72
|
-
# # each subclass should get a copy of the parent's datastream definitions, it should not add to the parent's definition table.
|
|
73
|
-
# p.ds_specs = p.ds_specs.dup
|
|
74
|
-
# super
|
|
75
|
-
# end
|
|
76
|
-
#
|
|
77
|
-
# self.ds_specs = {'RELS-EXT'=> {:type=> ActiveFedora::RelsExtDatastream, :label=>"", :label=>"Fedora Object-to-Object Relationship Metadata", :control_group=>'X', :block=>nil}}
|
|
78
|
-
|
|
79
69
|
# Has this object been saved?
|
|
80
70
|
def new_object?
|
|
81
71
|
inner_object.new?
|
|
@@ -147,14 +137,6 @@ module ActiveFedora
|
|
|
147
137
|
ds_specs[dsid] ? ds_specs[dsid][:type] : ActiveFedora::Datastream
|
|
148
138
|
end
|
|
149
139
|
|
|
150
|
-
#This method is used to specify the details of a datastream.
|
|
151
|
-
#args must include :name. Note that this method doesn't actually
|
|
152
|
-
#execute the block, but stores it at the class level, to be executed
|
|
153
|
-
#by any future instantiations.
|
|
154
|
-
def self.has_metadata(args, &block)
|
|
155
|
-
ds_specs[args[:name]]= {:type => args[:type], :label => args.fetch(:label,""), :control_group => args.fetch(:control_group,"X"), :disseminator => args.fetch(:disseminator,""), :url => args.fetch(:url,""),:block => block}
|
|
156
|
-
end
|
|
157
|
-
|
|
158
140
|
def self.create(args = {})
|
|
159
141
|
obj = self.new(args)
|
|
160
142
|
obj.save
|
|
@@ -7,9 +7,10 @@ module ActiveFedora
|
|
|
7
7
|
attr_accessor :dirty, :last_modified, :fields
|
|
8
8
|
before_create :add_mime_type, :add_ds_location
|
|
9
9
|
|
|
10
|
-
def initialize(digital_object, dsid)
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
def initialize(digital_object, dsid, options={})
|
|
11
|
+
## When you use the versions feature of rubydora (0.5.x), you need to have a 3 argument constructor
|
|
12
|
+
self.fields={}
|
|
13
|
+
self.dirty = false
|
|
13
14
|
super
|
|
14
15
|
end
|
|
15
16
|
|
|
@@ -26,6 +27,10 @@ module ActiveFedora
|
|
|
26
27
|
end
|
|
27
28
|
end
|
|
28
29
|
|
|
30
|
+
def inspect
|
|
31
|
+
"#<#{self.class}:#{self.hash} @pid=\"#{pid}\" @dsid=\"#{dsid}\" @controlGroup=\"#{controlGroup}\" @dirty=\"#{dirty}\" @mimeType=\"#{mimeType}\" >"
|
|
32
|
+
end
|
|
33
|
+
|
|
29
34
|
#compatibility method for rails' url generators. This method will
|
|
30
35
|
#urlescape escape dots, which are apparently
|
|
31
36
|
#invalid characters in a dsid.
|
|
@@ -35,7 +40,7 @@ module ActiveFedora
|
|
|
35
40
|
|
|
36
41
|
# Test whether this datastream been modified since it was last saved
|
|
37
42
|
def dirty?
|
|
38
|
-
|
|
43
|
+
dirty || changed?
|
|
39
44
|
end
|
|
40
45
|
|
|
41
46
|
def new_object?
|
|
@@ -71,7 +76,7 @@ module ActiveFedora
|
|
|
71
76
|
# @param [Nokogiri::XML::Node] node the "foxml:datastream" node from a FOXML file
|
|
72
77
|
def self.from_xml(tmpl, node)
|
|
73
78
|
tmpl.instance_variable_set(:@dirty, false)
|
|
74
|
-
tmpl.
|
|
79
|
+
tmpl.controlGroup= node['CONTROL_GROUP']
|
|
75
80
|
tmpl
|
|
76
81
|
end
|
|
77
82
|
|
|
@@ -30,7 +30,7 @@ module ActiveFedora
|
|
|
30
30
|
self.class.ds_specs.each do |name,ds_config|
|
|
31
31
|
ds = datastreams[name]
|
|
32
32
|
if ds && ds.controlGroup == 'E' && ds_config[:disseminator].present?
|
|
33
|
-
ds.dsLocation= "#{
|
|
33
|
+
ds.dsLocation= "#{ActiveFedora.config_for_environment[:url]}/objects/#{pid}/methods/#{ds_config[:disseminator]}"
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
true
|
|
@@ -180,7 +180,7 @@ module ActiveFedora
|
|
|
180
180
|
# Add the given file as a datastream in the object
|
|
181
181
|
#
|
|
182
182
|
# @param [File] file the file to add
|
|
183
|
-
# @param [Hash] opts options: :dsid, :label, :mimeType, :prefix
|
|
183
|
+
# @param [Hash] opts options: :dsid, :label, :mimeType, :prefix, :checksumType
|
|
184
184
|
def add_file_datastream(file, opts={})
|
|
185
185
|
label = opts.has_key?(:label) ? opts[:label] : ""
|
|
186
186
|
attrs = {:dsLabel => label, :controlGroup => 'M', :blob => file, :prefix=>opts[:prefix]}
|
|
@@ -191,7 +191,8 @@ module ActiveFedora
|
|
|
191
191
|
elsif opts.has_key?(:content_type)
|
|
192
192
|
attrs.merge!({:mimeType=>opts[:content_type]})
|
|
193
193
|
end
|
|
194
|
-
|
|
194
|
+
attrs[:checksumType] = opts[:checksumType] if opts[:checksumType]
|
|
195
|
+
ds = create_datastream(self.class.datastream_class_for_name(opts[:dsid]), opts[:dsid], attrs)
|
|
195
196
|
add_datastream(ds)
|
|
196
197
|
end
|
|
197
198
|
|
|
@@ -201,10 +202,9 @@ module ActiveFedora
|
|
|
201
202
|
klass = type.kind_of?(Class) ? type : type.constantize
|
|
202
203
|
raise ArgumentError, "Argument dsid must be of type string" unless dsid.kind_of?(String) || dsid.kind_of?(NilClass)
|
|
203
204
|
ds = klass.new(inner_object, dsid)
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
ds.dsLocation = opts[:dsLocation] if opts[:dsLocation]
|
|
205
|
+
[:mimeType, :controlGroup, :dsLabel, :dsLocation, :checksumType].each do |key|
|
|
206
|
+
ds.send("#{key}=".to_sym, opts[key]) if opts[key]
|
|
207
|
+
end
|
|
208
208
|
blob = opts[:blob]
|
|
209
209
|
if blob
|
|
210
210
|
if !ds.mimeType.present?
|
|
@@ -236,5 +236,31 @@ module ActiveFedora
|
|
|
236
236
|
end
|
|
237
237
|
end
|
|
238
238
|
|
|
239
|
+
|
|
240
|
+
module ClassMethods
|
|
241
|
+
#This method is used to specify the details of a datastream.
|
|
242
|
+
#args must include :name. Note that this method doesn't actually
|
|
243
|
+
#execute the block, but stores it at the class level, to be executed
|
|
244
|
+
#by any future instantiations.
|
|
245
|
+
def has_metadata(args, &block)
|
|
246
|
+
ds_specs[args[:name]]= {:type => args[:type], :label => args.fetch(:label,""), :control_group => args.fetch(:control_group,"X"), :disseminator => args.fetch(:disseminator,""), :url => args.fetch(:url,""),:block => block}
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
# Specify the attributes of a file bearing datastream
|
|
250
|
+
#
|
|
251
|
+
# === Options
|
|
252
|
+
# [:name]
|
|
253
|
+
# The dsid of the datastream
|
|
254
|
+
# [:type]
|
|
255
|
+
# The class the datastream should have
|
|
256
|
+
# [:label]
|
|
257
|
+
# The default value to put in the dsLabel field
|
|
258
|
+
# [:control_group]
|
|
259
|
+
# The type of controlGroup to store the datastream as. Defaults to M
|
|
260
|
+
def has_file_datastream(args)
|
|
261
|
+
ds_specs[args.fetch(:name, "content")]= {:type => args[:type], :label => args.fetch(:label,"File Datastream"), :control_group => args.fetch(:control_group,"M")}
|
|
262
|
+
end
|
|
263
|
+
end
|
|
264
|
+
|
|
239
265
|
end
|
|
240
266
|
end
|