libis-rosetta_checker 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 40863874b758fc68bd975d1fec901f82f9631b76
4
- data.tar.gz: 6a2276c3c7ad35743c0c849c6b216557d32d5168
3
+ metadata.gz: 8586a77252fe8f251c32bb348149b91a68af8ccc
4
+ data.tar.gz: f89774bd8dadd489dbf67df4ca5f025b05da9bf8
5
5
  SHA512:
6
- metadata.gz: 5fd604dcd4264eccb3ccf862fe491e75f3d581994e13f26b02a98a676b88cbeed657543acb2c8e0f480f46f59297f8e0ffda8ac22fc0fa699c09f9d04aba9b91
7
- data.tar.gz: 6078eda5e7ee0cefeb7e498af8f271a76d95d1bc3f7061d69add24dfb085eca0f815cce7f0bbea74d1e8650e045456d7408c0f1b7f5d2d2853f91fc042ec2db3
6
+ metadata.gz: 3efb31f23bb3ef27d436f8742c3466947ee8616269ff9466cc5bfacc3f21e560e1a8d9c2cd0999a4357a042e470c2f0d662eb98f3fc8c5a8c239507a3dafcacb
7
+ data.tar.gz: a9ebe6db7c594e19a0e2ea6bfa587ba8cbe20bc850dd7e2a3492bdb518c887a082519ff1897fd9d2ecc8872872638d90f7e9c396342a2882cc9a88297f66834e
@@ -59,8 +59,8 @@ module Libis
59
59
 
60
60
  protected
61
61
 
62
- SQL_DATA = %w'ie_id rep_id fl_id original_name owner label group_id entity_type user_c'
63
- CSV_HEADER = %w'parent_type parent file size md5 found name_match' + SQL_DATA
62
+ SQL_DATA = %w'ie_id rep_id fl_id original_name owner label group_id entity_type user_c path'
63
+ CSV_HEADER = %w'parent_type parent file size md5 sha1 found name_match' + SQL_DATA
64
64
 
65
65
  LOG_PATTERN = "[%d #%p] %-5l : %m\n".freeze
66
66
 
@@ -82,7 +82,9 @@ module Libis
82
82
  ci.LABEL as label,
83
83
  cf.GROUPID as group_id,
84
84
  ci.ENTITYTYPE as entity_type,
85
- ci.PARTITIONC as user_c
85
+ ci.PARTITIONC as user_c,
86
+ pm.MID AS mid,
87
+ md.VALUE AS dnx
86
88
  FROM
87
89
  V2KU_PER00.PERMANENT_INDEX ps
88
90
  LEFT JOIN V2KU_SHR00.STORAGE_PARAMETER sp ON sp.STORAGE_ID = ps.STORAGE_ID
@@ -90,6 +92,8 @@ module Libis
90
92
  LEFT JOIN V2KU_REP00.HDECONTROL cf ON cf.PID = ps.STORED_ENTITY_ID
91
93
  LEFT JOIN V2KU_REP00.HDECONTROL cr ON cr.PID = cf.PARENTID
92
94
  LEFT JOIN V2KU_REP00.HDECONTROL ci ON ci.PID = cr.PARENTID
95
+ LEFT JOIN V2KU_REP00.HDEPIDMID pm ON pm.PID = cf.PID
96
+ LEFT JOIN V2KU_REP00.HDEMETADATA md ON md.MID = pm.MID
93
97
  WHERE
94
98
  sp."KEY" = 'DIR_ROOT'
95
99
  AND ps.FILE_SIZE = :filesize
@@ -98,6 +102,7 @@ module Libis
98
102
  AND cf.OBJECTTYPE = 'FILE'
99
103
  AND cr.OBJECTTYPE = 'REPRESENTATION'
100
104
  AND ci.OBJECTTYPE = 'INTELLECTUAL_ENTITY'
105
+ AND md.mdid = 21
101
106
  SQL
102
107
 
103
108
  def setup_logging
@@ -189,19 +194,11 @@ module Libis
189
194
  logger.info "- #{file}"
190
195
  if File.extname(file) == '.bz2'
191
196
  logger.info MSG_DEFLATE
192
- info[:size] = 0
193
- reader = Bzip2::FFI::Reader.open file
194
- md5 = Digest::MD5.new
195
- logger.info MSG_CALC_FC
196
- while (data = reader.read 2048000) do
197
- info[:size] += data.length
198
- md5 << data
199
- end
200
- reader.close
201
197
  info[:parent_type] = 'F'
202
198
  info[:parent] = file
203
199
  info[:file] = File.basename file, '.bz2'
204
- info[:md5] = md5.hexdigest
200
+ logger.info MSG_CALC_FC
201
+ checksum_file Bzip2::FFI::Reader.open(file), info
205
202
  check_file info
206
203
  elsif File.extname(file) == '.zip'
207
204
  logger.info ' - Unpacking'.freeze
@@ -213,23 +210,14 @@ module Libis
213
210
  info[:file] = entry.name
214
211
  logger.info "- #{file}/#{entry.name}"
215
212
  logger.info MSG_CALC_FC
216
- info[:size] = 0
217
- md5 = Digest::MD5.new
218
- reader = entry.get_input_stream
219
- while (data = reader.read 2048000) do
220
- info[:size] += data.length
221
- md5 << data
222
- end
223
- reader.close
224
- info[:md5] = md5.hexdigest
213
+ checksum_file entry.get_input_stream, info
225
214
  check_file info
226
215
  end
227
216
  end
228
217
  else
229
218
  begin
230
219
  logger.info MSG_CALC_FC
231
- info[:size] = File.size file
232
- info[:md5] = Digest::MD5.file file
220
+ checksum_file File.open(file), info
233
221
  check_file info
234
222
  rescue Exception
235
223
  logger.error "Could not access file '#{file}'"
@@ -237,6 +225,20 @@ module Libis
237
225
  end
238
226
  end
239
227
 
228
+ def checksum_file(reader, info)
229
+ info[:size] = 0
230
+ md5 = Digest::MD5.new
231
+ sha1 = Digest::SHA1.new
232
+ while (data = reader.read 2048000) do
233
+ info[:size] += data.length
234
+ md5 << data
235
+ sha1 << data
236
+ end
237
+ reader.close
238
+ info[:md5] = md5.hexdigest
239
+ info[:sha1] = sha1.hexdigest
240
+ end
241
+
240
242
  def check_file(info)
241
243
  logger.info MSG_CHCK_DB
242
244
 
@@ -245,9 +247,12 @@ module Libis
245
247
 
246
248
  cursor.exec
247
249
 
250
+ info[:found] = 0
248
251
  info_list = []
249
252
 
250
253
  while (found = cursor.fetch_hash)
254
+ dnx = found['DNX'].read
255
+ next unless dnx =~ /<key id="fixityType">SHA1<\/key><key id="fixityValue">#{info[:sha1]}<\/key>/
251
256
  SQL_DATA.each {|x| info[x.to_sym] = found[x.upcase]}
252
257
  logger.info " found match: #{info[:ie_id]}/#{info[:rep_id]}/#{info[:fl_id]}"
253
258
  if info[:original_name] =~ Regexp.new(info[:file].split(/[ #._-]/).join('.*'))
@@ -261,15 +266,13 @@ module Libis
261
266
 
262
267
  end
263
268
 
264
- case cursor.row_count
265
- when 0..1
266
- info[:found] = cursor.row_count
267
- to_report info
268
- else
269
- info_list.each do |i|
270
- i[:found] = cursor.row_count
271
- to_report i
272
- end
269
+ if info_list.empty?
270
+ to_report info
271
+ else
272
+ info_list.each do |i|
273
+ i[:found] = info_list.count
274
+ to_report i
275
+ end
273
276
  end
274
277
 
275
278
  end
@@ -1,5 +1,5 @@
1
1
  module Libis
2
2
  module RosettaChecker
3
- VERSION = "1.0.2"
3
+ VERSION = "1.0.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libis-rosetta_checker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kris Dekeyser
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-20 00:00:00.000000000 Z
11
+ date: 2018-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-oci8