Skip to content

Commit a04a691

Browse files
committed
Add read_only column to allow sorting for useability; account for deleted items
1 parent 7e7456b commit a04a691

File tree

1 file changed

+37
-26
lines changed

1 file changed

+37
-26
lines changed

jupiter_output_scripts/jupiter_delta.rb

Lines changed: 37 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -26,34 +26,43 @@ def initialize(output_directory, date)
2626

2727
# Based on and try to reuse the mapping methods in the class
2828
# https://gist.github.com/lagoan/839cf8ce997fa17b529d84776b91cdac#file-export_collections_csv-rb-L181-L196
29-
def map_change_event_to_scholaris_item(change_event)
30-
#result = CollectionCSVExporter.item_data_row(change_event.item)
31-
item = change_event.item.decorate
32-
itemTranslation = ItemCSVExporter.new
29+
def map_change_event_to_scholaris_item(change_event, obj)
30+
3331
scholaris_mapped_change_event = {}
34-
itemTranslation.easy_dspace_mapping do |method_key, _method_mapping|
35-
# keys starting with "manual_" are special cases that need to be handled differently
36-
jupiter_key = method_key.sub(/^manual_/,'')
37-
# only caputure value if the key exists in the list of object changes in the change event
38-
if change_event.object_changes && change_event.object_changes.key?(jupiter_key)
39-
value = if method_key.start_with?('manual_')
40-
itemTranslation.handle_manual_value(item, method_key)
41-
else
42-
item.send(method_key)
43-
end
44-
scholaris_mapped_change_event[_method_mapping] = value
45-
end
46-
end;
32+
itemTranslation = ItemCSVExporter.new
33+
begin
34+
item = obj.decorate
35+
itemTranslation.easy_dspace_mapping do |method_key, _method_mapping|
36+
# keys starting with "manual_" are special cases that need to be handled differently
37+
jupiter_key = method_key.sub(/^manual_/,'')
38+
# only caputure value if the key exists in the list of object changes in the change event
39+
if change_event.object_changes && change_event.object_changes.key?(jupiter_key)
40+
value = if method_key.start_with?('manual_')
41+
itemTranslation.handle_manual_value(item, method_key)
42+
else
43+
item.send(method_key)
44+
end
45+
scholaris_mapped_change_event[_method_mapping] = value
46+
end
47+
end;
48+
rescue NoMethodError
49+
puts "Mapping Error on jupiter ID #{change_event.item_id} of type #{change_event.item_type} and event #{change_event.event}"
50+
end
4751
return scholaris_mapped_change_event
4852
end
4953

50-
def process_change_event(change_event)
54+
def process_change_event(change_event, obj)
5155

52-
if change_event.item_type == "Thesis"
53-
elsif change_event.item_type == "Item"
54-
result = map_change_event_to_scholaris_item(change_event)
56+
if change_event.event == "destroy"
57+
result = {}
5558
else
56-
result = '{"error"}'
59+
if change_event.item_type == "Thesis"
60+
result = '{"scholaris mapping unsupported"}'
61+
elsif change_event.item_type == "Item"
62+
result = map_change_event_to_scholaris_item(change_event, obj)
63+
else
64+
result = '{"error"}'
65+
end
5766
end
5867

5968
# return dictionary of key value pairs
@@ -65,7 +74,7 @@ def process_change_event(change_event)
6574

6675
def perform()
6776
CSV.open(@output_file, 'wb') do |csv|
68-
csv << ['type', 'change_id', 'jupiter_id', 'changed at', 'event', 'jupiter delta', 'scholaris mapped delta', 'jupiter delta formatted', 'scholaris mapped delta formatted']
77+
csv << ['type', 'change_id', 'jupiter_id', 'is_jupiter_currently_readonly', 'changed at', 'event', 'jupiter delta', 'scholaris mapped delta', 'jupiter delta formatted', 'scholaris mapped delta formatted']
6978
PaperTrail::Version.where(created_at: @date..).find_each do |row|
7079
# How to communicate key/value mapping differences from Jupiter to DSpace?
7180
# First part, add documentation describing how to use the output
@@ -75,8 +84,10 @@ def perform()
7584
# https://gist.github.com/lagoan/839cf8ce997fa17b529d84776b91cdac#file-export_collections_csv-rb-L181-L196
7685
# I.e., test if the key exists in the object_changes and creating a new
7786
# structure in a new column listing the Scholaris key/value pairs to update
78-
scholaris_mapping = process_change_event(row)
79-
csv << [row.item_type, row.id, row.item_id, row.created_at, row.event, row.object_changes, scholaris_mapping, JSON.pretty_generate(row.object_changes), JSON.pretty_generate(scholaris_mapping)]
87+
obj = row.item
88+
read_only = "True" if obj && obj.read_only?
89+
scholaris_mapping = process_change_event(row, obj)
90+
csv << [row.item_type, row.id, row.item_id, read_only, row.created_at, row.event, row.object_changes, scholaris_mapping, JSON.pretty_generate(row.object_changes), JSON.pretty_generate(scholaris_mapping)]
8091
end
8192
end
8293

@@ -91,4 +102,4 @@ def perform()
91102

92103
end
93104

94-
ChangesReport.new("/tmp/",Date.new(2005, 8, 8)).perform()
105+
ChangesReport.new("/tmp/",Date.new(2025, 3, 15)).perform()

0 commit comments

Comments
 (0)