blufin 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/bf +5 -0
- data/bin/blufin +5 -0
- data/lib/blufin.rb +245 -0
- data/lib/core/code_scanners/common/scanner_common.rb +83 -0
- data/lib/core/code_scanners/common/scanner_java.rb +106 -0
- data/lib/core/code_scanners/scanner_java_embedded_objects.rb +386 -0
- data/lib/core/code_scanners/scanner_java_enums.rb +125 -0
- data/lib/core/code_scanners/scanner_java_source.rb +29 -0
- data/lib/core/code_scanners/scanner_java_tests.rb +157 -0
- data/lib/core/error_handling/schema_error.rb +9 -0
- data/lib/core/error_handling/sql_error.rb +21 -0
- data/lib/core/error_handling/sql_error_handler.rb +149 -0
- data/lib/core/error_handling/yml_error.rb +21 -0
- data/lib/core/error_handling/yml_error_handler.rb +437 -0
- data/lib/core/mysql.rb +347 -0
- data/lib/core/opt.rb +21 -0
- data/lib/core/site/site.rb +26 -0
- data/lib/core/site/site_auth.rb +88 -0
- data/lib/core/site/site_embedded.rb +27 -0
- data/lib/core/site/site_ports.rb +9 -0
- data/lib/core/site/site_resolver.rb +276 -0
- data/lib/core/site/site_services.rb +162 -0
- data/lib/core/site/site_ui.rb +16 -0
- data/lib/core/yml/config/yml_config_validator.rb +219 -0
- data/lib/core/yml/maven/yml_maven_validator.rb +1132 -0
- data/lib/core/yml/resource/yml_resource_validator.rb +154 -0
- data/lib/core/yml/schema/yml_schema_flags.rb +9 -0
- data/lib/core/yml/schema/yml_schema_validator.rb +1850 -0
- data/lib/core/yml/yml_cache_handler.rb +115 -0
- data/lib/core/yml/yml_common.rb +487 -0
- data/lib/core/yml/yml_meta_writer_base.rb +300 -0
- data/lib/core/yml/yml_outputter.rb +307 -0
- data/lib/core/yml/yml_validator_base.rb +630 -0
- data/lib/core/yml_writers/yml_configuration_writer.rb +40 -0
- data/lib/core/yml_writers/yml_java_api_resource_writer.rb +348 -0
- data/lib/core/yml_writers/yml_java_cron_type_writer.rb +113 -0
- data/lib/core/yml_writers/yml_java_css_dependency_writer.rb +59 -0
- data/lib/core/yml_writers/yml_java_dao_writer.rb +364 -0
- data/lib/core/yml_writers/yml_java_dto_writer.rb +251 -0
- data/lib/core/yml_writers/yml_java_embedded_object_writer.rb +968 -0
- data/lib/core/yml_writers/yml_java_enum_writer.rb +161 -0
- data/lib/core/yml_writers/yml_java_js_dependency_writer.rb +59 -0
- data/lib/core/yml_writers/yml_java_message_type_writer.rb +106 -0
- data/lib/core/yml_writers/yml_java_meta_writer.rb +173 -0
- data/lib/core/yml_writers/yml_java_model_writer.rb +510 -0
- data/lib/core/yml_writers/yml_java_pom_writer.rb +1050 -0
- data/lib/core/yml_writers/yml_java_resource_data_writer.rb +251 -0
- data/lib/core/yml_writers/yml_java_sdk_writer.rb +732 -0
- data/lib/core/yml_writers/yml_java_validator_writer.rb +280 -0
- data/lib/core/yml_writers/yml_java_worker_writer.rb +81 -0
- data/lib/core/yml_writers/yml_sql_structure_writer.rb +307 -0
- data/lib/core/yml_writers/yml_sql_template_writer.rb +243 -0
- data/lib/core/yml_writers/yml_vue_service_writer.rb +170 -0
- data/lib/core/yml_writers/yml_writer_base.rb +114 -0
- data/lib/routes/api_list.rb +35 -0
- data/lib/routes/api_meta.rb +59 -0
- data/lib/routes/build.rb +46 -0
- data/lib/routes/create/create_api.rb +35 -0
- data/lib/routes/create/create_ui.rb +84 -0
- data/lib/routes/export.rb +56 -0
- data/lib/routes/generate/generate_api.rb +225 -0
- data/lib/routes/generate/generate_img_favicon.rb +56 -0
- data/lib/routes/generate/generate_img_landing.rb +94 -0
- data/lib/routes/generate/generate_lambda.rb +43 -0
- data/lib/routes/lint.rb +35 -0
- data/lib/routes/mysql_reset.rb +43 -0
- data/lib/routes/release_blufin.rb +351 -0
- data/lib/routes/run.rb +35 -0
- data/lib/version.rb +1 -0
- data/opt/README.MD +2 -0
- data/opt/config/schema.yml +73 -0
- data/opt/config/template.yml +25 -0
- data/opt/sql/data/config/data-client.sql +7 -0
- data/opt/sql/data/config/data-db-configuration-property.sql +47 -0
- data/opt/sql/data/config/data-db-configuration.sql +9 -0
- data/opt/sql/data/config/data-db.sql +175 -0
- data/opt/sql/data/config/data-profile-api.sql +47 -0
- data/opt/sql/data/config/data-profile-cron.sql +0 -0
- data/opt/sql/data/config/data-profile-worker.sql +0 -0
- data/opt/sql/data/config/data-profile.sql +87 -0
- data/opt/sql/data/config/data-project.sql +95 -0
- data/opt/sql/structure/blufin-master-structure-fks.sql +65 -0
- data/opt/sql/structure/blufin-master-structure.sql +97 -0
- data/opt/sql/structure/blufin-mock-structure-fks.sql +38 -0
- data/opt/sql/structure/blufin-mock-structure.sql +98 -0
- data/opt/sql/templates/config/template-client.sql +7 -0
- data/opt/sql/templates/config/template-db-configuration-property.sql +11 -0
- data/opt/sql/templates/config/template-db-configuration.sql +9 -0
- data/opt/sql/templates/config/template-db.sql +21 -0
- data/opt/sql/templates/config/template-profile-api.sql +11 -0
- data/opt/sql/templates/config/template-profile-cron.sql +7 -0
- data/opt/sql/templates/config/template-profile-worker.sql +7 -0
- data/opt/sql/templates/config/template-profile.sql +21 -0
- data/opt/sql/templates/config/template-project.sql +23 -0
- data/opt/yml/api/schema/config/client.yml +14 -0
- data/opt/yml/api/schema/config/db.yml +45 -0
- data/opt/yml/api/schema/config/db_configuration.yml +22 -0
- data/opt/yml/api/schema/config/db_configuration_property.yml +22 -0
- data/opt/yml/api/schema/config/profile.yml +53 -0
- data/opt/yml/api/schema/config/profile_api.yml +22 -0
- data/opt/yml/api/schema/config/profile_cron.yml +14 -0
- data/opt/yml/api/schema/config/profile_worker.yml +14 -0
- data/opt/yml/api/schema/config/project.yml +48 -0
- data/opt/yml/api/schema/mock/mock.yml +99 -0
- data/opt/yml/api/schema/mock/mock_nested_if_enum.yml +16 -0
- data/opt/yml/api/schema/mock/mock_nested_if_enum_system.yml +16 -0
- data/opt/yml/api/schema/mock/mock_nested_linked.yml +43 -0
- data/opt/yml/api/schema/mock/mock_nested_multiple.yml +61 -0
- data/opt/yml/api/schema/mock/mock_nested_single.yml +67 -0
- data/opt/yml/api/schema/mock/mock_nested_single_super_deep.yml +32 -0
- data/opt/yml/api/schema/mock/mock_nested_single_super_super_deep.yml +17 -0
- 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
|