def initialize(server, fmresultset, layout = nil)
@server = server
@resultset = nil
@layout = layout
@fields = Rfm::Util::CaseInsensitiveHash.new
@portals = Rfm::Util::CaseInsensitiveHash.new
@date_format = nil
@time_format = nil
@timestamp_format = nil
doc = REXML::Document.new(fmresultset)
root = doc.root
error = root.elements['error'].attributes['code'].to_i
if error != 0 && (error != 401 || @server.state[:raise_on_401])
raise Rfm::Error::FileMakerError.getError(error)
end
datasource = root.elements['datasource']
@date_format = convertFormatString(datasource.attributes['date-format'])
@time_format = convertFormatString(datasource.attributes['time-format'])
@timestamp_format = convertFormatString(datasource.attributes['timestamp-format'])
root.elements['metadata'].each_element('field-definition') { |field|
name = field.attributes['name']
@fields[name] = Field.new(self, field)
}
@fields.freeze
root.elements['metadata'].each_element('relatedset-definition') { |relatedset|
table = relatedset.attributes['table']
fields = {}
relatedset.each_element('field-definition') { |field|
name = field.attributes['name'].sub(Regexp.new(table + '::'), '')
fields[name] = Field.new(self, field)
}
@portals[table] = fields
}
@portals.freeze
root.elements['resultset'].each_element('record') { |record|
self << Record.new(record, self, @fields, @layout)
}
end