cul-fedora 0.8.2 → 0.8.3
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/cul-fedora.gemspec +2 -2
- data/lib/cul-fedora/item.rb +6 -1
- data/lib/cul-fedora/server.rb +9 -8
- data/lib/cul-fedora/solr.rb +14 -8
- data/lib/cul-fedora.rb +1 -1
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.8.
|
1
|
+
0.8.3
|
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.3"
|
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-06-
|
12
|
+
s.date = %q{2011-06-02}
|
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
@@ -3,12 +3,12 @@ require "open3"
|
|
3
3
|
module Cul
|
4
4
|
module Fedora
|
5
5
|
class Item
|
6
|
+
|
6
7
|
attr_reader :server, :pid
|
7
8
|
include Open3
|
8
9
|
|
9
10
|
URI_TO_PID = 'info:fedora/'
|
10
11
|
|
11
|
-
|
12
12
|
def <=>(other)
|
13
13
|
pid <=> other.pid
|
14
14
|
end
|
@@ -20,10 +20,15 @@ module Cul
|
|
20
20
|
def initialize(*args)
|
21
21
|
options = args.extract_options!
|
22
22
|
@server = options[:server] || Server.new(options[:server_config])
|
23
|
+
@logger = options[:logger]
|
23
24
|
@pid = options[:pid] || options[:uri] || raise(ArgumentError, "requires uri or pid")
|
24
25
|
@pid = @pid.to_s.sub(URI_TO_PID, "")
|
25
26
|
end
|
26
27
|
|
28
|
+
def logger
|
29
|
+
@logger ||= Logger.new
|
30
|
+
end
|
31
|
+
|
27
32
|
def ==(other)
|
28
33
|
self.server == other.server
|
29
34
|
self.pid == other.pid
|
data/lib/cul-fedora/server.rb
CHANGED
@@ -1,20 +1,24 @@
|
|
1
1
|
module Cul
|
2
2
|
module Fedora
|
3
3
|
class Server
|
4
|
+
|
4
5
|
attr_reader :riurl, :riquery
|
5
6
|
|
6
7
|
def initialize(*args)
|
7
8
|
options = args.extract_options!
|
8
9
|
@riurl = options[:riurl] || raise(ArgumentError, "Must provide riurl argument")
|
9
10
|
@riquery = options[:riquery] || raise(ArgumentError, "Must provide riquery argument")
|
10
|
-
@hc = options[:http_client]
|
11
|
+
@hc = options[:http_client]
|
12
|
+
@logger = options[:logger]
|
11
13
|
end
|
12
14
|
|
13
|
-
def
|
14
|
-
|
15
|
+
def logger
|
16
|
+
@logger ||= Logger.new(STDOUT)
|
15
17
|
end
|
16
18
|
|
17
|
-
|
19
|
+
def item(uri)
|
20
|
+
Item.new(:server => self, :uri => uri, :logger => logger)
|
21
|
+
end
|
18
22
|
|
19
23
|
def request(options= {})
|
20
24
|
http_client.get_content(*request_path(options))
|
@@ -37,16 +41,13 @@ module Cul
|
|
37
41
|
return [uri, query]
|
38
42
|
end
|
39
43
|
|
40
|
-
def inspect
|
41
|
-
'#<Cul::Fedora::Server:' + self.object_id.to_s + ' @riurl="' + @riurl + '">'
|
42
|
-
end
|
43
|
-
|
44
44
|
private
|
45
45
|
|
46
46
|
def http_client
|
47
47
|
@hc ||= HTTPClient.new()
|
48
48
|
@hc
|
49
49
|
end
|
50
|
+
|
50
51
|
end
|
51
52
|
end
|
52
53
|
end
|
data/lib/cul-fedora/solr.rb
CHANGED
@@ -1,10 +1,16 @@
|
|
1
1
|
module Cul
|
2
2
|
module Fedora
|
3
3
|
class Solr
|
4
|
+
|
4
5
|
attr_reader :url
|
6
|
+
|
5
7
|
def initialize(config = {})
|
6
8
|
@url = config[:url] || raise(ArgumentError, "must provide url")
|
9
|
+
@logger = config[:logger]
|
10
|
+
end
|
7
11
|
|
12
|
+
def logger
|
13
|
+
@logger ||= Logger.new(STDOUT)
|
8
14
|
end
|
9
15
|
|
10
16
|
def item_exists?(item)
|
@@ -25,12 +31,12 @@ module Cul
|
|
25
31
|
start = 0
|
26
32
|
rows = 500
|
27
33
|
results = rsolr.select({:q => "", :fl => "id", :start => start, :rows => rows})
|
28
|
-
|
34
|
+
logger.info "Deleting items removed from Fedora..."
|
29
35
|
while(!results["response"]["docs"].empty?)
|
30
36
|
|
31
37
|
results["response"]["docs"].each do |doc|
|
32
38
|
if(!fedora_server.item(doc["id"]).exists?)
|
33
|
-
|
39
|
+
logger.info "Deleting " + doc["id"] + "..."
|
34
40
|
rsolr.delete_by_query("id:" + doc["id"].to_s.gsub(/:/,'\\:'))
|
35
41
|
end
|
36
42
|
end
|
@@ -77,7 +83,7 @@ module Cul
|
|
77
83
|
items.each do |i|
|
78
84
|
|
79
85
|
if(ignore.index(i.pid).nil? == false)
|
80
|
-
|
86
|
+
logger.info "Ignoring " + i.pid + "..."
|
81
87
|
next
|
82
88
|
end
|
83
89
|
|
@@ -95,7 +101,7 @@ module Cul
|
|
95
101
|
end
|
96
102
|
|
97
103
|
|
98
|
-
|
104
|
+
logger.info "Indexing " + i.pid + "..."
|
99
105
|
|
100
106
|
result_hash = i.send("index_for_#{format}", options)
|
101
107
|
|
@@ -114,7 +120,7 @@ module Cul
|
|
114
120
|
end
|
115
121
|
|
116
122
|
if to_add.length >= 500
|
117
|
-
|
123
|
+
logger.info "Adding batch to commit queue..."
|
118
124
|
rsolr.add(to_add)
|
119
125
|
to_add.clear
|
120
126
|
end
|
@@ -122,10 +128,12 @@ module Cul
|
|
122
128
|
end
|
123
129
|
|
124
130
|
if to_add.length > 0
|
125
|
-
|
131
|
+
logger.info "Adding batch to commit queue..."
|
126
132
|
rsolr.add(to_add)
|
127
133
|
to_add.clear
|
128
134
|
end
|
135
|
+
|
136
|
+
logger.info "Committing changes to Solr..."
|
129
137
|
rsolr.commit
|
130
138
|
|
131
139
|
return {:results => results, :errors => errors}
|
@@ -133,7 +141,5 @@ module Cul
|
|
133
141
|
end
|
134
142
|
|
135
143
|
end
|
136
|
-
|
137
|
-
|
138
144
|
end
|
139
145
|
end
|
data/lib/cul-fedora.rb
CHANGED
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: 57
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 8
|
9
|
-
-
|
10
|
-
version: 0.8.
|
9
|
+
- 3
|
10
|
+
version: 0.8.3
|
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-06-
|
18
|
+
date: 2011-06-02 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|