Class: Libis::Services::Digitool::DigitalEntityManager
- Inherits:
-
Object
- Object
- Libis::Services::Digitool::DigitalEntityManager
show all
- Includes:
- SoapClient, Singleton
- Defined in:
- lib/libis/services/digitool/digital_entity_manager.rb
Instance Attribute Summary
Attributes included from SoapClient
#client
Instance Method Summary
collapse
-
#add_relations(pid, relation_type, related_pids) ⇒ Object
-
#create_object(de_info) ⇒ Object
-
#delete_object(pid) ⇒ Object
-
#initialize ⇒ DigitalEntityManager
constructor
A new instance of DigitalEntityManager.
-
#link_acl(pid, mid) ⇒ Object
-
#link_dc(pid, mid) ⇒ Object
-
#link_md(pid, mid, md_name, md_type) ⇒ Object
-
#retrieve_object(pid) ⇒ Object
-
#unlink_acl(pid, mid) ⇒ Object
-
#unlink_all_acl(pid) ⇒ Object
-
#unlink_all_dc(pid) ⇒ Object
-
#unlink_all_md(pid, md_name = nil, md_type = nil) ⇒ Object
-
#unlink_dc(pid, mid) ⇒ Object
-
#unlink_md(pid, mid, md_name, md_type) ⇒ Object
-
#update_object(de_info, update_options = {}) ⇒ Object
-
#update_stream(pid, filename) ⇒ Object
Methods included from SoapClient
#configure, #operations, #request
Constructor Details
Returns a new instance of DigitalEntityManager.
16
17
18
|
# File 'lib/libis/services/digitool/digital_entity_manager.rb', line 16
def initialize
setup 'DigitalEntityManager'
end
|
Instance Method Details
#add_relations(pid, relation_type, related_pids) ⇒ Object
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
# File 'lib/libis/services/digitool/digital_entity_manager.rb', line 113
def add_relations(pid, relation_type, related_pids)
relations = []
related_pids.each do |p|
relations << {'cmd' => 'insert',
'type' => relation_type.to_s,
'pid' => p.to_s
}
end
update_object({'pid' => pid.to_s,
'relation' => relations
},
{'relation' => 'delta'}
)
end
|
#create_object(de_info) ⇒ Object
20
21
22
23
|
# File 'lib/libis/services/digitool/digital_entity_manager.rb', line 20
def create_object(de_info)
de_call = create_digital_entity_call de_info, 'create'
request :digital_entity_call, :general => general.to_s, :digital_entity_call => de_call.to_s
end
|
#delete_object(pid) ⇒ Object
30
31
32
33
34
35
36
37
38
|
# File 'lib/libis/services/digitool/digital_entity_manager.rb', line 30
def delete_object(pid)
de_info = {'pid' => pid}
de_options = {'metadata' => 'all', 'relation' => 'all'}
de_call1 = create_digital_entity_call de_info, 'update', de_options
result = request :digital_entity_call, :general => 200.to_s, :digital_entity_call => de_call1.to_s
return result if result[:error] and result[:error].size > 0
de_call2 = create_digital_entity_call de_info, 'delete'
request :digital_entity_call, :general => general.to_s, :digital_entity_call => de_call2.to_s
end
|
#link_acl(pid, mid) ⇒ Object
58
59
60
|
# File 'lib/libis/services/digitool/digital_entity_manager.rb', line 58
def link_acl(pid, mid)
link_md pid, mid, 'accessrights', 'rights_md'
end
|
#link_dc(pid, mid) ⇒ Object
46
47
48
|
# File 'lib/libis/services/digitool/digital_entity_manager.rb', line 46
def link_dc(pid, mid)
link_md pid, mid, 'descriptive', 'dc'
end
|
#link_md(pid, mid, md_name, md_type) ⇒ Object
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/libis/services/digitool/digital_entity_manager.rb', line 70
def link_md(pid, mid, md_name, md_type)
update_object({'pid' => pid.to_s,
'metadata' =>
[{'cmd' => 'insert',
'link_to_exists' => 'true',
'mid' => mid.to_s,
'name' => md_name,
'type' => md_type
}
]
},
{'metadata' => 'delta'}
)
end
|
#retrieve_object(pid) ⇒ Object
40
41
42
43
44
|
# File 'lib/libis/services/digitool/digital_entity_manager.rb', line 40
def retrieve_object(pid)
de_info = {'pid' => pid}
de_call = create_digital_entity_call de_info, 'retrieve'
request :digital_entity_call, :general => general.to_s, :digital_entity_call => de_call.to_s
end
|
#unlink_acl(pid, mid) ⇒ Object
62
63
64
|
# File 'lib/libis/services/digitool/digital_entity_manager.rb', line 62
def unlink_acl(pid, mid)
unlink_md pid, mid, 'accessrights', 'rights_md'
end
|
#unlink_all_acl(pid) ⇒ Object
66
67
68
|
# File 'lib/libis/services/digitool/digital_entity_manager.rb', line 66
def unlink_all_acl(pid)
unlink_all_md pid, 'accessrights', 'rights_md'
end
|
#unlink_all_dc(pid) ⇒ Object
54
55
56
|
# File 'lib/libis/services/digitool/digital_entity_manager.rb', line 54
def unlink_all_dc(pid)
unlink_all_md pid, 'descriptive', 'dc'
end
|
#unlink_all_md(pid, md_name = nil, md_type = nil) ⇒ Object
100
101
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/libis/services/digitool/digital_entity_manager.rb', line 100
def unlink_all_md(pid, md_name = nil, md_type = nil)
de_info = {'pid' => pid.to_s,
'metadata' =>
[{'cmd' => 'delete',
'shared' => 'true'
}
]
}
de_info['metadata'][0]['name'] = md_name if md_name
de_info['metadata'][0]['type'] = md_type if md_type
update_object(de_info, {'metadata' => 'all'})
end
|
#unlink_dc(pid, mid) ⇒ Object
50
51
52
|
# File 'lib/libis/services/digitool/digital_entity_manager.rb', line 50
def unlink_dc(pid, mid)
unlink_md pid, mid, 'descriptive', 'dc'
end
|
#unlink_md(pid, mid, md_name, md_type) ⇒ Object
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/libis/services/digitool/digital_entity_manager.rb', line 85
def unlink_md(pid, mid, md_name, md_type)
update_object({'pid' => pid.to_s,
'metadata' =>
[{'cmd' => 'delete',
'shared' => 'true',
'mid' => mid.to_s,
'name' => md_name,
'type' => md_type
}
]
},
{'metadata' => 'delta'}
)
end
|
#update_object(de_info, update_options = {}) ⇒ Object
25
26
27
28
|
# File 'lib/libis/services/digitool/digital_entity_manager.rb', line 25
def update_object(de_info, update_options = {})
de_call = create_digital_entity_call de_info, 'update', update_options
request :digital_entity_call, :general => general.to_s, :digital_entity_call => de_call.to_s
end
|
#update_stream(pid, filename) ⇒ Object
128
129
130
131
132
133
134
135
136
137
138
|
# File 'lib/libis/services/digitool/digital_entity_manager.rb', line 128
def update_stream(pid, filename)
update_object({'pid' => pid,
'stream_ref' =>
{'cmd' => 'update',
'store_command' => 'copy',
'location' => 'nfs',
'file_name' => filename
}
}
)
end
|