blufin 0.1.0

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 (113) hide show
  1. checksums.yaml +7 -0
  2. data/bin/bf +5 -0
  3. data/bin/blufin +5 -0
  4. data/lib/blufin.rb +245 -0
  5. data/lib/core/code_scanners/common/scanner_common.rb +83 -0
  6. data/lib/core/code_scanners/common/scanner_java.rb +106 -0
  7. data/lib/core/code_scanners/scanner_java_embedded_objects.rb +386 -0
  8. data/lib/core/code_scanners/scanner_java_enums.rb +125 -0
  9. data/lib/core/code_scanners/scanner_java_source.rb +29 -0
  10. data/lib/core/code_scanners/scanner_java_tests.rb +157 -0
  11. data/lib/core/error_handling/schema_error.rb +9 -0
  12. data/lib/core/error_handling/sql_error.rb +21 -0
  13. data/lib/core/error_handling/sql_error_handler.rb +149 -0
  14. data/lib/core/error_handling/yml_error.rb +21 -0
  15. data/lib/core/error_handling/yml_error_handler.rb +437 -0
  16. data/lib/core/mysql.rb +347 -0
  17. data/lib/core/opt.rb +21 -0
  18. data/lib/core/site/site.rb +26 -0
  19. data/lib/core/site/site_auth.rb +88 -0
  20. data/lib/core/site/site_embedded.rb +27 -0
  21. data/lib/core/site/site_ports.rb +9 -0
  22. data/lib/core/site/site_resolver.rb +276 -0
  23. data/lib/core/site/site_services.rb +162 -0
  24. data/lib/core/site/site_ui.rb +16 -0
  25. data/lib/core/yml/config/yml_config_validator.rb +219 -0
  26. data/lib/core/yml/maven/yml_maven_validator.rb +1132 -0
  27. data/lib/core/yml/resource/yml_resource_validator.rb +154 -0
  28. data/lib/core/yml/schema/yml_schema_flags.rb +9 -0
  29. data/lib/core/yml/schema/yml_schema_validator.rb +1850 -0
  30. data/lib/core/yml/yml_cache_handler.rb +115 -0
  31. data/lib/core/yml/yml_common.rb +487 -0
  32. data/lib/core/yml/yml_meta_writer_base.rb +300 -0
  33. data/lib/core/yml/yml_outputter.rb +307 -0
  34. data/lib/core/yml/yml_validator_base.rb +630 -0
  35. data/lib/core/yml_writers/yml_configuration_writer.rb +40 -0
  36. data/lib/core/yml_writers/yml_java_api_resource_writer.rb +348 -0
  37. data/lib/core/yml_writers/yml_java_cron_type_writer.rb +113 -0
  38. data/lib/core/yml_writers/yml_java_css_dependency_writer.rb +59 -0
  39. data/lib/core/yml_writers/yml_java_dao_writer.rb +364 -0
  40. data/lib/core/yml_writers/yml_java_dto_writer.rb +251 -0
  41. data/lib/core/yml_writers/yml_java_embedded_object_writer.rb +968 -0
  42. data/lib/core/yml_writers/yml_java_enum_writer.rb +161 -0
  43. data/lib/core/yml_writers/yml_java_js_dependency_writer.rb +59 -0
  44. data/lib/core/yml_writers/yml_java_message_type_writer.rb +106 -0
  45. data/lib/core/yml_writers/yml_java_meta_writer.rb +173 -0
  46. data/lib/core/yml_writers/yml_java_model_writer.rb +510 -0
  47. data/lib/core/yml_writers/yml_java_pom_writer.rb +1050 -0
  48. data/lib/core/yml_writers/yml_java_resource_data_writer.rb +251 -0
  49. data/lib/core/yml_writers/yml_java_sdk_writer.rb +732 -0
  50. data/lib/core/yml_writers/yml_java_validator_writer.rb +280 -0
  51. data/lib/core/yml_writers/yml_java_worker_writer.rb +81 -0
  52. data/lib/core/yml_writers/yml_sql_structure_writer.rb +307 -0
  53. data/lib/core/yml_writers/yml_sql_template_writer.rb +243 -0
  54. data/lib/core/yml_writers/yml_vue_service_writer.rb +170 -0
  55. data/lib/core/yml_writers/yml_writer_base.rb +114 -0
  56. data/lib/routes/api_list.rb +35 -0
  57. data/lib/routes/api_meta.rb +59 -0
  58. data/lib/routes/build.rb +46 -0
  59. data/lib/routes/create/create_api.rb +35 -0
  60. data/lib/routes/create/create_ui.rb +84 -0
  61. data/lib/routes/export.rb +56 -0
  62. data/lib/routes/generate/generate_api.rb +225 -0
  63. data/lib/routes/generate/generate_img_favicon.rb +56 -0
  64. data/lib/routes/generate/generate_img_landing.rb +94 -0
  65. data/lib/routes/generate/generate_lambda.rb +43 -0
  66. data/lib/routes/lint.rb +35 -0
  67. data/lib/routes/mysql_reset.rb +43 -0
  68. data/lib/routes/release_blufin.rb +351 -0
  69. data/lib/routes/run.rb +35 -0
  70. data/lib/version.rb +1 -0
  71. data/opt/README.MD +2 -0
  72. data/opt/config/schema.yml +73 -0
  73. data/opt/config/template.yml +25 -0
  74. data/opt/sql/data/config/data-client.sql +7 -0
  75. data/opt/sql/data/config/data-db-configuration-property.sql +47 -0
  76. data/opt/sql/data/config/data-db-configuration.sql +9 -0
  77. data/opt/sql/data/config/data-db.sql +175 -0
  78. data/opt/sql/data/config/data-profile-api.sql +47 -0
  79. data/opt/sql/data/config/data-profile-cron.sql +0 -0
  80. data/opt/sql/data/config/data-profile-worker.sql +0 -0
  81. data/opt/sql/data/config/data-profile.sql +87 -0
  82. data/opt/sql/data/config/data-project.sql +95 -0
  83. data/opt/sql/structure/blufin-master-structure-fks.sql +65 -0
  84. data/opt/sql/structure/blufin-master-structure.sql +97 -0
  85. data/opt/sql/structure/blufin-mock-structure-fks.sql +38 -0
  86. data/opt/sql/structure/blufin-mock-structure.sql +98 -0
  87. data/opt/sql/templates/config/template-client.sql +7 -0
  88. data/opt/sql/templates/config/template-db-configuration-property.sql +11 -0
  89. data/opt/sql/templates/config/template-db-configuration.sql +9 -0
  90. data/opt/sql/templates/config/template-db.sql +21 -0
  91. data/opt/sql/templates/config/template-profile-api.sql +11 -0
  92. data/opt/sql/templates/config/template-profile-cron.sql +7 -0
  93. data/opt/sql/templates/config/template-profile-worker.sql +7 -0
  94. data/opt/sql/templates/config/template-profile.sql +21 -0
  95. data/opt/sql/templates/config/template-project.sql +23 -0
  96. data/opt/yml/api/schema/config/client.yml +14 -0
  97. data/opt/yml/api/schema/config/db.yml +45 -0
  98. data/opt/yml/api/schema/config/db_configuration.yml +22 -0
  99. data/opt/yml/api/schema/config/db_configuration_property.yml +22 -0
  100. data/opt/yml/api/schema/config/profile.yml +53 -0
  101. data/opt/yml/api/schema/config/profile_api.yml +22 -0
  102. data/opt/yml/api/schema/config/profile_cron.yml +14 -0
  103. data/opt/yml/api/schema/config/profile_worker.yml +14 -0
  104. data/opt/yml/api/schema/config/project.yml +48 -0
  105. data/opt/yml/api/schema/mock/mock.yml +99 -0
  106. data/opt/yml/api/schema/mock/mock_nested_if_enum.yml +16 -0
  107. data/opt/yml/api/schema/mock/mock_nested_if_enum_system.yml +16 -0
  108. data/opt/yml/api/schema/mock/mock_nested_linked.yml +43 -0
  109. data/opt/yml/api/schema/mock/mock_nested_multiple.yml +61 -0
  110. data/opt/yml/api/schema/mock/mock_nested_single.yml +67 -0
  111. data/opt/yml/api/schema/mock/mock_nested_single_super_deep.yml +32 -0
  112. data/opt/yml/api/schema/mock/mock_nested_single_super_super_deep.yml +17 -0
  113. metadata +240 -0
@@ -0,0 +1,40 @@
1
+ module Blufin
2
+
3
+ class YmlConfigurationWriter < Blufin::YmlWriterBase
4
+
5
+ PLACEHOLDER_SERVICE = '{{--PLACEHOLDER-SERVICE--}}'
6
+ PLACEHOLDER_PORT = '{{--PLACEHOLDER-PORT--}}'
7
+
8
+ # Initialize the class.
9
+ # @return void
10
+ def initialize(site)
11
+
12
+ @site = Blufin::SiteResolver::validate_site(site)
13
+ @site_name = Blufin::SiteResolver::get_site_name(@site)
14
+ @site_ports = Blufin::SiteResolver::get_site_ports(@site)
15
+ @site_domain = Blufin::SiteResolver::get_site_domain(@site)
16
+ @site_location = "#{Blufin::SiteResolver::get_site_location(@site)}/"
17
+
18
+ @template_nginx = <<TEMPLATE
19
+ TEMPLATE
20
+
21
+ end
22
+
23
+ # Write the file(s).
24
+ # @return void
25
+ def write
26
+
27
+ # TODO - Finish this. Needs to write YML configuration (passed to java) from DB values.
28
+ file = nil
29
+
30
+ contents = @template_nginx
31
+ # contents = contents.gsub(PLACEHOLDER_SERVICE, service)
32
+ # contents = contents.gsub(PLACEHOLDER_PORT, port.to_s)
33
+ Blufin::Files.write_file(file, Blufin::YmlCommon::convert_string_to_line_array(contents))
34
+
35
+
36
+ end
37
+
38
+ end
39
+
40
+ end
@@ -0,0 +1,348 @@
1
+ module Blufin
2
+
3
+ class YmlJavaApiResourceWriter < Blufin::YmlWriterBase
4
+
5
+ SERVICE = Blufin::SiteServices::API
6
+ PACKAGE = "#{Blufin::SiteServices::PACKAGE_AUTO_GENERATED}.resources"
7
+
8
+ # Initialize the class.
9
+ # @return void
10
+ def initialize(site, schema_resources)
11
+
12
+ @schema_resources = schema_resources
13
+
14
+ raise RuntimeError, 'Could not find valid @schema_resources.' if @schema_resources.nil? || !@schema_resources.is_a?(Hash)
15
+
16
+ @site = Blufin::SiteResolver::validate_site(site)
17
+ @site_name = Blufin::SiteResolver::get_site_name(@site)
18
+ @site_domain = Blufin::SiteResolver::get_site_domain(@site)
19
+ @site_domain_gsub = @site_domain.strip == '' ? '' : "#{@site_domain}."
20
+ @site_location = "#{Blufin::SiteResolver::get_site_location(@site)}/"
21
+
22
+ # Wipe out all previous files.
23
+ Blufin::YmlSchemaValidator::VALID_SCHEMAS_GENERATE.each do |schema|
24
+ path_to_wipe_out = "#{get_java_path(@site, schema, SERVICE, PACKAGE)}"
25
+ if Blufin::Files::path_exists(path_to_wipe_out)
26
+ if Blufin::Files::get_files_in_dir(path_to_wipe_out).any?
27
+ Blufin::Terminal::command('rm *', path_to_wipe_out, false, false)
28
+ end
29
+ end
30
+ end
31
+
32
+ end
33
+
34
+ # @return void
35
+ def write
36
+
37
+ @schema_resources.each do |schema_table, resource_data|
38
+
39
+ # This filters out the "mock" schema used for testing.
40
+ next if schema_table.split('.')[0] == Blufin::YmlSchemaValidator::MOCK
41
+
42
+ # Only write PARENT resources as they will contain the others as 'dependents'.
43
+ next unless resource_data[:tree].length < 2
44
+
45
+ # Skip if this resource has no HTTP Methods.
46
+ next unless Blufin::YmlCommon::has_at_least_one_http_method(resource_data, Blufin::YmlSchemaValidator::CONFIG_INTERNAL)
47
+
48
+ @schema = schema_table.split('.')[0]
49
+ @table = schema_table.split('.')[1]
50
+ @type = resource_data[:type]
51
+
52
+ @import_statements = []
53
+
54
+ auth_level = Blufin::SiteAuth::get_auth_level_for_table(@schema, @table)
55
+ table_name = Blufin::Strings::snake_case_to_camel_case(@table)
56
+ table_name_lower = Blufin::Strings::snake_case_to_camel_case_lower(@table)
57
+ class_name = "#{table_name}Resource"
58
+ auth_string = ''
59
+
60
+ # TODO - THIS CANNOT BE HARD-CODED TO FALSE/TRUE.
61
+ is_public = false
62
+ is_secured = false
63
+ is_account_aware = false
64
+ is_user_aware = false
65
+
66
+ if auth_level == Blufin::SiteAuth::LEVEL_ACCOUNT || auth_level == Blufin::SiteAuth::LEVEL_ACCOUNT_USER
67
+ is_secured = true
68
+ is_account_aware = true
69
+ auth_string = '{BY.ACCOUNT}'
70
+ end
71
+
72
+ if auth_level == Blufin::SiteAuth::LEVEL_ACCOUNT_USER
73
+ is_secured = true
74
+ is_user_aware = true
75
+ auth_string = '{BY.ACCOUNT, BY.USER}'
76
+
77
+ end
78
+
79
+ # TODO - THIS CANNOT BE HARD-CODED TO FALSE.
80
+ is_oauth = false
81
+
82
+ # TODO - REMOVE (AFTER OAUTH IS FIXED -- HANDY DEBUG STRING)
83
+ # puts "\x1B[38;5;154m#{@schema}.#{@table}\x1B[0m \xe2\x86\x92 \x1B[38;5;196m#{auth_level}\x1B[0m"
84
+
85
+ # TODO - REMOVE
86
+ # puts "\x1B[38;5;198m#{schema_table}\x1B[0m"
87
+ # puts resource_data.inspect
88
+
89
+ @import_statements << 'import org.blufin.sdk.rest.PatchOperation;'
90
+ @import_statements << 'import org.blufin.api.base.AbstractResource;'
91
+ @import_statements << 'import org.blufin.core.auth.annotations.Public;' if is_public
92
+ @import_statements << 'import org.blufin.core.auth.annotations.Secured;' if is_secured
93
+ @import_statements << 'import org.blufin.core.auth.annotations.OAuth;' if is_oauth
94
+ @import_statements << 'import org.blufin.core.auth.annotations.helper.BY;'
95
+ @import_statements << 'import org.blufin.sdk.constants.SdkConstants;'
96
+ @import_statements << "import #{@site_domain_gsub}#{@site_name.gsub('-', '.')}.#{Blufin::SiteServices::SDK}.dto.#{table_name};"
97
+ @import_statements << "import #{@site_domain_gsub}#{@site_name.gsub('-', '.')}.#{Blufin::SiteServices::SDK}.metadata.#{table_name}#{Blufin::YmlJavaMetaWriter::META_DATA};"
98
+ @import_statements << "import #{@site_domain_gsub}#{@site_name.gsub('-', '.')}.#{Blufin::SiteServices::API}.#{Blufin::SiteServices::PACKAGE_AUTO_GENERATED}.validator.#{table_name}Validator;"
99
+ @import_statements << "import #{@site_domain_gsub}#{@site_name.gsub('-', '.')}.#{Blufin::SiteServices::API}.#{Blufin::SiteServices::PACKAGE_AUTO_GENERATED}.model.#{table_name}Model;"
100
+ @import_statements << 'import java.util.List;'
101
+ @import_statements << 'import org.springframework.http.ResponseEntity;'
102
+ @import_statements << 'import org.springframework.web.bind.annotation.PathVariable;'
103
+ @import_statements << 'import org.springframework.web.bind.annotation.RequestParam;'
104
+ @import_statements << 'import org.springframework.web.bind.annotation.GetMapping;'
105
+ @import_statements << 'import org.springframework.web.bind.annotation.PostMapping;'
106
+ @import_statements << 'import org.springframework.web.bind.annotation.PutMapping;'
107
+ @import_statements << 'import org.springframework.web.bind.annotation.PatchMapping;'
108
+ @import_statements << 'import org.springframework.web.bind.annotation.DeleteMapping;'
109
+ @import_statements << 'import org.springframework.web.bind.annotation.RestController;'
110
+ @import_statements << 'import java.util.List;'
111
+
112
+ content_inner = []
113
+ content_inner << '@RestController'
114
+ content_inner << '@TestNotRequired'
115
+ content_inner << "public class #{class_name} extends AbstractResource {"
116
+
117
+ lb = "\n " # line-break
118
+
119
+ if resource_data[:methods_internal].has_key?(Blufin::YmlConfigValidator::GET)
120
+ content_inner << ''
121
+ content_inner << ' @Public' if is_public
122
+ content_inner << ' @OAuth' if is_oauth
123
+ content_inner << " @GetMapping(\"/#{@schema_resources["#{schema_table}"][:resource]}\")"
124
+ content_inner << " @Secured(#{auth_string})" if is_account_aware || is_user_aware
125
+ content_inner << " public ResponseEntity get#{table_name}(#{lb}@RequestParam(name = SdkConstants.FIELDS, required = false) String fields,#{lb}@RequestParam(name = SdkConstants.SORT, required = false) String sort,#{lb}@RequestParam(name = SdkConstants.PAGE, required = false) String page,#{lb}@RequestParam(name = SdkConstants.ENTRIES, required = false) String entries,#{lb}@RequestParam(name = SdkConstants.FILTERS, required = false) String filters) {"
126
+ content_inner << ''
127
+ content_inner << " return getPaginatedResponse(#{table_name}Model.getInstance(), #{table_name}#{Blufin::YmlJavaMetaWriter::META_DATA}.getInstance(), fields, sort, page, entries, filters);"
128
+ content_inner << ' }'
129
+ content_inner << ''
130
+ content_inner << ' @Public' if is_public
131
+ content_inner << ' @OAuth' if is_oauth
132
+ content_inner << " @GetMapping(\"/#{@schema_resources["#{schema_table}"][:resource]}/{ids:[0-9\\\\-,]+}\")"
133
+ content_inner << " @Secured(#{auth_string})" if is_account_aware || is_user_aware
134
+ content_inner << " public ResponseEntity get#{table_name}(#{lb}@PathVariable(\"ids\") String ids,#{lb}@RequestParam(name = SdkConstants.FIELDS, required = false) String fields,#{lb}@RequestParam(name = SdkConstants.SORT, required = false) String sort) {"
135
+ content_inner << ''
136
+ content_inner << " return getIdSetResponse(#{table_name}Model.getInstance(), #{table_name}#{Blufin::YmlJavaMetaWriter::META_DATA}.getInstance(), ids, fields, sort);"
137
+ content_inner << ' }'
138
+ end
139
+
140
+ if resource_data[:methods_internal].has_key?(Blufin::YmlConfigValidator::POST)
141
+ content_inner << ''
142
+ content_inner << ' @Public' if is_public
143
+ content_inner << ' @OAuth' if is_oauth
144
+ content_inner << " @PostMapping(\"/#{@schema_resources["#{schema_table}"][:resource]}\")"
145
+ content_inner << " @Secured(#{auth_string})" if is_account_aware || is_user_aware
146
+ content_inner << " public ResponseEntity post#{table_name}(#{lb}@RequestBody #{table_name} #{table_name_lower}) {"
147
+ content_inner << ''
148
+ content_inner << " return post(#{table_name}Model.getInstance(), #{table_name}MetaData.getInstance(), #{table_name}Validator.getInstance(), #{table_name_lower});"
149
+ content_inner << ' }'
150
+ content_inner << ''
151
+ content_inner << ' @Public' if is_public
152
+ content_inner << ' @OAuth' if is_oauth
153
+ content_inner << " @PostMapping(\"/#{@schema_resources["#{schema_table}"][:resource]}/list\")"
154
+ content_inner << " @Secured(#{auth_string})" if is_account_aware || is_user_aware
155
+ content_inner << " public ResponseEntity post#{table_name}List(#{lb}@RequestBody List<#{table_name}> #{table_name_lower}List) {"
156
+ content_inner << ''
157
+ content_inner << " return post(#{table_name}Model.getInstance(), #{table_name}MetaData.getInstance(), #{table_name}Validator.getInstance(), #{table_name_lower}List);"
158
+ content_inner << ' }'
159
+ end
160
+
161
+ if resource_data[:methods_internal].has_key?(Blufin::YmlConfigValidator::PUT)
162
+ content_inner << ''
163
+ content_inner << ' @Public' if is_public
164
+ content_inner << ' @OAuth' if is_oauth
165
+ content_inner << " @PutMapping(\"/#{@schema_resources["#{schema_table}"][:resource]}\")"
166
+ content_inner << " @Secured(#{auth_string})" if is_account_aware || is_user_aware
167
+ content_inner << " public ResponseEntity put#{table_name}(#{lb}@RequestBody #{table_name} #{table_name_lower}) {"
168
+ content_inner << ''
169
+ content_inner << " return put(#{table_name}Model.getInstance(), #{table_name}MetaData.getInstance(), #{table_name}Validator.getInstance(), #{table_name_lower});"
170
+ content_inner << ' }'
171
+ content_inner << ''
172
+ content_inner << ' @Public' if is_public
173
+ content_inner << ' @OAuth' if is_oauth
174
+ content_inner << " @PutMapping(\"/#{@schema_resources["#{schema_table}"][:resource]}/list\")"
175
+ content_inner << " @Secured(#{auth_string})" if is_account_aware || is_user_aware
176
+ content_inner << " public ResponseEntity put#{table_name}List(#{lb}@RequestBody List<#{table_name}> #{table_name_lower}List) {"
177
+ content_inner << ''
178
+ content_inner << " return put(#{table_name}Model.getInstance(), #{table_name}MetaData.getInstance(), #{table_name}Validator.getInstance(), #{table_name_lower}List);"
179
+ content_inner << ' }'
180
+ end
181
+
182
+ if resource_data[:methods_internal].has_key?(Blufin::YmlConfigValidator::PATCH)
183
+ content_inner << ''
184
+ content_inner << ' @Public' if is_public
185
+ content_inner << ' @OAuth' if is_oauth
186
+ content_inner << " @PatchMapping(\"/#{@schema_resources["#{schema_table}"][:resource]}\")"
187
+ content_inner << " @Secured(#{auth_string})" if is_account_aware || is_user_aware
188
+ content_inner << " public ResponseEntity patch#{table_name}(#{lb}@RequestBody List<PatchOperation> #{table_name_lower}Patch) {"
189
+ content_inner << ''
190
+ content_inner << " return patch(#{table_name}Model.getInstance(), #{table_name}MetaData.getInstance(), #{table_name}Validator.getInstance(), #{table_name_lower}Patch);"
191
+ content_inner << ' }'
192
+ end
193
+
194
+ if resource_data[:methods_internal].has_key?(Blufin::YmlConfigValidator::DELETE)
195
+ content_inner << ''
196
+ content_inner << ' @Public' if is_public
197
+ content_inner << ' @OAuth' if is_oauth
198
+ content_inner << " @DeleteMapping(\"/#{@schema_resources["#{schema_table}"][:resource]}/{ids:[0-9\\\\-,]+}\")"
199
+ content_inner << " @Secured(#{auth_string})" if is_account_aware || is_user_aware
200
+ content_inner << " public ResponseEntity delete#{table_name}(#{lb}@PathVariable(\"ids\") String ids) {"
201
+ content_inner << ''
202
+ content_inner << " return delete(#{table_name}Model.getInstance(), #{table_name}MetaData.getInstance(), #{table_name}Validator.getInstance(), ids);"
203
+ content_inner << ' }'
204
+ end
205
+
206
+ if !resource_data[:dependents].nil? && resource_data[:dependents].any?
207
+ resource_data[:dependents].each do |dependent|
208
+
209
+ dependent_resource_data = @schema_resources["#{@schema}.#{dependent}"]
210
+ dependent_auth_level = Blufin::SiteAuth::get_auth_level_for_table(dependent_resource_data[:schema], dependent_resource_data[:table]) # TODO - IMPLEMENT OR DELETE (ONCE WE START DOING AUTH STUFF)
211
+
212
+ dcc = Blufin::Strings::snake_case_to_camel_case(dependent)
213
+ dccl = Blufin::Strings::snake_case_to_camel_case_lower(dependent)
214
+ uri = @schema_resources["#{@schema}.#{dependent}"][:resource]
215
+ uri_with_parent_id = ''
216
+ uri_parts = uri.split('/')
217
+ uri_parts.each_with_index do |uri_part, idx|
218
+ uri_with_parent_id = uri_with_parent_id + '/' + uri_part
219
+ uri_with_parent_id = uri_with_parent_id + '/{parentId}' if (idx + 2) == uri_parts.length
220
+
221
+ end
222
+ uri_with_parent_id.slice!(0)
223
+
224
+ # TODO - REMOVE
225
+ # puts "\x1B[38;5;166m#{dependent_resource_data[:schema]}.#{dependent_resource_data[:table]}\x1B[0m \xe2\x86\x92 \x1B[38;5;150m#{dependent_auth_level}\x1B[0m"
226
+
227
+ # TODO - REMOVE
228
+ # puts dependent_resource_data.to_yaml
229
+
230
+ @import_statements << "import #{@site_domain_gsub}#{@site_name.gsub('-', '.')}.#{Blufin::SiteServices::SDK}.dto.#{dcc};"
231
+ @import_statements << "import #{@site_domain_gsub}#{@site_name.gsub('-', '.')}.#{Blufin::SiteServices::SDK}.metadata.#{dcc}#{Blufin::YmlJavaMetaWriter::META_DATA};"
232
+ @import_statements << "import #{@site_domain_gsub}#{@site_name.gsub('-', '.')}.#{Blufin::SiteServices::API}.#{Blufin::SiteServices::PACKAGE_AUTO_GENERATED}.validator.#{dcc}Validator;"
233
+ @import_statements << "import #{@site_domain_gsub}#{@site_name.gsub('-', '.')}.#{Blufin::SiteServices::API}.#{Blufin::SiteServices::PACKAGE_AUTO_GENERATED}.model.#{dcc}Model;"
234
+
235
+ if dependent_resource_data[:methods_internal].has_key?(Blufin::YmlConfigValidator::GET)
236
+ content_inner << ''
237
+ content_inner << ' @Public' if is_public
238
+ content_inner << ' @OAuth' if is_oauth
239
+ content_inner << " @GetMapping(\"/#{uri}\")"
240
+ content_inner << " @Secured(#{auth_string})" if is_account_aware || is_user_aware
241
+ content_inner << " public ResponseEntity get#{dcc}(#{lb}@RequestParam(name = SdkConstants.FIELDS, required = false) String fields,#{lb}@RequestParam(name = SdkConstants.SORT, required = false) String sort,#{lb}@RequestParam(name = SdkConstants.PAGE, required = false) String page,#{lb}@RequestParam(name = SdkConstants.ENTRIES, required = false) String entries,#{lb}@RequestParam(name = SdkConstants.FILTERS, required = false) String filters) {"
242
+ content_inner << ''
243
+ content_inner << " return getPaginatedResponse(#{dcc}Model.getInstance(), #{dcc}#{Blufin::YmlJavaMetaWriter::META_DATA}.getInstance(), fields, sort, page, entries, filters);"
244
+ content_inner << ' }'
245
+ content_inner << ''
246
+ content_inner << ' @Public' if is_public
247
+ content_inner << ' @OAuth' if is_oauth
248
+ content_inner << " @GetMapping(\"/#{uri}/{ids:[0-9\\\\-,]+}\")"
249
+ content_inner << " @Secured(#{auth_string})" if is_account_aware || is_user_aware
250
+ content_inner << " public ResponseEntity get#{dcc}(#{lb}@PathVariable(\"ids\") String ids,#{lb}@RequestParam(name = SdkConstants.FIELDS, required = false) String fields,#{lb}@RequestParam(name = SdkConstants.SORT, required = false) String sort) {"
251
+ content_inner << ''
252
+ content_inner << " return getIdSetResponse(#{dcc}Model.getInstance(), #{dcc}#{Blufin::YmlJavaMetaWriter::META_DATA}.getInstance(), ids, fields, sort);"
253
+ content_inner << ' }'
254
+ end
255
+
256
+ if dependent_resource_data[:methods_internal].has_key?(Blufin::YmlConfigValidator::POST) && dependent_resource_data[:type] == Blufin::YmlSchemaValidator::RESOURCE_TYPE_OBJECT
257
+ content_inner << ''
258
+ content_inner << ' @Public' if is_public
259
+ content_inner << ' @OAuth' if is_oauth
260
+ content_inner << " @PostMapping(\"/#{uri_with_parent_id}\")"
261
+ content_inner << " @Secured(#{auth_string})" if is_account_aware || is_user_aware
262
+ content_inner << " public ResponseEntity post#{dcc}(#{lb}@PathVariable(\"parentId\") int parentId,#{lb}@RequestBody #{dcc} #{dccl}) {"
263
+ content_inner << ''
264
+ content_inner << " return post(parentId, #{dcc}Model.getInstance(), #{dcc}MetaData.getInstance(), #{dcc}Validator.getInstance(), #{dccl});"
265
+ content_inner << ' }'
266
+ end
267
+
268
+ if dependent_resource_data[:methods_internal].has_key?(Blufin::YmlConfigValidator::POST) && dependent_resource_data[:type] == Blufin::YmlSchemaValidator::RESOURCE_TYPE_OBJECT_LIST
269
+ content_inner << ''
270
+ content_inner << ' @Public' if is_public
271
+ content_inner << ' @OAuth' if is_oauth
272
+ content_inner << " @PostMapping(\"/#{uri_with_parent_id}/list\")"
273
+ content_inner << " @Secured(#{auth_string})" if is_account_aware || is_user_aware
274
+ content_inner << " public ResponseEntity post#{dcc}List(#{lb}@PathVariable(\"parentId\") int parentId,#{lb}@RequestBody List<#{dcc}> #{dccl}List) {"
275
+ content_inner << ''
276
+ content_inner << " return post(parentId, #{dcc}Model.getInstance(), #{dcc}MetaData.getInstance(), #{dcc}Validator.getInstance(), #{dccl}List);"
277
+ content_inner << ' }'
278
+ end
279
+
280
+ if dependent_resource_data[:methods_internal].has_key?(Blufin::YmlConfigValidator::PUT) && dependent_resource_data[:type] == Blufin::YmlSchemaValidator::RESOURCE_TYPE_OBJECT
281
+ content_inner << ''
282
+ content_inner << ' @Public' if is_public
283
+ content_inner << ' @OAuth' if is_oauth
284
+ content_inner << " @PutMapping(\"/#{uri_with_parent_id}\")"
285
+ content_inner << " @Secured(#{auth_string})" if is_account_aware || is_user_aware
286
+ content_inner << " public ResponseEntity put#{dcc}(#{lb}@PathVariable(\"parentId\") int parentId,#{lb}@RequestBody #{dcc} #{dccl}) {"
287
+ content_inner << ''
288
+ content_inner << " return put(parentId, #{dcc}Model.getInstance(), #{dcc}MetaData.getInstance(), #{dcc}Validator.getInstance(), #{dccl});"
289
+ content_inner << ' }'
290
+ end
291
+
292
+ if dependent_resource_data[:methods_internal].has_key?(Blufin::YmlConfigValidator::PUT) && dependent_resource_data[:type] == Blufin::YmlSchemaValidator::RESOURCE_TYPE_OBJECT_LIST
293
+ content_inner << ''
294
+ content_inner << ' @Public' if is_public
295
+ content_inner << ' @OAuth' if is_oauth
296
+ content_inner << " @PutMapping(\"/#{uri_with_parent_id}/list\")"
297
+ content_inner << " @Secured(#{auth_string})" if is_account_aware || is_user_aware
298
+ content_inner << " public ResponseEntity put#{dcc}List(#{lb}@PathVariable(\"parentId\") int parentId,#{lb}@RequestBody List<#{dcc}> #{dccl}) {"
299
+ content_inner << ''
300
+ content_inner << " return put(parentId, #{dcc}Model.getInstance(), #{dcc}MetaData.getInstance(), #{dcc}Validator.getInstance(), #{dccl});"
301
+ content_inner << ' }'
302
+ end
303
+
304
+ if dependent_resource_data[:methods_internal].has_key?(Blufin::YmlConfigValidator::PATCH)
305
+ content_inner << ''
306
+ content_inner << ' @Public' if is_public
307
+ content_inner << ' @OAuth' if is_oauth
308
+ content_inner << " @PatchMapping(\"/#{uri}/{id}\")"
309
+ content_inner << " @Secured(#{auth_string})" if is_account_aware || is_user_aware
310
+ content_inner << " public ResponseEntity patch#{dcc}(#{lb}@PathVariable(\"id\") int id,#{lb}@RequestBody List<PatchOperation> #{dccl}Patch) {"
311
+ content_inner << ''
312
+ content_inner << " return patch(id, #{dcc}Model.getInstance(), #{dcc}MetaData.getInstance(), #{dcc}Validator.getInstance(), #{dccl}Patch);"
313
+ content_inner << ' }'
314
+ end
315
+
316
+ if dependent_resource_data[:methods_internal].has_key?(Blufin::YmlConfigValidator::DELETE)
317
+ content_inner << ''
318
+ content_inner << ' @Public' if is_public
319
+ content_inner << ' @OAuth' if is_oauth
320
+ content_inner << " @DeleteMapping(\"/#{uri}/{ids:[0-9\\\\-,]+}\")"
321
+ content_inner << " @Secured(#{auth_string})" if is_account_aware || is_user_aware
322
+ content_inner << " public ResponseEntity delete#{dcc}(#{lb}@PathVariable(\"ids\") String ids) {"
323
+ content_inner << ''
324
+ content_inner << " return delete(#{dcc}Model.getInstance(), #{dcc}MetaData.getInstance(), #{dcc}Validator.getInstance(), ids);"
325
+ content_inner << ' }'
326
+ end
327
+
328
+ end
329
+
330
+ end
331
+
332
+ content = ["package #{get_package(@site, resource_data[:schema], PACKAGE, SERVICE)};", '']
333
+ content = content.push(*@import_statements)
334
+ content << ''
335
+ content = content.push(*content_inner)
336
+ content << '}'
337
+
338
+ full_file_path = "#{get_java_path(@site, @schema, SERVICE, PACKAGE)}/#{class_name}.java"
339
+
340
+ write_file_java(full_file_path, content).gsub(@site_location, '')
341
+
342
+ end
343
+
344
+ end
345
+
346
+ end
347
+
348
+ end
@@ -0,0 +1,113 @@
1
+ module Blufin
2
+
3
+ class YmlJavaCronTypeWriter < Blufin::YmlWriterBase
4
+
5
+ SERVICE = Blufin::SiteServices::LIB
6
+ PACKAGE = 'enums.system'
7
+
8
+ PLACEHOLDER_ONE = '{{--PLACEHOLDER-ONE--}}'
9
+ PLACEHOLDER_TWO = '{{--PLACEHOLDER-TWO--}}'
10
+
11
+ # Initialize the class.
12
+ # @return void
13
+ def initialize(site)
14
+
15
+ @site = Blufin::SiteResolver::validate_site(site)
16
+ @site_name = Blufin::SiteResolver::get_site_name(@site)
17
+ @site_domain = Blufin::SiteResolver::get_site_domain(@site)
18
+ @site_domain_gsub = @site_domain.strip == '' ? '' : "#{@site_domain}."
19
+ @site_location = "#{Blufin::SiteResolver::get_site_location(@site)}/"
20
+
21
+ @class_name = 'CronType'
22
+
23
+ @filename = "#{get_java_path(@site, nil, SERVICE, PACKAGE)}/#{@class_name}.java"
24
+
25
+ # Wipe out previous file (if exists).
26
+ Blufin::Files::delete_file(@filename)
27
+
28
+ @template = <<TEMPLATE
29
+ package #{PLACEHOLDER_PACKAGE};
30
+
31
+ import org.blufin.base.interfaces.AbstractCronType;
32
+ import #{@site_domain_gsub}#{@site_name.gsub('-', '.')}.lib.enums.system.MessageType;
33
+ import lombok.Getter;
34
+
35
+ import java.util.HashMap;
36
+ import java.util.Map;
37
+
38
+ public enum #{@class_name} implements AbstractCronType {
39
+
40
+ #{PLACEHOLDER_ONE}
41
+
42
+ private static final Map<String, #{@class_name}> map = new HashMap<>();
43
+
44
+ @Getter
45
+ private String name;
46
+
47
+ @Getter
48
+ private MessageType messageType;
49
+
50
+ static {
51
+
52
+ #{PLACEHOLDER_TWO}
53
+ }
54
+
55
+ /**
56
+ * @param name
57
+ * @param messageType
58
+ */
59
+ #{@class_name}(String name, MessageType messageType) {
60
+
61
+ this.name = name;
62
+ this.messageType = messageType;
63
+ }
64
+
65
+ /**
66
+ * Get CronType by its String representation.
67
+ * @param name
68
+ */
69
+ public static CronType get(String name) {
70
+
71
+ return map.get(name);
72
+ }
73
+
74
+ @Override
75
+ public String toString() {
76
+
77
+ return name;
78
+ }
79
+ }
80
+ TEMPLATE
81
+
82
+ end
83
+
84
+ # Write the file(s).
85
+ # @return void
86
+ def write
87
+
88
+ ph1 = []
89
+ ph2 = []
90
+
91
+ cron_types = Blufin::YmlConfigValidator::get_cron_types
92
+
93
+ # Don't write the class if there are no cron types.
94
+ return if cron_types.nil? || cron_types.length == 0
95
+
96
+ cron_types.each_with_index do |(key, value), idx|
97
+ comma_or_semicolon = (idx == (cron_types.length - 1)) ? ';' : ','
98
+ ph1 << " #{key.upcase}(\"#{key.upcase}\", MessageType.#{value[Blufin::YmlConfigValidator::MESSAGE].upcase})#{comma_or_semicolon}"
99
+ ph2 << " map.put(\"#{key.upcase}\", #{@class_name}.#{key.upcase});"
100
+ end
101
+
102
+ contents = @template
103
+ contents = contents.gsub(PLACEHOLDER_PACKAGE, get_package(@site, nil, PACKAGE, SERVICE))
104
+ contents = contents.gsub(PLACEHOLDER_ONE, Blufin::YmlCommon::convert_line_array_to_string(ph1))
105
+ contents = contents.gsub(PLACEHOLDER_TWO, Blufin::YmlCommon::convert_line_array_to_string(ph2))
106
+
107
+ write_file_java(@filename, Blufin::YmlCommon::convert_string_to_line_array(contents))
108
+
109
+ end
110
+
111
+ end
112
+
113
+ end