Class: Libis::Services::Digitool::MetaDataManager
- Inherits:
-
Object
- Object
- Libis::Services::Digitool::MetaDataManager
show all
- Includes:
- SoapClient, Singleton
- Defined in:
- lib/libis/services/digitool/meta_data_manager.rb
Overview
noinspection RubyStringKeysInHashInspection
Instance Attribute Summary
Attributes included from SoapClient
#client
Instance Method Summary
collapse
-
#add_acl_condition(doc, expressions, negate = false) ⇒ Object
-
#add_acl_copyright(doc, text_file, required = true) ⇒ Object
-
#add_acl_group(doc, group, negate = false) ⇒ Object
-
#add_acl_iprange(doc, iprange, negate = false) ⇒ Object
-
#add_acl_user(doc, user, negate = false) ⇒ Object
-
#add_acl_user_group_ip(doc, user, group, iprange, negate = false) ⇒ Object
-
#create_acl(acl) ⇒ Object
-
#create_acl_expression_group(group, negate = false) ⇒ Object
-
#create_acl_expression_iprange(iprange, negate = false) ⇒ Object
-
#create_acl_expression_user(user, negate = false) ⇒ Object
-
#create_acl_record(acl_info = nil) ⇒ Object
-
#create_dc(dc) ⇒ Object
-
#create_dc_from_xml(xml_doc) ⇒ Object
-
#create_dc_record(dc_info) ⇒ Object
-
#create_dc_record_from_xml(xml_doc) ⇒ Object
-
#delete(mid) ⇒ Object
-
#initialize ⇒ MetaDataManager
constructor
A new instance of MetaDataManager.
-
#retrieve(mid) ⇒ Object
-
#update_acl(mid, acl) ⇒ Object
-
#update_dc(mid, dc) ⇒ Object
Methods included from SoapClient
#configure, #operations, #request
Constructor Details
Returns a new instance of MetaDataManager.
17
18
19
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 17
def initialize
setup 'MetaDataManager'
end
|
Instance Method Details
#add_acl_condition(doc, expressions, negate = false) ⇒ Object
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 141
def add_acl_condition(doc, expressions, negate = false)
root = doc.root
top = root.xpath('ar_conditions')
if top.empty?
top = doc.create_node('ar_conditions')
root << top
else
top = top[0]
end
top << (cond_node = doc.create_node('ar_condition'))
cond_node['negate'] = negate.to_s if negate
cond_node << (exprs_node = doc.create_node('ar_expressions'))
expressions.each do |e|
exprs_node << (expr_node = doc.create_node('ar_expression'))
expr_node['negate'] = e[:negate].to_s if e[:negate]
expr_node['ar_operation'] = e[:operation].to_s if e[:operation]
expr_node << doc.create_text_node('key', e[:key].to_s)
expr_node << doc.create_text_node('val1', e[:val1].to_s)
expr_node << doc.create_text_node('val2', e[:val2].to_s) if e[:val2]
end
doc
end
|
#add_acl_copyright(doc, text_file, required = true) ⇒ Object
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 98
def add_acl_copyright(doc, text_file, required = true)
root = doc.root
top = root.xpath('ar_copyrigths')
if top.empty?
top = doc.create_node('ar_copyrights')
root << top
else
top = top[0]
end
top['required'] = required.to_s if required
child = top.xpath('text_file')
child = child.empty? ? doc.create_node('text_file') : top[0]
child.content = text_file
top << child
doc
end
|
#add_acl_group(doc, group, negate = false) ⇒ Object
129
130
131
132
133
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 129
def add_acl_group(doc, group, negate = false)
expressions = Array.new
group.split.each { |g| expressions << create_acl_expression_group(g, negate) }
add_acl_condition doc, expressions
end
|
#add_acl_iprange(doc, iprange, negate = false) ⇒ Object
135
136
137
138
139
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 135
def add_acl_iprange(doc, iprange, negate = false)
expressions = Array.new
iprange.split.each { |i| expressions << create_acl_expression_iprange(i, negate) }
add_acl_condition doc, expressions
end
|
#add_acl_user(doc, user, negate = false) ⇒ Object
123
124
125
126
127
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 123
def add_acl_user(doc, user, negate = false)
expressions = Array.new
user.split.each { |u| expressions << create_acl_expression_user(u, negate) }
add_acl_condition doc, expressions
end
|
#add_acl_user_group_ip(doc, user, group, iprange, negate = false) ⇒ Object
115
116
117
118
119
120
121
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 115
def add_acl_user_group_ip(doc, user, group, iprange, negate = false)
expressions = []
user.split.each { |u| expressions << create_acl_expression_user(u) } if user
group.split.each { |g| expressions << create_acl_expression_group(g) } if group
iprange.split.each { |i| expressions << create_acl_expression_iprange(i) } if iprange
add_acl_condition doc, expressions, negate
end
|
#create_acl(acl) ⇒ Object
40
41
42
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 40
def create_acl(acl)
request :create_meta_data_entry, :general => general.to_s, :description => nil, :name => 'accessrights', :type => 'rights_md', :value => acl.to_s
end
|
#create_acl_expression_group(group, negate = false) ⇒ Object
172
173
174
175
176
177
178
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 172
def create_acl_expression_group(group, negate = false)
{:operation => 'eq',
:negate => negate.to_s,
:key => 'group_id',
:val1 => group.to_s
}
end
|
#create_acl_expression_iprange(iprange, negate = false) ⇒ Object
180
181
182
183
184
185
186
187
188
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 180
def create_acl_expression_iprange(iprange, negate = false)
return nil unless iprange =~ /(\d+\.\d+\.\d+\.\d+)-(\d+\.\d+\.\d+\.\d+)/
{:operation => 'within',
:negate => negate.to_s,
:key => 'ip_range',
:val1 => $1,
:val2 => $2
}
end
|
#create_acl_expression_user(user, negate = false) ⇒ Object
164
165
166
167
168
169
170
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 164
def create_acl_expression_user(user, negate = false)
{:operation => 'eq',
:negate => negate.to_s,
:key => 'user_id',
:val1 => user.to_s
}
end
|
#create_acl_record(acl_info = nil) ⇒ Object
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 78
def create_acl_record(acl_info = nil)
doc = Libis::Tools::XmlDocument.new
doc.root = doc.create_node('access_right_md',
:namespaces => {:node_ns => 'ar',
'ar' => 'http://com/exlibris/digitool/repository/api/xmlbeans',
'xs' => 'http://www.w3.org/2001/XMLSchema'})
root = doc.root
root['enabled'] = 'true'
return doc unless acl_info
c = acl_info[:copyright]
add_acl_copyright(doc, c[:text_file], c[:required]) if c
e = acl_info[:conditions]
if e
e.each do |x|
add_acl_condition(doc, x[:expressions], x[:negate])
end
end
doc
end
|
#create_dc(dc) ⇒ Object
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 21
def create_dc(dc)
dc_string = dc.to_s
dc_string.force_encoding('UTF-8')
dc_string.gsub!(/<\?xml[^\?]*\?>(\n)*/x, '')
dc_string = '<?xml version="1.0" encoding="UTF-8"?>' + dc_string
request :create_meta_data_entry, :general => general.to_s, :description => nil, :name => 'descriptive', :type => 'dc', :value => dc_string
end
|
#create_dc_from_xml(xml_doc) ⇒ Object
32
33
34
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 32
def create_dc_from_xml(xml_doc)
create_dc_record_from_xml xml_doc
end
|
#create_dc_record(dc_info) ⇒ Object
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 63
def create_dc_record(dc_info)
doc = Libis::Tools::XmlDocument.new
doc.root = doc.create_node('record',
:namespaces => {'dc' => 'http://purl.org/dc/elements/1.1',
'dcterms' => 'http://purl.org/dc/terms',
'xsi' => 'http://www.w3.org/2001/XMLSchema-instance'})
if dc_info
dc_info.each do |k, v|
doc.root << (n = doc.create_text_node(k.to_s, v.to_s))
n['xsi:type'] = 'dcterms:URI' if v =~ /^http:\/\//
end
end
doc
end
|
#create_dc_record_from_xml(xml_doc) ⇒ Object
56
57
58
59
60
61
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 56
def create_dc_record_from_xml(xml_doc)
doc = Libis::Tools::XmlDocument.open xml_doc
records = doc.xpath('/records/record')
return nil unless records.size > 0
create_dc(records[0])
end
|
#delete(mid) ⇒ Object
48
49
50
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 48
def delete(mid)
request :delete_meta_data_entry, :mid => mid.to_s, :general => general.to_s
end
|
#retrieve(mid) ⇒ Object
52
53
54
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 52
def retrieve(mid)
request :retrieve_meta_data_entry, :mid => mid.to_s, :general => general.to_s
end
|
#update_acl(mid, acl) ⇒ Object
44
45
46
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 44
def update_acl(mid, acl)
request :update_meta_data_entry, :mid => mid.to_s, :general => general.to_s, :description => nil, :name => 'accessrights', :type => 'rights_md', :value => acl.to_s
end
|
#update_dc(mid, dc) ⇒ Object
36
37
38
|
# File 'lib/libis/services/digitool/meta_data_manager.rb', line 36
def update_dc(mid, dc)
request :update_meta_data_entry, :mid => mid.to_s, :general => general.to_s, :description => nil, :name => 'descriptive', :type => 'dc', :value => dc.to_s
end
|