Skip to content

Commit

Permalink
[WIP] work being done
Browse files Browse the repository at this point in the history
  • Loading branch information
tcd committed Jan 16, 2020
1 parent f40df19 commit 56da593
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 64 deletions.
3 changes: 2 additions & 1 deletion lib/eddy/data.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
require "eddy/data/store"
require "eddy/data/persistence/base"
require "eddy/data/persistence/file"
require "eddy/data/persistence/memory"

module Eddy
Expand All @@ -11,7 +12,7 @@ def self.data
return @data if defined?(@data) && !@data.nil?
case Eddy.config.persistence_method
when :memory then @data = Eddy::Data::Persistence::Memory.new()
when :file then raise NotImplementedError
when :file then @data = Eddy::Data::Persistence::JSONFile.new()
when :active_record
if defined?(Rails) && defined?(Eddy::Rails)
@data = Eddy::Data::Persistence::ActiveRecord.new()
Expand Down
89 changes: 38 additions & 51 deletions lib/eddy/data/persistence/file.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ module Eddy
module Data
module Persistence
# Persist data to a local JSON file.
class File < Base
class JSONFile < Base

# @return [Pathname]
attr_accessor :path
Expand All @@ -21,86 +21,73 @@ def initialize(path = self.default_path())
end
end

# Clear persisted data.
#
# @return [void]
def reset()
self.write(self.default_data())
return nil
end

# @return [Hash]
def data()
if self.path.file?()
return JSON.parse(File.read(self.path), symbolize_names: symbolize)
puts("reading persisted data")
return JSON.parse(File.read(self.path), symbolize_names: true)
else
return self.default_data()
end
end

# Write `data` out to the JSON file. This will overwrite the file's contents.
#
# @param data [Hash]
# @return [void]
def write(data)
FileUtils.mkdir_p(self.path.dirname())
File.open(self.path(), "w+") { |f| f.write(data.to_json) }
end

# @return [Array<Integer>]
def interchange_control_numbers()
return self.data[:interchange_control_numbers]
end

# @param functional_group [String]
# @return [Array<Integer>]
def functional_group_control_numbers(functional_group)
data = self.data()
unless data[:functional_group_control_numbers].key?(functional_group)
data[:functional_group_control_numbers][functional_group] = []
end
return data[:functional_group_control_numbers][functional_group]
end

# @param transaction_set_id [String]
# @param set_id [String]
# @return [Array<Integer>]
def transaction_set_control_numbers(transaction_set_id)
def transaction_set_control_numbers(set_id)
data = self.data()
unless data[:transaction_set_control_numbers].key?(transaction_set_id)
data[:transaction_set_control_numbers][transaction_set_id] = []
unless data[:transaction_set_control_numbers].key?(set_id)
data[:transaction_set_control_numbers][set_id] = []
end
return data[:transaction_set_control_numbers][transaction_set_id]
end

# @param new_ctrl_num [Integer]
# @return [void]
def add_interchange_control_number(new_ctrl_num)
data = self.data()
data[:interchange_control_numbers].append(new_ctrl_num)
self.write(data)
return nil
return data[:transaction_set_control_numbers][set_id]
end

# @param functional_group [String]
# @param new_ctrl_num [Integer]
# @param number [Integer]
# @return [void]
def add_functional_group_control_number(functional_group, new_ctrl_num)
def add_interchange_control_number(number)
data = self.data()
unless data[:functional_group_control_numbers].key?(functional_group)
data[:functional_group_control_numbers][functional_group] = []
end
data[:functional_group_control_numbers][functional_group].append(new_ctrl_num)
data[:interchange_control_numbers].append(number)
self.write(data)
return nil
return data[:interchange_control_numbers]
end

# @param transaction_set_id [String]
# @param new_ctrl_num [Integer]
# @param set_id [String]
# @param number [Integer]
# @return [void]
def add_transaction_set_control_number(transaction_set_id, new_ctrl_num)
data = self.data()
unless data[:transaction_set_control_numbers].key?(transaction_set_id)
data[:transaction_set_control_numbers][transaction_set_id] = []
def add_transaction_set_control_number(set_id, number)
dat = self.data().dup
unless dat[:transaction_set_control_numbers].key?(set_id)
dat[:transaction_set_control_numbers][set_id] = []
end
data[:transaction_set_control_numbers][transaction_set_id].append(new_ctrl_num)
self.write(data)
return nil
dat[:transaction_set_control_numbers][set_id].append(number)
self.write(dat)
return dat[:transaction_set_control_numbers][set_id]
end

protected

# Write `data` out to the JSON file. This will overwrite the file's contents.
#
# @param data [Hash]
# @return [void]
def write(data)
FileUtils.mkdir_p(self.path.dirname())
File.open(self.path(), "w+") { |f| f.write(data.to_json) }
end

# @return [Pathname]
def default_path()
file = File.join(Eddy.config.tmp_dir, "eddy_persistent_data.json")
Expand Down
11 changes: 11 additions & 0 deletions lib/eddy/data/persistence/memory.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,17 @@ def initialize()
}
end

# Clear persisted data.
#
# @return [void]
def reset()
@data = {
interchange_control_numbers: [],
functional_group_control_numbers: {},
transaction_set_control_numbers: {},
}
end

# @return [Array<Integer>]
def interchange_control_numbers()
return @data[:interchange_control_numbers]
Expand Down
24 changes: 12 additions & 12 deletions test/eddy/data/persistence/file_test.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
require "test_helper"
require "fileutils"

module DataTest
module Persistence
Expand All @@ -9,31 +10,30 @@ def setup
end

def teardown
Eddy.data.reset()
Eddy.config.persistence_method = :memory
end

def test_interchange_control_numbers
skip()
end

def test_functional_group_control_numbers
skip()
assert_equal([], Eddy.data.interchange_control_numbers())
end

def test_transaction_set_control_numbers
skip()
assert_equal([], Eddy.data.transaction_set_control_numbers("850"))
end

def test_add_interchange_control_number
skip()
end

def test_add_functional_group_control_number
skip()
assert_equal([], Eddy.data.interchange_control_numbers())
assert_equal([1], Eddy.data.add_interchange_control_number(1))
assert_equal([1, 2], Eddy.data.add_interchange_control_number(2))
assert_equal([1, 2, 3], Eddy.data.add_interchange_control_number(3))
end

def test_add_transaction_set_control_number
skip()
assert_equal([], Eddy.data.transaction_set_control_numbers("850"))
assert_equal([1], Eddy.data.add_transaction_set_control_number("850", 1))
assert_equal([1, 2], Eddy.data.add_transaction_set_control_number("850", 2))
assert_equal([1, 2, 3], Eddy.data.add_transaction_set_control_number("850", 3))
end

end
Expand Down

0 comments on commit 56da593

Please sign in to comment.