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

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

Overview

noinspection RubyResolve

Constant Summary

Constants included from Status

Status::STATUS

Instance Method Summary collapse

Methods included from WorkItem

#add_item, #each, #get_items, #get_parent, #get_root, #get_run, #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, #status, #status=, #status_label

Instance Method Details

#checksum(checksum_type) ⇒ Object



52
53
54
# File 'lib/libis/workflow/base/file_item.rb', line 52

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

#filelistObject



23
24
25
# File 'lib/libis/workflow/base/file_item.rb', line 23

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

#filenameObject



15
16
17
# File 'lib/libis/workflow/base/file_item.rb', line 15

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

#filename=(name) ⇒ Object



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

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
    # ignored
  end
  self.properties[:filename] = name
end

#filepathObject



27
28
29
# File 'lib/libis/workflow/base/file_item.rb', line 27

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

#fullpathObject



31
32
33
# File 'lib/libis/workflow/base/file_item.rb', line 31

def fullpath
  self.properties[:filename]
end


60
61
62
# File 'lib/libis/workflow/base/file_item.rb', line 60

def link
  self.properties[:link]
end

#link=(name) ⇒ Object



64
65
66
# File 'lib/libis/workflow/base/file_item.rb', line 64

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

#nameObject



19
20
21
# File 'lib/libis/workflow/base/file_item.rb', line 19

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

#safe_nameObject



74
75
76
# File 'lib/libis/workflow/base/file_item.rb', line 74

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

#set_checksum(checksum_type, value) ⇒ Object



56
57
58
# File 'lib/libis/workflow/base/file_item.rb', line 56

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

#set_info(info) ⇒ Object



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

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