Class: Libis::Services::Digitool::DigitalEntityManager

Inherits:
Object
  • Object
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

Methods included from SoapClient

#configure, #operations, #request

Constructor Details

#initializeDigitalEntityManager

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


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


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


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


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


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


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


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


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


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