cul-fedora 0.8.0 → 0.8.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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.0
1
+ 0.8.1
data/cul-fedora.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{cul-fedora}
8
- s.version = "0.8.0"
8
+ s.version = "0.8.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["James Stuart"]
12
- s.date = %q{2011-05-02}
12
+ s.date = %q{2011-05-26}
13
13
  s.description = %q{Columbia-specific Fedora libraries}
14
14
  s.email = %q{tastyhat@jamesstuart.org}
15
15
  s.extra_rdoc_files = [
@@ -29,6 +29,15 @@ module Cul
29
29
  self.pid == other.pid
30
30
  end
31
31
 
32
+ def exists?
33
+ begin
34
+ request
35
+ return true
36
+ rescue Exception => e # we should really do some better checking of error type etc here
37
+ return false
38
+ end
39
+ end
40
+
32
41
  def request(options = {})
33
42
  @server.request(options.merge(:pid => @pid))
34
43
  end
@@ -23,9 +23,8 @@ module Cul
23
23
  def request_path(options = {})
24
24
  sdef = options.delete(:sdef).to_s
25
25
  pid = options.delete(:pid).to_s
26
- request = options.delete(:request).to_s
26
+ request = (options.delete(:request) || "").to_s
27
27
  method = (options.delete(:method) || "/get").to_s
28
- raise(ArgumentError, "request necessary") if request.empty?
29
28
 
30
29
  sdef = "/" + sdef unless sdef.empty?
31
30
  pid = "/" + pid unless pid.empty?
@@ -20,8 +20,33 @@ module Cul
20
20
  rsolr.commit
21
21
  end
22
22
 
23
+ def delete_removed(fedora_server)
24
+
25
+ start = 0
26
+ rows = 500
27
+ results = rsolr.select({:q => "", :fl => "id", :start => start, :rows => rows})
28
+ $stdout.puts "Deleting items removed from Fedora..."
29
+ while(!results["response"]["docs"].empty?)
30
+
31
+ results["response"]["docs"].each do |doc|
32
+ if(!fedora_server.item(doc["id"]).exists?)
33
+ $stdout.puts "Deleting " + doc["id"] + "..."
34
+ rsolr.delete_by_query("id:" + doc["id"].to_s.gsub(/:/,'\\:'))
35
+ end
36
+ end
37
+
38
+ start = start + rows
39
+ results = rsolr.select({:q => "", :fl => "id", :start => start, :rows => rows})
40
+ end
41
+
42
+ rsolr.commit
43
+
44
+ end
45
+
23
46
  def ingest(options = {})
47
+
24
48
  format = options.delete(:format) || raise(ArgumentError, "needs format")
49
+ fedora_server = options.delete(:fedora_server) || raise(ArgumentError, "needs fedora server")
25
50
 
26
51
  items = options.delete(:items) || []
27
52
  items = [items] unless items.kind_of?(Array)
@@ -30,10 +55,14 @@ module Cul
30
55
  ignore = options.delete(:ignore) || []
31
56
  ignore = [ignore] unless ignore.kind_of?(Array)
32
57
 
58
+ delete = options.delete(:delete_removed) || false
33
59
  overwrite = options.delete(:overwrite) || false
34
60
  process = options.delete(:process) || nil
35
61
  skip = options.delete(:skip) || nil
36
62
 
63
+ if delete
64
+ delete_removed(fedora_server)
65
+ end
37
66
 
38
67
  collections.each do |collection|
39
68
  items |= collection.listMembers
@@ -85,9 +114,19 @@ module Cul
85
114
  break if process <= 0
86
115
  end
87
116
 
117
+ if to_add.length >= 500
118
+ $stdout.puts "Adding Batch..."
119
+ rsolr.add(to_add)
120
+ to_add.clear
121
+ end
122
+
123
+ end
124
+
125
+ if to_add.length > 0
126
+ $stdout.puts "Adding Batch..."
127
+ rsolr.add(to_add)
128
+ to_add.clear
88
129
  end
89
-
90
- rsolr.add(to_add)
91
130
  rsolr.commit
92
131
 
93
132
  return {:results => results, :errors => errors}
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cul-fedora
3
3
  version: !ruby/object:Gem::Version
4
- hash: 63
4
+ hash: 61
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 8
9
- - 0
10
- version: 0.8.0
9
+ - 1
10
+ version: 0.8.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - James Stuart
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-02 00:00:00 -04:00
18
+ date: 2011-05-26 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency