active-fedora 1.1.0 → 1.1.1

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.
@@ -1,3 +1,11 @@
1
+ 1.1.1 2010-03-22
2
+
3
+ Bug: .load_objects wipes out datastream attributes from model-defined datastreams (ie. label and mimeType)
4
+
5
+ 1.1.0 2010-03-20
6
+
7
+ Feature #822: Export & Ingest Fedora Objects
8
+
1
9
  1.0.9 2010-03-10
2
10
 
3
11
  !! Requires a new Solr schema by default. We recommend updating solr with the schema.xml located at http://bitbucket.org/mediashelf/active_fedora/src/tip/solr/config/schema.xml. If you want to keep using the old schema.xml, you must save the solr mappings file from http://bitbucket.org/mediashelf/active_fedora/src/tip/config/solr_mappings_af_0.1.yml as config/solr_mappings.yml in your application(s).
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.0
1
+ 1.1.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{active-fedora}
8
- s.version = "1.1.0"
8
+ s.version = "1.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Matt Zumwalt", "McClain Looney"]
12
- s.date = %q{2010-03-21}
12
+ s.date = %q{2010-03-22}
13
13
  s.description = %q{ActiveFedora provides for creating and managing objects in the Fedora Repository Architecture.}
14
14
  s.email = %q{matt.zumwalt@yourmediashelf.com}
15
15
  s.extra_rdoc_files = [
@@ -214,12 +214,12 @@ Gem::Specification.new do |s|
214
214
  "solr/config/schema-1.5.xml",
215
215
  "solr/config/schema.xml",
216
216
  "solr/config/solrconfig-1.5.xml",
217
- "spec/active_fedora_spec.rb",
218
217
  "spec/fixtures/changeme155.xml",
219
218
  "spec/fixtures/dino.jpg",
220
219
  "spec/fixtures/minivan.jpg",
221
220
  "spec/fixtures/test_12.foxml.xml",
222
221
  "spec/integration/base_file_management_spec.rb",
222
+ "spec/integration/base_loader_spec.rb",
223
223
  "spec/integration/base_spec.rb",
224
224
  "spec/integration/bug_spec.rb",
225
225
  "spec/integration/datastream_spec.rb",
@@ -248,7 +248,6 @@ Gem::Specification.new do |s|
248
248
  "spec/unit/base_datastream_management_spec.rb",
249
249
  "spec/unit/base_extra_spec.rb",
250
250
  "spec/unit/base_file_management_spec.rb",
251
- "spec/unit/base_loader_spec.rb",
252
251
  "spec/unit/base_spec.rb",
253
252
  "spec/unit/connection_spec.rb",
254
253
  "spec/unit/content_model_spec.rb",
@@ -277,8 +276,8 @@ Gem::Specification.new do |s|
277
276
  s.rubygems_version = %q{1.3.6}
278
277
  s.summary = %q{A convenience libary for manipulating MODS (Metadata Object Description Schema) documents.}
279
278
  s.test_files = [
280
- "spec/active_fedora_spec.rb",
281
- "spec/integration/base_file_management_spec.rb",
279
+ "spec/integration/base_file_management_spec.rb",
280
+ "spec/integration/base_loader_spec.rb",
282
281
  "spec/integration/base_spec.rb",
283
282
  "spec/integration/bug_spec.rb",
284
283
  "spec/integration/datastream_spec.rb",
@@ -303,7 +302,6 @@ Gem::Specification.new do |s|
303
302
  "spec/unit/base_datastream_management_spec.rb",
304
303
  "spec/unit/base_extra_spec.rb",
305
304
  "spec/unit/base_file_management_spec.rb",
306
- "spec/unit/base_loader_spec.rb",
307
305
  "spec/unit/base_spec.rb",
308
306
  "spec/unit/connection_spec.rb",
309
307
  "spec/unit/content_model_spec.rb",
@@ -335,7 +335,7 @@ module ActiveFedora
335
335
  doc.elements.each("//foxml:datastream[@ID='#{name}']") do |el|
336
336
  # datastreams remain marked as new if the foxml doesn't have an entry for that datastream
337
337
  ds.new_object = false
338
- proto.datastreams[name]=ds.class.from_xml(ds, el)
338
+ proto.datastreams[name]=ds.class.from_xml(ds, el)
339
339
  end
340
340
  end
341
341
  proto.inner_object.new_object = false
@@ -492,8 +492,14 @@ module ActiveFedora
492
492
  def configure_defined_datastreams
493
493
  if self.class.ds_specs
494
494
  self.class.ds_specs.each do |name,ar|
495
+ if self.datastreams.has_key?(name)
496
+ attributes = self.datastreams[name].attributes
497
+ else
498
+ attributes = {:label=>""}
499
+ end
495
500
  ds = ar.first.new(:dsid=>name)
496
501
  ar.last.call(ds)
502
+ ds.attributes = attributes.merge(ds.attributes)
497
503
  self.add_datastream(ds)
498
504
  end
499
505
  end
@@ -56,7 +56,7 @@ module ActiveFedora
56
56
  def find(args)
57
57
  if args == :all
58
58
  escaped_class_name = self.name.gsub(/(:)/, '\\:')
59
- q = "active_fedora_model_s:#{escaped_class_name}"
59
+ q = "#{solr_name(:active_fedora_model, :symbol)}:#{escaped_class_name}"
60
60
  elsif args.class == String
61
61
  escaped_id = args.gsub(/(:)/, '\\:')
62
62
  q = "#{SOLR_DOCUMENT_ID}:#{escaped_id}"
@@ -89,7 +89,7 @@ module ActiveFedora
89
89
  def find_by_solr(query, args={})
90
90
  if query == :all
91
91
  escaped_class_name = self.name.gsub(/(:)/, '\\:')
92
- SolrService.instance.conn.query("active_fedora_model_s:#{escaped_class_name}", args)
92
+ SolrService.instance.conn.query("#{solr_name(:active_fedora_model, :symbol)}:#{escaped_class_name}", args)
93
93
  elsif query.class == String
94
94
  escaped_id = query.gsub(/(:)/, '\\:')
95
95
  SolrService.instance.conn.query("#{SOLR_DOCUMENT_ID}:#{escaped_id}", args)
@@ -3,6 +3,8 @@ module ActiveFedora
3
3
  class RelsExtDatastream < Datastream
4
4
 
5
5
  include ActiveFedora::SemanticNode
6
+ include ActiveFedora::SolrMapper
7
+
6
8
 
7
9
  def initialize(attrs=nil)
8
10
  super
@@ -43,7 +45,7 @@ module ActiveFedora
43
45
  if subject == :self || subject == "info:fedora/#{self.pid}"
44
46
  predicates.each_pair do |predicate, values|
45
47
  values.each do |val|
46
- solr_doc << Solr::Field.new("#{predicate}_s" => val)
48
+ solr_doc << Solr::Field.new(solr_name(predicate, :symbol) => val)
47
49
  end
48
50
  end
49
51
  end
@@ -4,7 +4,7 @@ module ActiveFedora
4
4
  module SolrMapper
5
5
 
6
6
  # Generates solr field names from settings in solr_mappings
7
- def solr_name(field_name, field_type)
7
+ def self.solr_name(field_name, field_type)
8
8
  name = field_name.to_s + ActiveFedora::SolrService.mappings[field_type.to_s].to_s
9
9
  if field_name.kind_of?(Symbol)
10
10
  return name.to_sym
@@ -13,5 +13,9 @@ module ActiveFedora
13
13
  end
14
14
  end
15
15
 
16
+ def solr_name(field_name, field_type)
17
+ ActiveFedora::SolrMapper.solr_name(field_name, field_type)
18
+ end
19
+
16
20
  end
17
21
  end
@@ -1,6 +1,8 @@
1
1
  require 'solr'
2
+ require "active_fedora/solr_mapper"
2
3
  module ActiveFedora
3
4
  class SolrService
5
+
4
6
  @@mappings = {}
5
7
  attr_reader :conn
6
8
 
@@ -25,7 +27,7 @@ module ActiveFedora
25
27
  end
26
28
  results = []
27
29
  solr_result.hits.each do |hit|
28
- model_value = hit["active_fedora_model_s"].first
30
+ model_value = hit[ActiveFedora::SolrMapper.solr_name("active_fedora_model", :symbol)].first
29
31
  if model_value.include?("::")
30
32
  classname = eval(model_value)
31
33
  else
@@ -57,65 +57,4 @@ xsi:schemaLocation="info:fedora/fedora-system:def/foxml# http://www.fedora.info/
57
57
  </foxml:xmlContent>
58
58
  </foxml:datastreamVersion>
59
59
  </foxml:datastream>
60
- </foxml:digitalObject>
61
- <?xml version="1.0" encoding="UTF-8"?>
62
- <foxml:digitalObject VERSION="1.1" PID="demo:12"
63
- xmlns:foxml="info:fedora/fedora-system:def/foxml#"
64
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
65
- xsi:schemaLocation="info:fedora/fedora-system:def/foxml# http://www.fedora.info/definitions/1/0/foxml1-1.xsd">
66
- <foxml:objectProperties>
67
- <foxml:property NAME="info:fedora/fedora-system:def/model#state" VALUE="Active"/>
68
- <foxml:property NAME="info:fedora/fedora-system:def/model#label" VALUE="Service Definition Object for Document Transform Demo"/>
69
- <foxml:property NAME="info:fedora/fedora-system:def/model#ownerId" VALUE="fedoraAdmin"/>
70
- <foxml:property NAME="info:fedora/fedora-system:def/model#createdDate" VALUE="2008-07-02T05:09:42.015Z"/>
71
- <foxml:property NAME="info:fedora/fedora-system:def/view#lastModifiedDate" VALUE="2009-07-07T23:37:13.950Z"/>
72
- </foxml:objectProperties>
73
- <foxml:datastream ID="AUDIT" STATE="A" CONTROL_GROUP="X" VERSIONABLE="false">
74
- <foxml:datastreamVersion ID="AUDIT.0" LABEL="Audit Trail for this object" CREATED="2008-07-02T05:09:42.015Z" MIMETYPE="text/xml" FORMAT_URI="info:fedora/fedora-system:format/xml.fedora.audit">
75
- <foxml:xmlContent>
76
- <audit:auditTrail xmlns:audit="info:fedora/fedora-system:def/audit#">
77
- <audit:record ID="AUDREC1">
78
- <audit:process type="Fedora API-M"/>
79
- <audit:action>ingest</audit:action>
80
- <audit:componentID></audit:componentID>
81
- <audit:responsibility>fedoraAdmin</audit:responsibility>
82
- <audit:date>2009-07-07T23:37:13.950Z</audit:date>
83
- <audit:justification>Ingested from local file /Volumes/fedora-solr-testing/fedora/client/demo/foxml/local-server-demos/document-transform-demo/sdef_demo_12.xml</audit:justification>
84
- </audit:record>
85
- </audit:auditTrail>
86
- </foxml:xmlContent>
87
- </foxml:datastreamVersion>
88
- </foxml:datastream>
89
- <foxml:datastream ID="DC" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
90
- <foxml:datastreamVersion ID="DC1.0" LABEL="Dublin Core Record for this object" CREATED="2008-07-02T05:09:42.515Z" MIMETYPE="text/xml" FORMAT_URI="http://www.openarchives.org/OAI/2.0/oai_dc/" SIZE="413">
91
- <foxml:xmlContent>
92
- <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
93
- <dc:title>Service Definition Object for Document Transform Demo</dc:title>
94
- <dc:identifier>demo:12</dc:identifier>
95
- </oai_dc:dc>
96
- </foxml:xmlContent>
97
- </foxml:datastreamVersion>
98
- </foxml:datastream>
99
- <foxml:datastream ID="RELS-EXT" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
100
- <foxml:datastreamVersion ID="RELS-EXT1.0" LABEL="RDF Statements about this object" CREATED="2008-07-02T05:09:42.578Z" MIMETYPE="application/rdf+xml" FORMAT_URI="info:fedora/fedora-system:FedoraRELSExt-1.0" SIZE="356">
101
- <foxml:xmlContent>
102
- <rdf:RDF xmlns:fedora-model="info:fedora/fedora-system:def/model#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
103
- <rdf:Description rdf:about="info:fedora/demo:12">
104
- <fedora-model:hasModel rdf:resource="info:fedora/fedora-system:ServiceDefinition-3.0"></fedora-model:hasModel>
105
- </rdf:Description>
106
- </rdf:RDF>
107
- </foxml:xmlContent>
108
- </foxml:datastreamVersion>
109
- </foxml:datastream>
110
- <foxml:datastream ID="METHODMAP" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
111
- <foxml:datastreamVersion ID="METHODMAP1.0" LABEL="Abstract Method Map" CREATED="2008-07-02T05:09:42.515Z" MIMETYPE="text/xml" FORMAT_URI="info:fedora/fedora-system:FedoraSDefMethodMap-1.0" SIZE="293">
112
- <foxml:xmlContent>
113
- <fmm:MethodMap xmlns:fmm="http://fedora.comm.nsdlib.org/service/methodmap" name="Fedora MethodMap for NSDL Exhibit (Style 1)">
114
- <fmm:Method operationName="getDocumentStyle1"></fmm:Method>
115
- <fmm:Method operationName="getDocumentStyle2"></fmm:Method>
116
- </fmm:MethodMap>
117
- </foxml:xmlContent>
118
- </foxml:datastreamVersion>
119
- </foxml:datastream>
120
- </foxml:digitalObject>
121
- foo
60
+ </foxml:digitalObject>
@@ -10,9 +10,9 @@ require File.join( File.dirname(__FILE__), "..","samples","oral_history_sample_m
10
10
 
11
11
  describe ActiveFedora::Base do
12
12
 
13
- # before(:all) do
14
- # require File.join( File.dirname(__FILE__), "..","samples","oral_history" )
15
- # end
13
+ before(:all) do
14
+ ActiveFedora::SolrService.register(ActiveFedora.solr_config[:url])
15
+ end
16
16
 
17
17
  before(:each) do
18
18
  @test_object = OralHistorySampleModel.new
@@ -39,5 +39,20 @@ describe ActiveFedora::Base do
39
39
  result.datastreams_in_memory["sensitive_passages"].new_object?.should be_true
40
40
  end
41
41
  end
42
+ describe "load_instance" do
43
+ it "should retain all datastream attributes pulled from fedora" do
44
+ # raw_object = Fedora::Repository.instance.find_objects("pid=#{@test_object.pid}").first
45
+ raw_object = ActiveFedora::Base.new(:pid=>@test_object.pid, :new_object=>false)
46
+ loaded = OralHistorySampleModel.load_instance(@test_object.pid)
47
+ raw_datastreams = raw_object.datastreams
48
+ loaded_datastreams = loaded.datastreams
49
+ raw_datastreams.each_pair do |k,v|
50
+ v.attributes.each_pair do |attr_name, attr_value|
51
+ loaded_datastreams[k].attributes.should have_key(attr_name)
52
+ loaded_datastreams[k].attributes[attr_name].should == attr_value
53
+ end
54
+ end
55
+ end
56
+ end
42
57
 
43
58
  end
@@ -2,6 +2,10 @@ require File.join( File.dirname(__FILE__), "../spec_helper" )
2
2
 
3
3
  describe ActiveFedora::Base do
4
4
 
5
+ before(:all) do
6
+ ActiveFedora::SolrService.register(ActiveFedora.solr_config[:url])
7
+ end
8
+
5
9
  before(:each) do
6
10
  @test_object = ActiveFedora::Base.new
7
11
  @test_object.save
@@ -90,7 +90,7 @@ describe ActiveFedora::Base do
90
90
  it "should delete object from repository and index" do
91
91
  @test_object.expects(:pid).returns("foo")
92
92
  ActiveFedora::SolrService.instance.conn.expects(:delete).with("foo")
93
- Fedora::Repository.any_instance.stubs(:delete).with(@test_object.inner_object)
93
+ Fedora::Repository.instance.stubs(:delete).with(@test_object.inner_object)
94
94
  @test_object.delete
95
95
  end
96
96
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 1
8
- - 0
9
- version: 1.1.0
8
+ - 1
9
+ version: 1.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Matt Zumwalt
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-03-21 00:00:00 -05:00
18
+ date: 2010-03-22 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -318,12 +318,12 @@ files:
318
318
  - solr/config/schema-1.5.xml
319
319
  - solr/config/schema.xml
320
320
  - solr/config/solrconfig-1.5.xml
321
- - spec/active_fedora_spec.rb
322
321
  - spec/fixtures/changeme155.xml
323
322
  - spec/fixtures/dino.jpg
324
323
  - spec/fixtures/minivan.jpg
325
324
  - spec/fixtures/test_12.foxml.xml
326
325
  - spec/integration/base_file_management_spec.rb
326
+ - spec/integration/base_loader_spec.rb
327
327
  - spec/integration/base_spec.rb
328
328
  - spec/integration/bug_spec.rb
329
329
  - spec/integration/datastream_spec.rb
@@ -352,7 +352,6 @@ files:
352
352
  - spec/unit/base_datastream_management_spec.rb
353
353
  - spec/unit/base_extra_spec.rb
354
354
  - spec/unit/base_file_management_spec.rb
355
- - spec/unit/base_loader_spec.rb
356
355
  - spec/unit/base_spec.rb
357
356
  - spec/unit/connection_spec.rb
358
357
  - spec/unit/content_model_spec.rb
@@ -405,8 +404,8 @@ signing_key:
405
404
  specification_version: 3
406
405
  summary: A convenience libary for manipulating MODS (Metadata Object Description Schema) documents.
407
406
  test_files:
408
- - spec/active_fedora_spec.rb
409
407
  - spec/integration/base_file_management_spec.rb
408
+ - spec/integration/base_loader_spec.rb
410
409
  - spec/integration/base_spec.rb
411
410
  - spec/integration/bug_spec.rb
412
411
  - spec/integration/datastream_spec.rb
@@ -431,7 +430,6 @@ test_files:
431
430
  - spec/unit/base_datastream_management_spec.rb
432
431
  - spec/unit/base_extra_spec.rb
433
432
  - spec/unit/base_file_management_spec.rb
434
- - spec/unit/base_loader_spec.rb
435
433
  - spec/unit/base_spec.rb
436
434
  - spec/unit/connection_spec.rb
437
435
  - spec/unit/content_model_spec.rb
@@ -1,7 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe "ActiveFedora" do
4
- it "fails" do
5
- fail "hey buddy, you should probably rename this file and start specing for real"
6
- end
7
- end