blufin 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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