Class: Pho::FileManagement::AbstractFileManager

Inherits:
Object
  • Object
show all
Defined in:
lib/pho/file_management.rb

Overview

TODO: move files into hidden directory

Direct Known Subclasses

FileManager, RDFManager

Constant Summary collapse

OK =
"ok".freeze
FAIL =
"fail".freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(store, dir, ok_suffix = OK, fail_suffix = FAIL, sleep = 1) ⇒ AbstractFileManager

Returns a new instance of AbstractFileManager.



14
15
16
17
18
19
20
# File 'lib/pho/file_management.rb', line 14

def initialize(store, dir, ok_suffix=OK, fail_suffix=FAIL, sleep=1)
  @store = store
  @dir = dir
  @sleep = sleep
  @ok_suffix = ok_suffix
  @fail_suffix = fail_suffix
end

Instance Attribute Details

#dirObject (readonly)

Returns the value of attribute dir.



8
9
10
# File 'lib/pho/file_management.rb', line 8

def dir
  @dir
end

#store(recursive = false) ⇒ Object (readonly)

Store all files that match the file name in directory



23
24
25
# File 'lib/pho/file_management.rb', line 23

def store
  @store
end

Instance Method Details

#failures(recursive = false) ⇒ Object

List failures



68
69
70
71
72
73
74
75
76
# File 'lib/pho/file_management.rb', line 68

def failures(recursive=false)
  fails = Array.new
  list(recursive).each do |file|
    if File.extname(file) != ".#{@fail_suffix}" && File.extname(file) != ".#{@ok_suffix}"
      fails << file if File.exists?( get_fail_file_for(file) )  
    end          
  end
  return fails
end

#get_fail_file_for(filename) ⇒ Object



100
101
102
103
# File 'lib/pho/file_management.rb', line 100

def get_fail_file_for(filename)
  ext = File.extname(filename)
  return filename.gsub(/#{ext}$/, ".#{@fail_suffix}")              
end

#get_ok_file_for(filename) ⇒ Object



105
106
107
108
# File 'lib/pho/file_management.rb', line 105

def get_ok_file_for(filename)
  ext = File.extname(filename)        
  return filename.gsub(/#{ext}$/, ".#{@ok_suffix}")
end

#new_files(recursive = false) ⇒ Object

List any new files in the directory



53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/pho/file_management.rb', line 53

def new_files(recursive=false)
  newfiles = Array.new
  list(recursive).each do |file|
    
    ok_file = get_ok_file_for(file)
    fail_file = get_fail_file_for(file)
    if !( File.exists?(ok_file) or File.exists?(fail_file) )
      newfiles << file          
    end
      
  end
  return newfiles
end

#resetObject

Reset the directory to clear out any previous statuses



43
44
45
46
47
48
49
50
# File 'lib/pho/file_management.rb', line 43

def reset()
  Dir.glob( File.join(@dir, "*.#{@fail_suffix}") ).each do |file|
    File.delete(file)
  end
  Dir.glob( File.join(@dir, "*.#{@ok_suffix}") ).each do |file|
    File.delete(file)
  end         
end

#retry_failuresObject

Retry anything known to have failed



32
33
34
35
36
37
38
39
40
# File 'lib/pho/file_management.rb', line 32

def retry_failures()
  retries = failures()
  retries.each do |filename|
    File.delete( get_fail_file_for(filename) )
    #store it
    file = File.new(filename)
    store_file(file, filename)      
  end
end

#successes(recursive = false) ⇒ Object

List successes



79
80
81
82
83
84
85
86
87
# File 'lib/pho/file_management.rb', line 79

def successes(recursive=false)
  successes = Array.new
  list(recursive).each do |file|
    if File.extname(file) != ".#{@fail_suffix}" && File.extname(file) != ".#{@ok_suffix}"
       successes << file if File.exists?( get_ok_file_for(file) )
    end
  end
  return successes
end

#summary(recursive = false) ⇒ Object

Summarize the state of the collection to the provided IO object Creates a simple report



91
92
93
94
95
96
97
98
# File 'lib/pho/file_management.rb', line 91

def summary(recursive=false)
   failures = failures(recursive)
   successes = successes(recursive)
   newfiles = new_files(recursive)
   total = failures.size + successes.size + newfiles.size
   summary = "#{@dir} #{recursive ? " and sub-directories" : ""} contains #{total} files: #{successes.size} stored, #{failures.size} failed, #{newfiles.size} new"
   return summary     
end