Class: LeapSalesforce::Generator::SoqlEnums
- Inherits:
-
Object
- Object
- LeapSalesforce::Generator::SoqlEnums
- Includes:
- LeapSalesforce::Generator
- Defined in:
- lib/leap_salesforce/generator/soql_enums.rb
Overview
Creates Soql Enumerations / Picklists from objects in LeapSalesforce.soql_objects
Constant Summary collapse
- ENUM_FOLDER =
File.join(LeapSalesforce.lib_folder, 'metadata', 'enum').freeze
Instance Method Summary collapse
-
#cleanup_files_created ⇒ Object
Clean up files generated for all picklists.
-
#create ⇒ Object
Create Soql enumerations for all objects specified in .leap_salesforce.yml.
-
#create_picklists_for(entity) ⇒ Object
Create files for each picklist found for that entity.
-
#generate_picklist_file(picklist) ⇒ Object
Generate file for a picklist from it’s metadata.
-
#reset_enum_folder ⇒ Object
Reset state of Enum folder so that enums that no longer exist do not persist.
Methods included from LeapSalesforce::Generator
#create_inner_file, #generate_file, #generate_files, #generate_from_template, #read_template, #template_loc
Instance Method Details
permalink #cleanup_files_created ⇒ Object
Clean up files generated for all picklists
91 92 93 94 95 |
# File 'lib/leap_salesforce/generator/soql_enums.rb', line 91 def cleanup_files_created return unless LeapSalesforce.language == "ruby" `rubocop -A #{ENUM_FOLDER} --display-only-fail-level-offenses --enable-pending-cops` end |
permalink #create ⇒ Object
Create Soql enumerations for all objects specified in .leap_salesforce.yml
21 22 23 24 25 26 27 28 29 30 |
# File 'lib/leap_salesforce/generator/soql_enums.rb', line 21 def create if LeapSalesforce.soql_objects.empty? raise LeapSalesforce::SetupError, 'LeapSalesforce.soql_objects is empty. ' \ 'Please set the list of objects you want to create enums for in .leap_salesforce:soql_objects ' \ 'and then run task "leaps:create_soql_objects" to create objects' end reset_enum_folder LeapSalesforce.soql_objects.each { |entity| create_picklists_for entity } cleanup_files_created end |
permalink #create_picklists_for(entity) ⇒ Object
Create files for each picklist found for that entity
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/leap_salesforce/generator/soql_enums.rb', line 35 def create_picklists_for(entity) soql_object = entity # LeapSalesforce.soql_objects.find { |so| so.class_name == entity.to_s } @soql_data_object = Class.new(SoqlData) do soql_object soql_object.backend_name end @entity_name = entity.class_name unless soql_object LeapSalesforce.logger.warn "Could not find soql object for '#{@entity_name}', ignoring" return end unless soql_object.create_enum != false puts "Skipping picklists for #{@entity_name}" return end puts "Creating picklists for #{@entity_name}" picklists = @soql_data_object.picklists puts "#{picklists.count} picklists found" picklists.each do |picklist| if soql_object.excludes?(picklist) puts "Excluding picklist '#{picklist}'" else generate_picklist_file picklist end end end |
permalink #generate_picklist_file(picklist) ⇒ Object
Generate file for a picklist from it’s metadata
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/leap_salesforce/generator/soql_enums.rb', line 64 def generate_picklist_file(picklist) @picklist = picklist @enum_name = picklist.to_class_name picklist_name = picklist.to_key_name values = @soql_data_object.picklist_for(picklist) @enum_values = {} values.each do |value| @enum_values[value.to_key_name_for(@enum_values)] = value end if LeapSalesforce.language == "ruby" content = read_template 'picklist.rb.erb', binding file = File.join(ENUM_FOLDER, @entity_name.to_s.snakecase, "#{picklist_name}.rb") elsif LeapSalesforce.language == 'java' content = read_template 'picklist.java.erb', binding file = File.join(ENUM_FOLDER, @entity_name.to_s, "#{@enum_name}.java") else raise LeapSalesforce::SetupError, "Unsupported language '#{LeapSalesforce.language}'" end generate_file file, content end |
permalink #reset_enum_folder ⇒ Object
Reset state of Enum folder so that enums that no longer exist do not persist
86 87 88 |
# File 'lib/leap_salesforce/generator/soql_enums.rb', line 86 def reset_enum_folder FileUtils.rm_rf ENUM_FOLDER end |