ZCRMSDK 2.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. checksums.yaml +4 -4
  2. data/src/ZCRMSDK.rb +87 -2
  3. data/src/com/zoho/api/authenticator/oauth_token.rb +86 -31
  4. data/src/com/zoho/api/authenticator/store/db_store.rb +71 -29
  5. data/src/com/zoho/api/authenticator/store/file_store.rb +91 -21
  6. data/src/com/zoho/api/authenticator/store/token_store.rb +7 -0
  7. data/src/com/zoho/api/logger/sdk_logger.rb +18 -9
  8. data/src/com/zoho/crm/api/assignment_rules/api_exception.rb +121 -0
  9. data/src/com/zoho/crm/api/assignment_rules/assignment_rule.rb +215 -0
  10. data/src/com/zoho/crm/api/assignment_rules/assignment_rules_operations.rb +61 -0
  11. data/src/com/zoho/crm/api/assignment_rules/default_user.rb +80 -0
  12. data/src/com/zoho/crm/api/assignment_rules/response_handler.rb +10 -0
  13. data/src/com/zoho/crm/api/assignment_rules/response_wrapper.rb +63 -0
  14. data/src/com/zoho/crm/api/attachments/attachment.rb +42 -4
  15. data/src/com/zoho/crm/api/attachments/attachments_operations.rb +6 -6
  16. data/src/com/zoho/crm/api/blue_print/blue_print_operations.rb +2 -2
  17. data/src/com/zoho/crm/api/blue_print/escalation.rb +80 -0
  18. data/src/com/zoho/crm/api/blue_print/field.rb +1127 -0
  19. data/src/com/zoho/crm/api/blue_print/next_transition.rb +38 -0
  20. data/src/com/zoho/crm/api/blue_print/process_info.rb +4 -4
  21. data/src/com/zoho/crm/api/blue_print/transition.rb +19 -1
  22. data/src/com/zoho/crm/api/blue_print/validation_error.rb +57 -0
  23. data/src/com/zoho/crm/api/bulk_read/bulk_read_operations.rb +3 -3
  24. data/src/com/zoho/crm/api/bulk_read/criteria.rb +20 -0
  25. data/src/com/zoho/crm/api/bulk_read/query.rb +5 -4
  26. data/src/com/zoho/crm/api/bulk_write/bulk_write_operations.rb +3 -3
  27. data/src/com/zoho/crm/api/bulk_write/resource.rb +24 -4
  28. data/src/com/zoho/crm/api/contact_roles/contact_roles_operations.rb +7 -7
  29. data/src/com/zoho/crm/api/currencies/currencies_operations.rb +7 -7
  30. data/src/com/zoho/crm/api/custom_views/criteria.rb +5 -4
  31. data/src/com/zoho/crm/api/custom_views/custom_view.rb +100 -41
  32. data/src/com/zoho/crm/api/custom_views/custom_views_operations.rb +2 -2
  33. data/src/com/zoho/crm/api/custom_views/{shared_details.rb → shared_to.rb} +2 -2
  34. data/src/com/zoho/crm/api/dc/au_datacenter.rb +3 -3
  35. data/src/com/zoho/crm/api/dc/cn_datacenter.rb +3 -3
  36. data/src/com/zoho/crm/api/dc/datacenter.rb +3 -2
  37. data/src/com/zoho/crm/api/dc/eu_datacenter.rb +3 -3
  38. data/src/com/zoho/crm/api/dc/in_datacenter.rb +3 -3
  39. data/src/com/zoho/crm/api/dc/us_datacenter.rb +3 -3
  40. data/src/com/zoho/crm/api/email_templates/api_exception.rb +121 -0
  41. data/src/com/zoho/crm/api/email_templates/attachment.rb +118 -0
  42. data/src/com/zoho/crm/api/email_templates/email_template.rb +390 -0
  43. data/src/com/zoho/crm/api/email_templates/email_templates_operations.rb +61 -0
  44. data/src/com/zoho/crm/api/email_templates/response_handler.rb +10 -0
  45. data/src/com/zoho/crm/api/email_templates/response_wrapper.rb +83 -0
  46. data/src/com/zoho/crm/api/field_attachments/api_exception.rb +121 -0
  47. data/src/com/zoho/crm/api/field_attachments/body_wrapper.rb +62 -0
  48. data/src/com/zoho/crm/api/field_attachments/field_attachments_operations.rb +52 -0
  49. data/src/com/zoho/crm/api/field_attachments/file_body_wrapper.rb +64 -0
  50. data/src/com/zoho/crm/api/field_attachments/response_handler.rb +10 -0
  51. data/src/com/zoho/crm/api/fields/external.rb +99 -0
  52. data/src/com/zoho/crm/api/fields/field.rb +215 -61
  53. data/src/com/zoho/crm/api/fields/fields_operations.rb +2 -2
  54. data/src/com/zoho/crm/api/fields/history_tracking.rb +80 -0
  55. data/src/com/zoho/crm/api/fields/maps.rb +80 -0
  56. data/src/com/zoho/crm/api/fields/multi_module_lookup.rb +99 -0
  57. data/src/com/zoho/crm/api/fields/multi_select_lookup.rb +19 -0
  58. data/src/com/zoho/crm/api/fields/multi_user_lookup.rb +175 -0
  59. data/src/com/zoho/crm/api/fields/pick_list_value.rb +19 -0
  60. data/src/com/zoho/crm/api/fields/related_details.rb +19 -0
  61. data/src/com/zoho/crm/api/files/file_operations.rb +2 -2
  62. data/src/com/zoho/crm/api/initializer.rb +45 -17
  63. data/src/com/zoho/crm/api/inventory_templates/api_exception.rb +121 -0
  64. data/src/com/zoho/crm/api/inventory_templates/inventory_template.rb +352 -0
  65. data/src/com/zoho/crm/api/inventory_templates/inventory_templates_operations.rb +82 -0
  66. data/src/com/zoho/crm/api/inventory_templates/response_handler.rb +10 -0
  67. data/src/com/zoho/crm/api/inventory_templates/response_wrapper.rb +83 -0
  68. data/src/com/zoho/crm/api/layouts/layout.rb +38 -0
  69. data/src/com/zoho/crm/api/layouts/layouts_operations.rb +2 -2
  70. data/src/com/zoho/crm/api/layouts/section.rb +19 -0
  71. data/src/com/zoho/crm/api/modules/module.rb +57 -0
  72. data/src/com/zoho/crm/api/modules/modules_operations.rb +4 -4
  73. data/src/com/zoho/crm/api/notes/note.rb +19 -0
  74. data/src/com/zoho/crm/api/notes/notes_operations.rb +7 -7
  75. data/src/com/zoho/crm/api/notification/notification_operations.rb +6 -6
  76. data/src/com/zoho/crm/api/org/hierarchy_preference.rb +61 -0
  77. data/src/com/zoho/crm/api/org/org.rb +38 -0
  78. data/src/com/zoho/crm/api/org/org_operations.rb +2 -2
  79. data/src/com/zoho/crm/api/pipeline/action_handler.rb +10 -0
  80. data/src/com/zoho/crm/api/pipeline/action_response.rb +10 -0
  81. data/src/com/zoho/crm/api/pipeline/action_wrapper.rb +63 -0
  82. data/src/com/zoho/crm/api/pipeline/api_exception.rb +129 -0
  83. data/src/com/zoho/crm/api/pipeline/body_wrapper.rb +61 -0
  84. data/src/com/zoho/crm/api/pipeline/forecast_category.rb +80 -0
  85. data/src/com/zoho/crm/api/pipeline/pick_list_value.rb +175 -0
  86. data/src/com/zoho/crm/api/pipeline/pipeline.rb +213 -0
  87. data/src/com/zoho/crm/api/pipeline/pipeline_operations.rb +165 -0
  88. data/src/com/zoho/crm/api/pipeline/response_handler.rb +10 -0
  89. data/src/com/zoho/crm/api/pipeline/response_wrapper.rb +63 -0
  90. data/src/com/zoho/crm/api/pipeline/stage.rb +80 -0
  91. data/src/com/zoho/crm/api/pipeline/success_response.rb +123 -0
  92. data/src/com/zoho/crm/api/pipeline/transfer_action_handler.rb +10 -0
  93. data/src/com/zoho/crm/api/pipeline/transfer_action_response.rb +10 -0
  94. data/src/com/zoho/crm/api/pipeline/transfer_action_wrapper.rb +63 -0
  95. data/src/com/zoho/crm/api/pipeline/transfer_and_delete_wrapper.rb +61 -0
  96. data/src/com/zoho/crm/api/pipeline/transfer_pipe_line.rb +80 -0
  97. data/src/com/zoho/crm/api/profiles/category.rb +19 -0
  98. data/src/com/zoho/crm/api/profiles/default_view.rb +99 -0
  99. data/src/com/zoho/crm/api/profiles/profile.rb +49 -11
  100. data/src/com/zoho/crm/api/profiles/profiles_operations.rb +2 -2
  101. data/src/com/zoho/crm/api/query/query_operations.rb +1 -1
  102. data/src/com/zoho/crm/api/record/api_exception.rb +2 -0
  103. data/src/com/zoho/crm/api/record/body_wrapper.rb +0 -19
  104. data/src/com/zoho/crm/api/record/count_handler.rb +10 -0
  105. data/src/com/zoho/crm/api/record/count_wrapper.rb +63 -0
  106. data/src/com/zoho/crm/api/record/field.rb +17 -17
  107. data/src/com/zoho/crm/api/record/image_upload.rb +213 -0
  108. data/src/com/zoho/crm/api/record/line_tax.rb +19 -0
  109. data/src/com/zoho/crm/api/record/mass_update_body_wrapper.rb +4 -4
  110. data/src/com/zoho/crm/api/record/mass_update_territory.rb +80 -0
  111. data/src/com/zoho/crm/api/record/multi_select_lookup.rb +99 -0
  112. data/src/com/zoho/crm/api/record/multi_select_picklist.rb +80 -0
  113. data/src/com/zoho/crm/api/record/price_book.rb +31 -0
  114. data/src/com/zoho/crm/api/record/record_operations.rb +196 -26
  115. data/src/com/zoho/crm/api/record/tax.rb +80 -0
  116. data/src/com/zoho/crm/api/record/territory.rb +70 -12
  117. data/src/com/zoho/crm/api/record/widget.rb +80 -0
  118. data/src/com/zoho/crm/api/record/wizard.rb +80 -0
  119. data/src/com/zoho/crm/api/related_lists/related_lists_operations.rb +2 -2
  120. data/src/com/zoho/crm/api/related_records/related_records_operations.rb +6 -6
  121. data/src/com/zoho/crm/api/request_proxy.rb +3 -4
  122. data/src/com/zoho/crm/api/roles/roles_operations.rb +2 -2
  123. data/src/com/zoho/crm/api/sdk_config.rb +2 -68
  124. data/src/com/zoho/crm/api/send_mail/action_handler.rb +10 -0
  125. data/src/com/zoho/crm/api/send_mail/action_response.rb +10 -0
  126. data/src/com/zoho/crm/api/send_mail/action_wrapper.rb +63 -0
  127. data/src/com/zoho/crm/api/send_mail/api_exception.rb +125 -0
  128. data/src/com/zoho/crm/api/send_mail/body_wrapper.rb +61 -0
  129. data/src/com/zoho/crm/api/send_mail/data_subject_request.rb +80 -0
  130. data/src/com/zoho/crm/api/send_mail/inventory_details.rb +100 -0
  131. data/src/com/zoho/crm/api/send_mail/mail.rb +423 -0
  132. data/src/com/zoho/crm/api/send_mail/response_handler.rb +10 -0
  133. data/src/com/zoho/crm/api/send_mail/response_wrapper.rb +63 -0
  134. data/src/com/zoho/crm/api/send_mail/send_mail_operations.rb +61 -0
  135. data/src/com/zoho/crm/api/send_mail/success_response.rb +121 -0
  136. data/src/com/zoho/crm/api/send_mail/template.rb +10 -0
  137. data/src/com/zoho/crm/api/send_mail/user_address.rb +137 -0
  138. data/src/com/zoho/crm/api/share_records/share_records_operations.rb +4 -4
  139. data/src/com/zoho/crm/api/tags/tag.rb +19 -0
  140. data/src/com/zoho/crm/api/tags/tags_operations.rb +11 -11
  141. data/src/com/zoho/crm/api/taxes/taxes_operations.rb +6 -6
  142. data/src/com/zoho/crm/api/territories/response_wrapper.rb +20 -0
  143. data/src/com/zoho/crm/api/territories/territories_operations.rb +2 -2
  144. data/src/com/zoho/crm/api/territories/territory.rb +61 -23
  145. data/src/com/zoho/crm/api/users/user.rb +34 -0
  146. data/src/com/zoho/crm/api/users/users_operations.rb +6 -6
  147. data/src/com/zoho/crm/api/util/api_http_connector.rb +6 -5
  148. data/src/com/zoho/crm/api/util/common_api_handler.rb +5 -3
  149. data/src/com/zoho/crm/api/util/constants.rb +140 -15
  150. data/src/com/zoho/crm/api/util/converter.rb +30 -7
  151. data/src/com/zoho/crm/api/util/data_type_converter.rb +8 -2
  152. data/src/com/zoho/crm/api/util/form_data_converter.rb +4 -15
  153. data/src/com/zoho/crm/api/util/json_converter.rb +7 -9
  154. data/src/com/zoho/crm/api/util/module_fields_handler.rb +1 -1
  155. data/src/com/zoho/crm/api/util/utility.rb +274 -87
  156. data/src/com/zoho/crm/api/variable_groups/variable_groups_operations.rb +3 -3
  157. data/src/com/zoho/crm/api/variables/variables_operations.rb +9 -9
  158. data/src/com/zoho/crm/api/wizards/api_exception.rb +121 -0
  159. data/src/com/zoho/crm/api/wizards/button.rb +252 -0
  160. data/src/com/zoho/crm/api/wizards/chart_data.rb +118 -0
  161. data/src/com/zoho/crm/api/wizards/connection.rb +80 -0
  162. data/src/com/zoho/crm/api/wizards/container.rb +119 -0
  163. data/src/com/zoho/crm/api/wizards/node.rb +118 -0
  164. data/src/com/zoho/crm/api/wizards/response_handler.rb +10 -0
  165. data/src/com/zoho/crm/api/wizards/response_wrapper.rb +63 -0
  166. data/src/com/zoho/crm/api/wizards/screen.rb +99 -0
  167. data/src/com/zoho/crm/api/wizards/segment.rb +176 -0
  168. data/src/com/zoho/crm/api/wizards/transition.rb +80 -0
  169. data/src/com/zoho/crm/api/wizards/wizard.rb +273 -0
  170. data/src/com/zoho/crm/api/wizards/wizards_operations.rb +61 -0
  171. data/src/resources/JSONDetails.json +1 -1
  172. data/src/version.rb +1 -1
  173. metadata +92 -7
  174. data/src/com/zoho/crm/api/record/inventory_line_items.rb +0 -235
@@ -56,7 +56,23 @@ module Util
56
56
  check = true
57
57
 
58
58
  unless value.nil?
59
- var_type = value.class.name
59
+ if key_details.key? Constants::INTERFACE and key_details[Constants::INTERFACE] == true
60
+ json_details = Initializer.json_details
61
+ interface_details = json_details[key_details[Constants::STRUCTURE_NAME]]
62
+ classes = interface_details[Constants::CLASSES]
63
+ check = false
64
+ classes.each do |each_class_name|
65
+ class_name_lower = each_class_name.to_s.downcase
66
+ value_class_name = Util::Utility.path_to_package(value.class.name).downcase
67
+
68
+ if class_name_lower.downcase == value_class_name
69
+ check = true
70
+ break
71
+ end
72
+ end
73
+ else
74
+ var_type = value.class.name
75
+ end
60
76
  end
61
77
 
62
78
  if Constants::DATA_TYPE.key? type
@@ -70,7 +86,6 @@ module Util
70
86
  instance_number = index
71
87
  type = Constants::LIST_NAMESPACE + '(' + structure_name + ')'
72
88
  var_type = Constants::LIST_NAMESPACE + '(' + class_name + ')'
73
- expected_list_type = false
74
89
  check = false
75
90
 
76
91
  break
@@ -81,9 +96,15 @@ module Util
81
96
  elsif !value.nil?
82
97
  check = Util::Utility.check_data_type(value,type)
83
98
  end
84
- elsif (type.downcase != Constants::OBJECT.downcase)
85
- if type.downcase != Util::Utility.path_to_package(var_type).downcase
86
- check = false
99
+ elsif (type.downcase == Constants::OBJECT.downcase || (!var_type.nil? && var_type.downcase == Constants::OBJECT.downcase))
100
+ if type.downcase == Constants::OBJECT.downcase
101
+ check = true
102
+ else
103
+ class_name1 = value.class.name
104
+ if type.downcase != Util::Utility.path_to_package(class_name1).downcase
105
+ check = false
106
+ end
107
+ var_type = class_name1
87
108
  end
88
109
  end
89
110
  if !check
@@ -108,7 +129,9 @@ module Util
108
129
 
109
130
  if key_details.key?(Constants::VALUES) && (!key_details.key?(Constants::PICKLIST) || (key_details[Constants::PICKLIST] && Initializer.get_initializer.sdk_config.pick_list_validation))
110
131
  value = value.value if value.is_a? Util::Choice
111
- unless key_details[Constants::VALUES].include? value
132
+
133
+ values_ja = key_details[Constants::VALUES]
134
+ unless values_ja.include? value
112
135
 
113
136
  unless instance_number.nil?
114
137
  error[Constants::INDEX] = instance_number
@@ -120,7 +143,7 @@ module Util
120
143
 
121
144
  error[Constants::ERROR_HASH_FIELD] = member_name
122
145
 
123
- error[Constants::ACCEPTED_VALUES] = key_details[Constants::VALUES]
146
+ error[Constants::ACCEPTED_VALUES] = values_ja
124
147
 
125
148
  raise SDKException.new(Constants::UNACCEPTED_VALUES_ERROR, nil, error, nil)
126
149
  end
@@ -108,7 +108,10 @@ module Util
108
108
  # @raise Exception
109
109
  def self.pre_convert(obj, type)
110
110
  init
111
- @@pre_converter_map[type].call(obj)
111
+ if @@pre_converter_map.key? type
112
+ return @@pre_converter_map[type].call(obj)
113
+ end
114
+ obj
112
115
  end
113
116
 
114
117
  # This method is to convert Java data to JSON data value.
@@ -118,7 +121,10 @@ module Util
118
121
  # @raise Exception
119
122
  def self.post_convert(obj, type)
120
123
  init
121
- @@post_converter_map[type].call(obj)
124
+ if @@post_converter_map.key? type
125
+ return @@post_converter_map[type].call(obj)
126
+ end
127
+ obj
122
128
  end
123
129
 
124
130
  def self.pre_convert_object_data(obj)
@@ -13,10 +13,10 @@ module Util
13
13
  end
14
14
 
15
15
  def append_to_request(request_base, request_object)
16
- request_base.set_form(set_file_fody(request_object), Constants::MULTIPART_FORM_DATA) if request_object.is_a?(Hash)
16
+ request_base.set_form(set_file_body(request_object), Constants::MULTIPART_FORM_DATA) if request_object.is_a?(Hash)
17
17
  end
18
18
 
19
- def set_file_fody(request_object)
19
+ def set_file_body(request_object)
20
20
  data = []
21
21
  request_object.each do |key, value|
22
22
  if value.is_a? Array
@@ -38,18 +38,7 @@ module Util
38
38
 
39
39
  def form_request(request_instance, class_path, instance_no, member_json_details = nil)
40
40
  require_relative '../initializer'
41
- if @common_api_handler.api_path.include? Constants::PHOTO
42
- path = @common_api_handler.api_path.split("/")
43
- if path.length == 6
44
- module_api_name = path[3].downcase
45
- if path[1].downcase == Constants::CRM && path[2].downcase == Constants::API_VERSION && path[5].downcase == Constants::PHOTO && !(Constants::PHOTO_SUPPORTED_MODULES.include? module_api_name)
46
- api_supported_module = Utility::api_supported_module
47
- if api_supported_module.key?(module_api_name) && api_supported_module[module_api_name].downcase != "custom"
48
- raise SDKException.new(Constants::INVALID_MODULE, Constants::PHOTO_UPLOAD_ERROR_MESSAGE)
49
- end
50
- end
51
- end
52
- end
41
+
53
42
  package_name = Utility.path_to_package(class_path)
54
43
  class_details = Initializer.json_details[package_name]
55
44
  request_hash = {}
@@ -72,7 +61,7 @@ module Util
72
61
 
73
62
  member_data = request_instance.instance_variable_get(Constants::AT + member_name)
74
63
 
75
- if !modified.nil? && (modified != 0) && value_checker(request_instance.class.name, member_name, member_details, member_data, @unique_hash, instance_no)
64
+ if !modified.nil? && (modified != 0) && !member_data.nil? && value_checker(request_instance.class.name, member_name, member_details, member_data, @unique_hash, instance_no)
76
65
  key_name = member_details[Constants::NAME]
77
66
  type = member_details[Constants::TYPE]
78
67
  if type.downcase == Constants::LIST_NAMESPACE.downcase
@@ -106,13 +106,11 @@ module Util
106
106
 
107
107
  if request_instance.is_a? Record::FileDetails
108
108
  lower_case_key_name = key_name.downcase
109
-
110
-
111
- request_json[lower_case_key_name] = if field_value.nil?
112
- nil
113
- else
114
- field_value
115
- end
109
+ if field_value.nil? || (field_value.is_a? (String) && field_value.downcase == "null")
110
+ request_json[lower_case_key_name] = nil
111
+ else
112
+ request_json[lower_case_key_name] = field_value
113
+ end
116
114
  else
117
115
  request_json[key_name] = set_data(member_detail, field_value)
118
116
  end
@@ -706,9 +704,9 @@ module Util
706
704
  member_value
707
705
  end
708
706
 
709
- def build_name(member_name)
707
+ def build_name(key_name)
710
708
  sdk_name = ''
711
- name_split = member_name.to_s.split('_')
709
+ name_split = key_name.to_s.split('_')
712
710
  sdk_name = name_split[0].to_s.downcase
713
711
  index = 1
714
712
 
@@ -51,7 +51,7 @@ module Util
51
51
  def self.refresh_fields(module_api_name)
52
52
  @@sync_lock.synchronize do
53
53
  delete_fields(module_api_name)
54
- Utility.get_fields(module_api_name)
54
+ Utility.get_fields_info(module_api_name)
55
55
  end
56
56
  rescue SDKException => e
57
57
  SDKLog::SDKLogger.severe(Constants::REFRESH_SINGLE_MODULE_FIELDS_ERROR + module_api_name, e)
@@ -22,17 +22,89 @@ module Util
22
22
 
23
23
  @@apitype_vs_structurename = {}
24
24
 
25
- @@api_supported_module ={}
26
-
27
25
  @@new_file = false
28
26
 
29
27
  @@get_modified_modules = false
30
28
 
29
+ @@api_supported_module = {}
30
+
31
+ @@module_api_name = nil
32
+
31
33
  @@force_refresh = false
32
- def self.api_supported_module
33
- @@api_supported_module
34
+ def self.set_handler_api_path(module_api_name, handler_instance)
35
+ if handler_instance.nil?
36
+ return
37
+ end
38
+ api_path = handler_instance.api_path
39
+ if module_api_name.downcase == api_path.downcase
40
+ api_path_split = api_path.split('/')
41
+ api_path_split.each do |api_path_split|
42
+ split_lower = api_path_split[i].downcase
43
+ if split_lower == module_api_name.downcase
44
+ api_path_splits[i] = module_api_name
45
+ elsif Constants::DEFAULT_MODULENAME_VS_APINAME.key? split_lower && !Constants::DEFAULT_MODULENAME_VS_APINAME[split_lower].nil?
46
+ api_path_splits[i] = Constants::DEFAULT_MODULENAME_VS_APINAME[split_lower]
47
+ end
48
+ api_path = api_path_splits.join("/")
49
+ handler_instance.api_path = api_path
50
+ end
51
+ end
52
+ end
53
+
54
+ def self.file_exists_flow(module_api_name,record_field_details_path,last_modified_time)
55
+ @@sync_lock.synchronize do
56
+ initializer = Initializer.get_initializer
57
+ record_field_details_json = JSON.parse(File.read(record_field_details_path))
58
+ last_modified_time_exists = false
59
+ if record_field_details_json.key?(Constants::FIELDS_LAST_MODIFIED_TIME) && !record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME].nil?
60
+ if get_current_time_in_millis - record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME] > 3_600_000
61
+ last_modified_time_exists = true
62
+ end
63
+ end
64
+ if !record_field_details_json.key?(Constants::FIELDS_LAST_MODIFIED_TIME) || @@force_refresh
65
+ last_modified_time_exists = true
66
+ end
67
+
68
+ if initializer.sdk_config.auto_refresh_fields && !@@new_file && !@@get_modified_modules && last_modified_time_exists
69
+ @@get_modified_modules = true
70
+ last_modified_time = (record_field_details_json.key? Constants::FIELDS_LAST_MODIFIED_TIME) ? record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME] : nil
71
+ modify_fields(record_field_details_path, last_modified_time)
72
+ @@get_modified_modules = false
73
+ elsif !initializer.sdk_config.auto_refresh_fields && @@force_refresh && !@@get_modified_modules
74
+ @@get_modified_modules = true
75
+ modify_fields(record_field_details_path, last_modified_time)
76
+ @@get_modified_modules = false
77
+ end
78
+
79
+ record_field_details_json = JSON.parse(File.read(record_field_details_path))
80
+ return if module_api_name.nil? || record_field_details_json.key?(module_api_name.downcase)
81
+
82
+ fill_data_type()
83
+
84
+ record_field_details_json[module_api_name.downcase] = {}
85
+
86
+ File.open(record_field_details_path, 'w') do |f|
87
+ f.write(record_field_details_json.to_json)
88
+ end
89
+ field_details = get_fields_details(module_api_name)
90
+ record_field_details_json = JSON.parse(File.read(record_field_details_path))
91
+
92
+ record_field_details_json[module_api_name.downcase] = field_details
93
+
94
+ File.open(record_field_details_path, 'w') do |f|
95
+ f.write(record_field_details_json.to_json)
96
+ end
97
+ end
34
98
  end
35
- def self.get_fields(module_api_name)
99
+
100
+ def self.get_fields(module_api_name, handler_instance=nil)
101
+ @@sync_lock.synchronize do
102
+ @@module_api_name = module_api_name
103
+ get_fields_info(module_api_name,handler_instance)
104
+ end
105
+ end
106
+
107
+ def self.get_fields_info(module_api_name, handler_instance=nil)
36
108
  require_relative '../initializer'
37
109
  initializer = Initializer.get_initializer
38
110
  record_field_details_path = nil
@@ -45,54 +117,18 @@ module Util
45
117
  resoures_folder_path = initializer.resources_path + '/' + Constants::RESOURCES
46
118
 
47
119
  Dir.mkdir resoures_folder_path unless File.exist? resoures_folder_path
48
- record_field_details_path = get_record_json_file_path
49
-
120
+ record_field_details_path = get_record_json_file_path()
121
+ module_api_name = verify_module_api_name(module_api_name)
122
+ set_handler_api_path(module_api_name,handler_instance)
123
+
50
124
  if File.exist? record_field_details_path
51
- record_field_details_json = JSON.parse(File.read(record_field_details_path))
52
- last_modified_time_exists = false
53
- if @@force_refresh
54
- if record_field_details_json.key?(Constants::FIELDS_LAST_MODIFIED_TIME) && !record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME].nil?
55
- if get_current_time_in_millis - record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME] > 3_600_000
56
- last_modified_time_exists = true
57
- end
58
- end
59
- end
60
- if initializer.sdk_config.auto_refresh_fields && !@@new_file && !@@get_modified_modules && last_modified_time_exists
61
- @@get_modified_modules = true
62
- last_modified_time = (record_field_details_json.key? Constants::FIELDS_LAST_MODIFIED_TIME) ? record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME] : nil
63
- modify_fields(record_field_details_path, last_modified_time)
64
- @@get_modified_modules = false
65
- elsif !initializer.sdk_config.auto_refresh_fields && @@force_refresh && !@@get_modified_modules
66
- @@get_modified_modules = true
67
- modify_fields(record_field_details_path, last_modified_time)
68
- @@get_modified_modules = false
69
- end
70
-
71
- record_field_details_json = JSON.parse(File.read(record_field_details_path))
72
- return if module_api_name.nil? || record_field_details_json.key?(module_api_name.downcase)
73
-
74
- fill_data_type
75
-
76
- record_field_details_json[module_api_name.downcase] = {}
77
-
78
- File.open(record_field_details_path, 'w') do |f|
79
- f.write(record_field_details_json.to_json)
80
- end
81
- field_details = get_fields_details(module_api_name)
82
- record_field_details_json = JSON.parse(File.read(record_field_details_path))
83
-
84
- record_field_details_json[module_api_name.downcase] = field_details
85
-
86
- File.open(record_field_details_path, 'w') do |f|
87
- f.write(record_field_details_json.to_json)
88
- end
89
-
125
+ file_exists_flow(module_api_name,record_field_details_path,last_modified_time)
90
126
  elsif initializer.sdk_config.auto_refresh_fields
91
127
  @@new_file = true
92
- fill_data_type
93
- if @@api_supported_module.length == 0
94
- @@api_supported_module = get_modules_api_names(nil)
95
- end
128
+ fill_data_type()
129
+ @@api_supported_module = @@api_supported_module.length == 0 ? get_modules(nil) : @@api_supported_module
130
+
131
+ record_field_details_json = File.exist? record_field_details_path ? JSON.parse(File.read(record_field_details_path)) : {}
96
132
 
97
133
  record_field_details_json = { Constants::FIELDS_LAST_MODIFIED_TIME => get_current_time_in_millis }
98
134
  @@api_supported_module.each_key do |module_name|
@@ -101,7 +137,7 @@ module Util
101
137
  File.open(record_field_details_path, 'w') do |f|
102
138
  f.write(record_field_details_json.to_json)
103
139
  end
104
- field_details = get_fields_details(module_name)
140
+ field_details = get_fields_details( @@api_supported_module[module_name][Constants::API_NAME])
105
141
  record_field_details_json = JSON.parse(File.read(record_field_details_path))
106
142
  record_field_details_json[module_name.downcase] = field_details
107
143
  File.open(record_field_details_path, 'w') do |f|
@@ -119,7 +155,7 @@ module Util
119
155
  modify_fields(record_field_details_path, last_modified_time)
120
156
  @@get_modified_modules = false
121
157
  else
122
- fill_data_type
158
+ fill_data_type()
123
159
 
124
160
  record_field_details_json = { module_api_name.downcase => {} }
125
161
 
@@ -171,9 +207,9 @@ module Util
171
207
  end
172
208
 
173
209
  def self.modify_fields(record_field_details_path, modified_time)
174
- modified_modules = get_modules_api_names(modified_time)
210
+ modified_modules = get_modules(modified_time)
175
211
  record_field_details_json = JSON.parse(File.open(record_field_details_path).read)
176
- record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME] = get_current_time_in_millis
212
+ record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME] = get_current_time_in_millis()
177
213
  File.open(record_field_details_path, 'w') do |f|
178
214
  f.write(record_field_details_json.to_json)
179
215
  end
@@ -189,10 +225,30 @@ module Util
189
225
  f.write(record_field_details_json.to_json)
190
226
  end
191
227
  modified_modules.each_key do |module_api_name|
192
- get_fields(module_api_name)
228
+ module_data = modified_modules[module_api_name]
229
+ get_fields_info(module_data[Constants::API_NAME])
193
230
  end
194
231
  end
195
232
 
233
+ def self.verify_module_api_name(module_api_name)
234
+
235
+ if !module_api_name.nil?
236
+ if Constants::DEFAULT_MODULENAME_VS_APINAME.key? (module_api_name.downcase) && !Constants::DEFAULT_MODULENAME_VS_APINAME[module_api_name.downcase].nil?
237
+ return Constants::DEFAULT_MODULENAME_VS_APINAME[module_api_name.downcase]
238
+ end
239
+ end
240
+
241
+ record_field_details_path = get_record_json_file_path()
242
+
243
+ if File.exist? record_field_details_path
244
+ fields_json = JSON.parse(File.open(record_field_details_path).read)
245
+ if fields_json.key? Constants::SDK_MODULE_METADATA and fields_json[Constants::SDK_MODULE_METADATA].key? module_api_name.downcase
246
+ return fields_json[Constants::SDK_MODULE_METADATA][module_api_name.downcase][Constants::API_NAME]
247
+ end
248
+ end
249
+ return module_api_name
250
+ end
251
+
196
252
  def self.delete_fields(record_field_details_json, module_api_name)
197
253
  subform_modules = []
198
254
 
@@ -212,8 +268,8 @@ module Util
212
268
  end
213
269
  end
214
270
 
215
- def self.get_record_json_file_path
216
- Converter.new(nil).get_record_json_file_path
271
+ def self.get_record_json_file_path()
272
+ Converter.new(nil).get_record_json_file_path()
217
273
  end
218
274
 
219
275
  def self.get_related_lists(related_module_name, module_api_name, common_api_handler)
@@ -229,13 +285,14 @@ module Util
229
285
  resoures_folder_path = initializer.resources_path + '/' + Constants::RESOURCES
230
286
  Dir.mkdir resoures_folder_path unless File.exist? resoures_folder_path
231
287
 
232
- record_field_details_path = get_record_json_file_path
288
+ record_field_details_path = get_record_json_file_path()
233
289
  if !File.exist?(record_field_details_path) || (File.exist?(record_field_details_path) && !(JSON.parse(File.read(record_field_details_path)).key? key))
234
290
  is_new_data = true
235
291
  related_list_values = get_related_list_details(module_api_name)
236
- record_field_details_json = {}
237
- if File.exist? record_field_details_path
292
+ if File.exist? (record_field_details_path)
238
293
  record_field_details_json = JSON.parse(File.read(record_field_details_path))
294
+ else
295
+ record_field_details_json = {}
239
296
  end
240
297
  record_field_details_json[key] = related_list_values
241
298
  File.open(record_field_details_path, 'w') do |f|
@@ -253,6 +310,7 @@ module Util
253
310
  end
254
311
  rescue SDKException => e
255
312
  SDKLog::SDKLogger.severe(Constants::EXCEPTION, e)
313
+ raise e
256
314
  rescue StandardError => e
257
315
  ex = SDKException.new(nil, Constants::EXCEPTION, nil, e)
258
316
  SDKLog::SDKLogger.severe(Constants::EXCEPTION, ex)
@@ -347,12 +405,11 @@ module Util
347
405
  def self.fill_data_type
348
406
  return unless @@apitype_vs_datatype.empty?
349
407
 
350
- field_api_names_string = %w[autonumber textarea text website email phone mediumtext multiselectlookup profileimage]
408
+ field_api_names_string = %w[autonumber textarea text website email phone mediumtext profileimage]
351
409
  field_api_names_integer = %w[integer]
352
410
  field_api_names_boolean = %w[boolean]
353
411
  field_api_names_long = %w[bigint long]
354
412
  field_api_names_double = %w[double percent lookup currency]
355
- field_api_names_file = %w[imageupload]
356
413
  field_api_names_field_file = %w[fileupload]
357
414
  field_api_names_datetime = %w[datetime event_reminder]
358
415
  field_api_names_date = %w[date]
@@ -367,6 +424,9 @@ module Util
367
424
  field_api_names_recurring_activity = %w[RRULE]
368
425
  field_api_names_reminder = %w[multireminder]
369
426
  field_api_names_consent_look_up = %w[consent_lookup]
427
+ field_api_name_image_upload = %w[imageupload]
428
+ field_api_name_multiselect_lookup = %w[multiselectlookup]
429
+ field_api_name_line_tax = %w[linetax]
370
430
 
371
431
  field_api_names_string.each do |field_api_name|
372
432
  @@apitype_vs_datatype[field_api_name] = Constants::STRING
@@ -388,10 +448,6 @@ module Util
388
448
  @@apitype_vs_datatype[field_api_name] = Constants::LONG
389
449
  end
390
450
 
391
- field_api_names_file.each do |field_api_name|
392
- @@apitype_vs_datatype[field_api_name] = Constants::FILE_NAMESPACE
393
- end
394
-
395
451
  field_api_names_field_file.each do |field_api_name|
396
452
  @@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
397
453
  @@apitype_vs_structurename[field_api_name] = Constants::FIELD_FILE_NAMESPACE
@@ -435,7 +491,7 @@ module Util
435
491
  field_api_names_multiuser_lookup.each do |field_api_name|
436
492
  @@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
437
493
 
438
- @@apitype_vs_structurename[field_api_name] = Constants::USER_NAMESPACE
494
+ @@apitype_vs_structurename[field_api_name] = Constants::RECORD_NAMESPACE
439
495
  end
440
496
 
441
497
  field_api_names_multimodule_lookup.each do |field_api_name|
@@ -465,6 +521,24 @@ module Util
465
521
 
466
522
  @@apitype_vs_structurename[field_api_name] = Constants::CONSENT_NAMESPACE
467
523
  end
524
+
525
+ field_api_name_image_upload.each do |field_api_name|
526
+ @@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
527
+
528
+ @@apitype_vs_structurename[field_api_name] = Constants::IMAGEUPLOAD_NAMESPACE
529
+ end
530
+
531
+ field_api_name_multiselect_lookup.each do |field_api_name|
532
+ @@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
533
+
534
+ @@apitype_vs_structurename[field_api_name] = Constants::RECORD_NAMESPACE
535
+ end
536
+
537
+ field_api_name_line_tax.each do |field_api_name|
538
+ @@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
539
+
540
+ @@apitype_vs_structurename[field_api_name] = Constants::LINE_TAX_NAMESPACE
541
+ end
468
542
  end
469
543
 
470
544
  def self.set_data_type(field_detail, field_instance, module_api_name)
@@ -478,13 +552,8 @@ module Util
478
552
  if !field_instance.system_mandatory.nil? && field_instance.system_mandatory && !((module_api_name == Constants::CALLS.downcase) && (key_name.downcase == Constants::CALL_DURATION.downcase))
479
553
  field_detail[Constants::REQUIRED] = true
480
554
  end
481
- if Constants::INVENTORY_MODULES.include?(module_api_name) && (key_name.downcase == Constants::PRODUCT_DETAILS.downcase)
482
- field_detail[Constants::NAME] = key_name
483
- field_detail[Constants::TYPE] = Constants::LIST_NAMESPACE
484
- field_detail[Constants::STRUCTURE_NAME] = Constants::INVENTORY_LINE_ITEMS
485
- field_detail[Constants::SKIP_MANDATORY] = true
486
- return
487
- elsif (key_name.downcase == Constants::PRICING_DETAILS.downcase) && (module_api_name == Constants::PRICE_BOOKS.downcase)
555
+
556
+ if (key_name.downcase == Constants::PRICING_DETAILS.downcase) && (module_api_name == Constants::PRICE_BOOKS.downcase)
488
557
  field_detail[Constants::NAME] = key_name
489
558
  field_detail[Constants::TYPE] = Constants::LIST_NAMESPACE
490
559
  field_detail[Constants::STRUCTURE_NAME] = Constants::PRICINGDETAILS
@@ -498,7 +567,7 @@ module Util
498
567
  return
499
568
  elsif (key_name.downcase == Constants::COMMENTS.downcase) && ((module_api_name == Constants::SOLUTIONS.downcase) || (module_api_name == Constants::CASES.downcase))
500
569
  field_detail[Constants::NAME] = key_name
501
- field_detail[Constants::TYPE] = Constants::LAYOUT_NAMESPACE
570
+ field_detail[Constants::TYPE] = Constants::LIST_NAMESPACE
502
571
  field_detail[Constants::STRUCTURE_NAME] = Constants::COMMENTS_NAMESPACE
503
572
  field_detail[Constants::LOOKUP] = true
504
573
  return
@@ -508,6 +577,27 @@ module Util
508
577
  field_detail[Constants::LOOKUP] = true
509
578
  field_detail[Constants::STRUCTURE_NAME] = Constants::LAYOUT_NAMESPACE
510
579
  return
580
+ elsif (key_name.downcase() == Constants::TERRITORIES.downcase or key_name.downcase() == Constants::TERRITORY.downcase) and !field_instance.custom_field.nil? and !field_instance.custom_field
581
+ field_detail[Constants::NAME] = key_name
582
+ field_detail[Constants::TYPE] = Constants::LIST_NAMESPACE
583
+ field_detail[Constants::STRUCTURE_NAME] = Constants::TERRITORY_NAMESPACE
584
+ field_detail[Constants::LOOKUP] = true
585
+ return
586
+ elsif key_name.downcase() == Constants::PRODUCT_NAME.downcase and Constants::INVENTORY_MODULES_ITEMS.include? module_api_name.downcase
587
+ field_detail[Constants::NAME] = key_name
588
+ field_detail[Constants::TYPE] = Constants::LINEITEM_PRODUCT
589
+ field_detail[Constants::STRUCTURE_NAME] = Constants::LINEITEM_PRODUCT
590
+ field_detail[Constants::LOOKUP] = true
591
+ return
592
+ elsif key_name.downcase() == Constants::DISCOUNT.downcase and Constants::INVENTORY_MODULES_ITEMS.include? module_api_name.downcase
593
+ field_detail[Constants::NAME] = key_name
594
+ field_detail[Constants::TYPE] = Constants::STRING
595
+ return
596
+ elsif key_name.downcase() == Constants::TAX.downcase and module_api_name.downcase() == Constants::PRODUCTS.downcase
597
+ field_detail[Constants::NAME] = key_name
598
+ field_detail[Constants::TYPE] = Constants::LIST_NAMESPACE
599
+ field_detail[Constants::STRUCTURE_NAME] = Constants::TAX_NAMESPACE
600
+ return
511
601
  elsif @@apitype_vs_datatype.include? data_type
512
602
  field_detail[Constants::TYPE] = @@apitype_vs_datatype[data_type]
513
603
  elsif data_type.downcase == Constants::FORMULA.downcase
@@ -524,6 +614,30 @@ module Util
524
614
  field_detail[Constants::LOOKUP] = true if data_type.downcase.include? Constants::LOOKUP
525
615
  field_detail[Constants::SKIP_MANDATORY] = true if data_type.downcase.include? Constants::CONSENT_LOOKUP
526
616
 
617
+ if data_type.downcase.include? Constants::MULTI_SELECT_LOOKUP
618
+ field_detail[Constants::SKIP_MANDATORY] = true
619
+ if !field_instance.multiselectlookup.nil?
620
+ if !field_instance.multiselectlookup.linking_module.nil?
621
+ linking_module = field_instance.multiselectlookup.linking_module
622
+ field_detail[Constants::MODULE] = linking_module
623
+ module_name = linking_module
624
+ end
625
+ end
626
+ field_detail[Constants::SUBFORM] = true
627
+ end
628
+
629
+ if data_type.downcase.include? Constants::MULTI_USER_LOOKUP
630
+ field_detail[Constants::SKIP_MANDATORY] = true
631
+ if !field_instance.multiuserlookup.nil?
632
+ if !field_instance.multiuserlookup.linking_module.nil?
633
+ linking_module = field_instance.multiuserlookup.linking_module
634
+ field_detail[Constants::MODULE] = linking_module
635
+ module_name = linking_module
636
+ end
637
+ end
638
+ field_detail[Constants::SUBFORM] = true
639
+ end
640
+
527
641
  if @@apitype_vs_structurename.include? data_type
528
642
  field_detail[Constants::STRUCTURE_NAME] = @@apitype_vs_structurename[data_type]
529
643
  end
@@ -545,7 +659,7 @@ module Util
545
659
  field_detail[Constants::MODULE] = module_name
546
660
  end
547
661
 
548
- if data_type.downcase == Constants::LOOKUP.downcase
662
+ if data_type.downcase == Constants::LOOKUP.downcase && !field_instance.lookup.nil?
549
663
  module_name = field_instance.lookup.module
550
664
  if !module_name.nil? && (module_name.downcase != Constants::SE_MODULE.downcase)
551
665
  field_detail[Constants::MODULE] = module_name
@@ -557,16 +671,11 @@ module Util
557
671
  end
558
672
  field_detail[Constants::LOOKUP] = true
559
673
  end
560
- get_fields(module_name) if !module_name.nil? && !module_name.empty?
674
+ get_fields_info(module_name) if !module_name.nil? && !module_name.empty?
561
675
  field_detail[Constants::NAME] = key_name
562
676
  end
563
-
564
- def self.get_modules
565
- @@sync_lock.synchronize do
566
- @@api_supported_module = get_modules_api_names(nil)
567
- end
568
- end
569
- def self.get_modules_api_names(header)
677
+
678
+ def self.get_modules(header)
570
679
  api_names = {}
571
680
  header_map = HeaderMap.new
572
681
  unless header.nil?
@@ -585,7 +694,12 @@ module Util
585
694
  if response_object.is_a? Modules::ResponseWrapper
586
695
  modules = response_object.modules
587
696
  modules.each do |module_ins|
588
- api_names[module_ins.api_name.downcase] = module_ins.generated_type.value if module_ins.api_supported
697
+ if module_ins.api_supported
698
+ module_details = {}
699
+ module_details[Constants::API_NAME]=module_ins.api_name
700
+ module_details[Constants::GENERATED_TYPE]=module_ins.generated_type.value
701
+ api_names[module_ins.api_name.downcase] =module_details
702
+ end
589
703
  end
590
704
  elsif response_object.is_a? Modules::APIException
591
705
  error_response = {}
@@ -596,6 +710,15 @@ module Util
596
710
  end
597
711
  end
598
712
  end
713
+ if header.nil?
714
+ begin
715
+ initializer = Initializer.get_initializer
716
+ resoures_folder_path = initializer.resources_path + '/' + Constants::RESOURCES
717
+ Dir.mkdir resoures_folder_path unless File.exist? resoures_folder_path
718
+ record_field_details_path = get_record_json_file_path()
719
+ write_module_meta_data(record_field_details_path, api_names)
720
+ end
721
+ end
599
722
  api_names
600
723
  end
601
724
 
@@ -609,7 +732,7 @@ module Util
609
732
 
610
733
  if related_list_jo[Constants::MODULE] != Constants::NULL_VALUE
611
734
  common_api_handler.module_api_name = related_list_jo[Constants::MODULE]
612
- get_fields(related_list_jo[Constants::MODULE])
735
+ get_fields_info(related_list_jo[Constants::MODULE])
613
736
  end
614
737
  return true
615
738
  end
@@ -617,6 +740,70 @@ module Util
617
740
  false
618
741
  end
619
742
 
743
+ def self.verify_photo_support(module_api_name)
744
+ @@sync_lock.synchronize do
745
+ begin
746
+ module_api_name = verify_module_api_name(module_api_name)
747
+ if Constants::PHOTO_SUPPORTED_MODULES.include? module_api_name.downcase
748
+ return true
749
+ end
750
+ modules = get_module_names()
751
+
752
+ if modules.key? module_api_name.downcase || !modules[module_api_name.downcase].nil?
753
+ module_meta_data = modules[module_api_name.downcase]
754
+
755
+ if module_meta_data.key? Constants::GENERATED_TYPE && module_meta_data[Constants::GENERATED_TYPE] != Constants::GENERATED_TYPE_CUSTOM
756
+ raise SDKException.new(Constants::UPLOAD_PHOTO_UNSUPPORTED_ERROR,Constants::UPLOAD_PHOTO_UNSUPPORTED_MESSAGE + module_api_name)
757
+ end
758
+ end
759
+ rescue SDKException => e
760
+ raise e
761
+ rescue StandardError => e
762
+ ex = SDKException.new(nil, Constants::EXCEPTION, nil, e)
763
+ SDKLog::SDKLogger.severe(Constants::EXCEPTION, ex)
764
+ raise ex
765
+ end
766
+ return true
767
+ end
768
+ end
769
+
770
+ def self.get_module_names()
771
+ module_data = {}
772
+ initializer = Initializer.get_initializer
773
+ resoures_folder_path = initializer.resources_path + '/' + Constants::RESOURCES
774
+ Dir.mkdir resoures_folder_path unless File.exist? resoures_folder_path
775
+
776
+ record_field_details_path = get_record_json_file_path()
777
+
778
+ call_get_modules = false
779
+ if File.exists? record_field_details_path
780
+ json = JSON.parse(File.read(record_field_details_path))
781
+ if !json.key? Constants::SDK_MODULE_METADATA
782
+ call_get_modules = true
783
+ elsif json[Constants::SDK_MODULE_METADATA].nil? || json[Constants::SDK_MODULE_METADATA].length == 0
784
+ call_get_modules = true
785
+ end
786
+ else
787
+ call_get_modules = true
788
+ end
789
+ if call_get_modules
790
+ module_data = get_modules(nil)
791
+ write_module_meta_data(record_field_details_path, module_data)
792
+ return module_data
793
+ end
794
+ record_field_details_json = JSON.parse(File.read(record_field_details_path))
795
+ module_data = record_field_details_json[Constants::SDK_MODULE_METADATA]
796
+ return module_data
797
+ end
798
+
799
+ def self.write_module_meta_data(record_field_details_path, module_data)
800
+ field_details_json = (File.exist? record_field_details_path) ? JSON.parse(File.read(record_field_details_path)):{}
801
+ field_details_json[Constants::SDK_MODULE_METADATA] = module_data
802
+ File.open(record_field_details_path, 'w') do |f|
803
+ f.write(field_details_json.to_json)
804
+ end
805
+ end
806
+
620
807
  def self.get_related_list_details(module_api_name)
621
808
  rlo = RelatedLists::RelatedListsOperations.new(module_api_name)
622
809
  response = rlo.get_related_lists
@@ -660,7 +847,7 @@ module Util
660
847
 
661
848
  def self.refresh_modules
662
849
  @@force_refresh = true
663
- get_fields(nil)
850
+ get_fields_info(nil)
664
851
  @@force_refresh = false
665
852
  end
666
853