Exception: Rfm::Error::FileMakerError

Inherits:
RfmError
  • Object
show all
Defined in:
lib/rfm_error.rb

Overview

Base class for all FileMaker errors

Constant Summary collapse

@@default_messages =

Default filemaker error message map

{}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#codeObject

Returns the value of attribute code.



36
37
38
# File 'lib/rfm_error.rb', line 36

def code
  @code
end

Class Method Details

.getError(code, message = nil) ⇒ Object

This method instantiates and returns the appropriate FileMakerError object depending on the error code passed to it. It also accepts an optional message.



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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
99
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# File 'lib/rfm_error.rb', line 43

def self.getError(code, message = nil)
  if @@default_messages == nil or @@default_messages.size == 0
    (0..99).each{|i| @@default_messages[i] = 'SystemError occurred.'}
    (100..199).each{|i| @@default_messages[i] = 'MissingError occurred.'}
    @@default_messages[102] = 'FieldMissingError occurred.'
    @@default_messages[104] = 'ScriptMissingError occurred.'
    @@default_messages[105] = 'LayoutMissingError occurred.'
    @@default_messages[106] = 'TableMissingError occurred.'
    (200..299).each{|i| @@default_messages[i] = 'SecurityError occurred.'}
    @@default_messages[200] = 'RecordAccessDeniedError occurred.'
    @@default_messages[201] = 'FieldCannotBeModifiedError occurred.'
    @@default_messages[202] = 'FieldAccessIsDeniedError occurred.'
    (300..399).each{|i| @@default_messages[i] = 'ConcurrencyError occurred.'}
    @@default_messages[301] = 'RecordInUseError occurred.'
    @@default_messages[302] = 'TableInUseError occurred.'
    @@default_messages[306] = 'RecordModIdDoesNotMatchError occurred.'
    (400..499).each{|i| @@default_messages[i] = 'GeneralError occurred.'}
    @@default_messages[401] = 'NoRecordsFoundError occurred.'
    (500..599).each{|i| @@default_messages[i] = 'ValidationError occurred.'}
    @@default_messages[500] = 'DateValidationError occurred.'
    @@default_messages[501] = 'TimeValidationError occurred.'
    @@default_messages[502] = 'NumberValidationError occurred.'
    @@default_messages[503] = 'RangeValidationError occurred.'
    @@default_messages[504] = 'UniqueValidationError occurred.'
    @@default_messages[505] = 'ExistingValidationError occurred.'
    @@default_messages[506] = 'ValueListValidationError occurred.'
    @@default_messages[507] = 'ValidationCalculationError occurred.'
    @@default_messages[508] = 'InvalidFindModeValueError occurred.'
    @@default_messages[511] = 'MaximumCharactersValidationError occurred.'
    (800..899).each{|i| @@default_messages[i] = 'FileError occurred.'}
    @@default_messages[802] = 'UnableToOpenFileError occurred.'
  end 
  
  message = @@default_messages[code] if message == nil || message.strip == ''
  message += " (FileMaker Error ##{code})"
  
  if 0 <= code and code <= 99
    err = SystemError.new(message)
  elsif 100 <= code and code <= 199
    if code == 101
      err = RecordMissingError.new(message)
    elsif code == 102
      err = FieldMissingError.new(message)
    elsif code == 104
      err = ScriptMissingError.new(message)
    elsif code == 105
      err = LayoutMissingError.new(message)
    elsif code == 106
      err = TableMissingError.new(message)
    else
      err = MissingError.new(message)
    end
  elsif 200 <= code and code <= 299
    if code == 200
      err = RecordAccessDeniedError.new(message)
    elsif code == 201
      err = FieldCannotBeModifiedError.new(message)
    elsif code == 202
      err = FieldAccessIsDeniedError.new(message)
    else
      err = SecurityError.new(message)
    end
  elsif 300 <= code and code <= 399
    if code == 301
      err = RecordInUseError.new(message)
    elsif code == 302
      err = TableInUseError.new(message)
    elsif code == 306
      err = RecordModIdDoesNotMatchError.new(message)
    else
      err = ConcurrencyError.new(message)
    end
  elsif 400 <= code and code <= 499
    if code == 401
      err = NoRecordsFoundError.new(message)
    else
      err = GeneralError.new(message)
    end
  elsif 500 <= code and code <= 599
    if code == 500
      err = DateValidationError.new(message)
    elsif code == 501
      err = TimeValidationError.new(message)
    elsif code == 502
      err = NumberValidationError.new(message)
    elsif code == 503
      err = RangeValidationError.new(message)
    elsif code == 504
      err = UniqueValidationError.new(message)
    elsif code == 505
      err = ExistingValidationError.new(message)
    elsif code == 506
      err = ValueListValidationError.new(message)
    elsif code == 507
      err = ValidationCalculationError.new(message)
    elsif code == 508
      err = InvalidFindModeValueError.new(message)
    elsif code == 511
      err = MaximumCharactersValidationError.new(message)
    else
      err = ValidationError.new(message)
    end
  elsif 800 <= code and code <= 899
    if code == 802
      err = UnableToOpenFileError.new(message)
    else
      err = FileError.new(message)
    end
  else 
    # called for code == -1 or any other code not handled above.
    err = UnknownError.new(message)
  end
  err.code = code
  return err
end