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



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).to_sym]
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
    # 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).to_sym] = 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