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 +1 -1
- data/cul-fedora.gemspec +2 -2
- data/lib/cul-fedora/item.rb +9 -0
- data/lib/cul-fedora/server.rb +1 -2
- data/lib/cul-fedora/solr.rb +41 -2
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.8.
|
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.
|
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-
|
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 = [
|
data/lib/cul-fedora/item.rb
CHANGED
@@ -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
|
data/lib/cul-fedora/server.rb
CHANGED
@@ -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?
|
data/lib/cul-fedora/solr.rb
CHANGED
@@ -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:
|
4
|
+
hash: 61
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 8
|
9
|
-
-
|
10
|
-
version: 0.8.
|
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-
|
18
|
+
date: 2011-05-26 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|