Class: CodinRep::GetRecords
Defined Under Namespace
Classes: UnknownAfdRecord
Constant Summary
collapse
- START_COMMAND =
"PGREP0289".freeze
- NEXT_RECORD_COMMAND =
"PGREP009,".freeze
'REP0029['.freeze
'REP0029]'.freeze
'REP3029'.freeze
'REP0379'.freeze
'REP2359'.freeze
'REP0909'.freeze
8
- AFD_SIZES_BY_TYPE =
{
'1' => 233,
'2' => 300,
'3' => 35,
'4' => 35,
'5' => 88
}.freeze
Constants inherited
from Command
Command::COMMAND_PREFIX
Instance Method Summary
collapse
Methods inherited from Command
#check_response_header, #generate_command_payload, #generate_header, #get_data_from_response_payload, #get_max_attempts, #get_timeout_time, #should_close_connection?
Constructor Details
#initialize(first_id, *args) ⇒ GetRecords
Returns a new instance of GetRecords.
53
54
55
56
57
|
# File 'lib/codin_rep/get_records.rb', line 53
def initialize(first_id, *args)
super(*args)
@first_id = first_id.to_i
@first_id = 1 if @first_id < 1
end
|
Instance Method Details
#execute ⇒ Object
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/codin_rep/get_records.rb', line 59
def execute
@command_data = get_first_command
@response = ""
@parser = AfdParser.new(false)
@records = []
get_afd_records
return @parser
end
|
#get_afd_data_type_size(partial_data) ⇒ Object
135
136
137
138
139
140
141
142
143
144
|
# File 'lib/codin_rep/get_records.rb', line 135
def get_afd_data_type_size(partial_data)
if partial_data.size < 17
expected_size = 17
else
afd_record_id = partial_data[16]
expected_size = AFD_SIZES_BY_TYPE[afd_record_id]
raise UnknownAfdRecord.new(afd_record_id) if expected_size.nil?
end
expected_size
end
|
#get_afd_records ⇒ Object
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/codin_rep/get_records.rb', line 70
def get_afd_records
begin
while !@command_data.match(/^#{NEXT_RECORD_COMMAND}/) || @response != END_HEADER
@response = communicate!
current_record = nil
if @has_response_payload
raw_record = get_response_payload
current_record = @parser.parse_line(raw_record, nil)
end
@records << current_record
@command_data = NEXT_RECORD_COMMAND
end
ensure
@communication.close if @communication
end
afd_start_date = @parser.first_creation_date
afd_end_date = @parser.last_creation_date
employer_command = CodinRep::GetAfdHeader.new(@host_address, @tcp_port)
employer = employer_command.execute
@parser.(employer.employer_type, employer.employer_document,
employer.employer_cei, employer.employer_name,
employer.rep_serial_number, afd_start_date,
afd_end_date, Time.now)
@parser.create_trailer
end
|
#get_expected_response_size ⇒ Object
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
# File 'lib/codin_rep/get_records.rb', line 100
def get_expected_response_size
proc do |partial_data|
@has_response_payload = true
case partial_data
when START_HEADER
@has_response_payload = false
expected_size = 0
when END_HEADER
@has_response_payload = false
expected_size = 0
when /^#{AFD_DATA_START_HEADER}/
@start_header_received = true
expected_size = HEADER_SIZE + get_afd_data_type_size(partial_data)
when /^#{AFD_DATA_ONLY_HEADER}/
@start_header_received = true
expected_size = HEADER_SIZE + get_afd_data_type_size(partial_data)
when /^#{AFD_DATA_CONTINUATION_HEADER}/
expected_size = HEADER_SIZE + get_afd_data_type_size(partial_data)
when /^#{AFD_DATA_END_HEADER}/
@end_header_received = true
expected_size = HEADER_SIZE + get_afd_data_type_size(partial_data)
else
if partial_data.size < HEADER_SIZE
expected_size = HEADER_SIZE
else
= partial_data[0..(HEADER_SIZE-1)]
command_name = self.class.name.split('::')[1]
raise UnknownHeader.new(, command_name)
end
end
expected_size
end
end
|
#get_first_command ⇒ Object
150
151
152
|
# File 'lib/codin_rep/get_records.rb', line 150
def get_first_command
"#{START_COMMAND}#{@first_id.to_s.rjust(9, '0')}99999999"
end
|
#get_response_payload ⇒ Object
146
147
148
|
# File 'lib/codin_rep/get_records.rb', line 146
def get_response_payload
@response_payload = @response[7..-1]
end
|