Module: Libis::Workflow::Base::FileItem

Includes:
WorkItem
Included in:
DirItem, FileItem
Defined in:
lib/libis/workflow/base/file_item.rb

Overview

noinspection RubyResolve

Instance Method Summary collapse

Methods included from WorkItem

#add_item, #each, #get_item_list, #get_items, #get_parent, #get_root, #get_run, #label, #label=, #labelpath, #labels, #name=, #namepath, #names, #save, #save!, #size, #to_filename, #to_s

Methods included from Logging

#<=, #add_log, #log_message

Methods included from Status

#check_status, #compare_status, #set_status, #status, #status_label, #status_progress, #status_text

Instance Method Details

#checksum(checksum_type) ⇒ Object



50
51
52
# File 'lib/libis/workflow/base/file_item.rb', line 50

def checksum(checksum_type)
  self.properties[('checksum_' + checksum_type.to_s.downcase)]
end

#filelistObject



21
22
23
# File 'lib/libis/workflow/base/file_item.rb', line 21

def filelist
  (self.parent.filelist rescue Array.new).push(filename).compact
end

#filenameObject



13
14
15
# File 'lib/libis/workflow/base/file_item.rb', line 13

def filename
  File.basename(self.properties['filename']) || self.properties['link']
end

#filename=(name) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/libis/workflow/base/file_item.rb', line 33

def filename=(name)
  begin
    stats = ::File.stat name
    self.properties['size'] = stats.size
    self.properties['access_time'] = stats.atime
    self.properties['modification_time'] = stats.mtime
    self.properties['creation_time'] = stats.ctime
    self.properties['mode'] = stats.mode
    self.properties['uid'] = stats.uid
    self.properties['gid'] = stats.gid
    set_checksum(:MD5, ::Digest::MD5.hexdigest(File.read(name))) if File.file?(name)
  rescue => _e
    # ignored
  end
  self.properties['filename'] = name
end

#filepathObject



25
26
27
# File 'lib/libis/workflow/base/file_item.rb', line 25

def filepath
  self.filelist.join('/')
end

#fullpathObject



29
30
31
# File 'lib/libis/workflow/base/file_item.rb', line 29

def fullpath
  self.properties['filename']
end


58
59
60
# File 'lib/libis/workflow/base/file_item.rb', line 58

def link
  self.properties['link']
end

#link=(name) ⇒ Object



62
63
64
# File 'lib/libis/workflow/base/file_item.rb', line 62

def link=(name)
  self.properties['link'] = name
end

#nameObject



17
18
19
# File 'lib/libis/workflow/base/file_item.rb', line 17

def name
  self.properties['name'] || self.filename
end

#safe_nameObject



72
73
74
# File 'lib/libis/workflow/base/file_item.rb', line 72

def safe_name
  self.name.to_s.gsub(/[^\w.-]/) { |s| '%%%02x' % s.ord }
end

#set_checksum(checksum_type, value) ⇒ Object



54
55
56
# File 'lib/libis/workflow/base/file_item.rb', line 54

def set_checksum(checksum_type, value)
  self.properties[('checksum_' + checksum_type.to_s.downcase)] = value
end

#set_info(info) ⇒ Object



66
67
68
69
70
# File 'lib/libis/workflow/base/file_item.rb', line 66

def set_info(info)
  info.each do |k, v|
    self.properties[k] = v
  end
end