-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathloadaip.rb
More file actions
executable file
·59 lines (49 loc) · 1.58 KB
/
loadaip.rb
File metadata and controls
executable file
·59 lines (49 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/env ruby
require 'rubygems'
require 'bundler/setup'
require 'data_mapper'
require './AIPInPremis'
require 'daitss/model/comment'
require 'daitss/model/agent'
require 'daitss/model/account'
require 'daitss/model/eggheadkey'
require 'daitss/model/package'
require 'daitss/model/aip'
require 'daitss/model/event'
require 'daitss/model/project'
require 'daitss/model/request'
require 'daitss/model/sip'
require 'crack'
require 'open-uri'
require 'mongo'
include Daitss
aip_descriptor = ARGV.shift or raise "aip descriptor required"
io = open(aip_descriptor)
doc = XML::Document.io(io)
adapter = DataMapper.setup :default, "postgres://daitss2:daitss2@localhost/daitss_db"
adapter.resource_naming_convention = DataMapper::NamingConventions::Resource::UnderscoredAndPluralizedWithoutModule
DataMapper.finalize
DataMapper::Model.raise_on_save_failure = true
begin
#puts "validating AIP descriptor"
#results = validate_xml aip_descriptor
db = Mongo::Connection.new.db('test')
aip = db.collection('aip')
puts "parsing AIP descriptor"
aipInPremis = AIPInPremis.new
# aip = Aip.new :package => p, :copy => Copy.new
# parse the aip descriptor and build the preservation records
aipInPremis.process(nil, doc)
require 'debugger'
debugger
json = aipInPremis.toJsonAll
aip.save(json)
# puts aip.find_one
aip.find({"id"=>"info:fda/E70ZXZJEL_FNZBHA"}).each { |r| puts r["title"]}
#xml = open("aip.xml").read
#json = Crack::XML.parse(xml)
rescue => e
puts "Caught exception #{e.class}: '#{e.message}' "
e.backtrace.each { |line| puts line}
raise "cannot save aip"
end