cul-fedora 0.8.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
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