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.
- 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,968 @@
|
|
|
1
|
+
module Blufin
|
|
2
|
+
|
|
3
|
+
class YmlJavaEmbeddedObjectWriter < Blufin::YmlMetaWriterBase
|
|
4
|
+
|
|
5
|
+
EMBEDDED_SDK = 'EmbeddedSDK'
|
|
6
|
+
EMBEDDED_RESOURCE_DATA = 'EmbeddedResourceData'
|
|
7
|
+
|
|
8
|
+
PLACEHOLDER_SITE_NAME = '{{--SITE-NAME--}}'
|
|
9
|
+
PLACEHOLDER_SITE_DOMAIN = '{{--SITE-DOMAIN--}}'
|
|
10
|
+
PLACEHOLDER_CONTENT = '{{--CONTENT--}}'
|
|
11
|
+
PLACEHOLDER_OBJECT = '{{--OBJECT--}}'
|
|
12
|
+
PLACEHOLDER_OBJECT_LOWER = '{{--OBJECT-LOWER--}}'
|
|
13
|
+
PLACEHOLDER_FIELD_NAME = '{{--FIELD-NAME--}}'
|
|
14
|
+
PLACEHOLDER_FIELD_TYPE = '{{--FIELD-TYPE--}}'
|
|
15
|
+
PLACEHOLDER_SERVICE = '{{--SERVICE--}}'
|
|
16
|
+
PLACEHOLDER_BASE_IMPORT = '{{--BASE-IMPORT--}}'
|
|
17
|
+
PLACEHOLDER_ENUM = '{{--ENUM--}}'
|
|
18
|
+
|
|
19
|
+
# Initialize the class.
|
|
20
|
+
# @return void
|
|
21
|
+
def initialize(site, schema_resources)
|
|
22
|
+
|
|
23
|
+
@site = Blufin::SiteResolver::validate_site(site)
|
|
24
|
+
@site_name = Blufin::SiteResolver::get_site_name(@site)
|
|
25
|
+
@site_domain = Blufin::SiteResolver::get_site_domain(@site)
|
|
26
|
+
@site_domain_gsub = @site_domain.strip == '' ? '' : "#{@site_domain}."
|
|
27
|
+
@site_location = "#{Blufin::SiteResolver::get_site_location(@site)}/"
|
|
28
|
+
@schema_resources = schema_resources
|
|
29
|
+
@embedded = Blufin::ScannerJavaEmbeddedObjects::EMBEDDED
|
|
30
|
+
@embedded_data = Blufin::SiteEmbedded::get_data
|
|
31
|
+
@embedded_path = "#{Blufin::Config::get_path('Paths', 'BlufinJava')}/#{Blufin::ScannerJavaEmbeddedObjects::PATH_TO_EMBEDDED}"
|
|
32
|
+
@embedded_tables = generate_embedded_tables_array
|
|
33
|
+
@yml_enum_scanner = Blufin::ScannerJavaEnums.new(@site)
|
|
34
|
+
|
|
35
|
+
# Wipe out all previous files.
|
|
36
|
+
Blufin::YmlSchemaValidator::VALID_SCHEMAS_GENERATE.each do |schema|
|
|
37
|
+
%W(
|
|
38
|
+
#{@embedded_path}/base
|
|
39
|
+
#{@embedded_path}/client
|
|
40
|
+
#{@embedded_path}/field
|
|
41
|
+
#{@embedded_path}/filter
|
|
42
|
+
#{@embedded_path}/mapper
|
|
43
|
+
#{@embedded_path}/metadata
|
|
44
|
+
#{@embedded_path}/refiner
|
|
45
|
+
#{@embedded_path}/service
|
|
46
|
+
#{@embedded_path}/sort
|
|
47
|
+
).each do |path_to_wipe_out|
|
|
48
|
+
if Blufin::Files::path_exists(path_to_wipe_out)
|
|
49
|
+
if Blufin::Files::get_files_in_dir(path_to_wipe_out).any?
|
|
50
|
+
Blufin::Terminal::command('rm *', path_to_wipe_out, false, false) unless path_to_wipe_out == "#{@embedded_path}/dto" # Safe-guard to prevent accidental deletion of /dto folder.
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
@template_embedded_sdk = <<TEMPLATE
|
|
57
|
+
package #{PLACEHOLDER_PACKAGE};
|
|
58
|
+
|
|
59
|
+
import org.blufin.sdk.base.ResourceData;
|
|
60
|
+
import org.blufin.sdk.service.BlufinApiService;
|
|
61
|
+
import org.blufin.sdk.service.credentials.ApiCredentialsHttp;
|
|
62
|
+
import org.blufin.sdk.service.credentials.ApiCredentialsInternal;
|
|
63
|
+
import org.springframework.stereotype.Service;
|
|
64
|
+
#{PLACEHOLDER_IMPORT}
|
|
65
|
+
|
|
66
|
+
@Service
|
|
67
|
+
public class #{PLACEHOLDER_CLASS} extends BlufinApiService {
|
|
68
|
+
|
|
69
|
+
public void initialize(ResourceData resourceLocator) {
|
|
70
|
+
|
|
71
|
+
initializeParent(new ApiCredentialsInternal(resourceLocator));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
public void initialize(String authorizationHeader, String apiUri) {
|
|
75
|
+
|
|
76
|
+
initializeParent(new ApiCredentialsHttp(authorizationHeader, apiUri));
|
|
77
|
+
}
|
|
78
|
+
#{PLACEHOLDER_CONTENT}}
|
|
79
|
+
TEMPLATE
|
|
80
|
+
|
|
81
|
+
@template_embedded_resource_data = <<TEMPLATE
|
|
82
|
+
package #{PLACEHOLDER_PACKAGE};
|
|
83
|
+
|
|
84
|
+
import org.blufin.base.annotations.Singleton;
|
|
85
|
+
import org.blufin.base.annotations.TestNotRequired;
|
|
86
|
+
import org.blufin.base.annotations.helper.ON;
|
|
87
|
+
import org.blufin.base.exceptions.BlufinClientException;
|
|
88
|
+
import org.blufin.base.exceptions.BlufinNotImplementedException;
|
|
89
|
+
import org.blufin.sdk.exceptions.ResourceNotFoundException;
|
|
90
|
+
import org.blufin.base.exceptions.BlufinServerException;
|
|
91
|
+
import org.blufin.sdk.base.AbstractMapperEmbedded;
|
|
92
|
+
import org.blufin.sdk.base.AbstractMetaData;
|
|
93
|
+
import org.blufin.sdk.base.PersistentDto;
|
|
94
|
+
import org.blufin.sdk.base.ResourceData;
|
|
95
|
+
import org.blufin.sdk.response.ApiResponse;
|
|
96
|
+
import org.blufin.sdk.rest.GetRequest;
|
|
97
|
+
import org.springframework.stereotype.Service;
|
|
98
|
+
import java.text.MessageFormat;
|
|
99
|
+
import lombok.Getter;
|
|
100
|
+
#{PLACEHOLDER_IMPORT}
|
|
101
|
+
|
|
102
|
+
@Service
|
|
103
|
+
public class #{PLACEHOLDER_CLASS} implements ResourceData {
|
|
104
|
+
|
|
105
|
+
@Getter
|
|
106
|
+
private static final #{PLACEHOLDER_CLASS} instance = new #{PLACEHOLDER_CLASS}();
|
|
107
|
+
|
|
108
|
+
@Singleton
|
|
109
|
+
private #{PLACEHOLDER_CLASS}() {}
|
|
110
|
+
|
|
111
|
+
@Override
|
|
112
|
+
public ApiResponse<? extends PersistentDto> executeGet(String endPoint, GetRequest getRequest) throws BlufinClientException, BlufinServerException {
|
|
113
|
+
|
|
114
|
+
throw new BlufinNotImplementedException();
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
@Override
|
|
118
|
+
public AbstractMetaData getMetaData(String endPoint) throws ResourceNotFoundException {
|
|
119
|
+
|
|
120
|
+
throw new BlufinNotImplementedException();
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@Override
|
|
124
|
+
public int getDepth(String table) {
|
|
125
|
+
|
|
126
|
+
throw new BlufinNotImplementedException();
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
public AbstractMapperEmbedded mapper(String responseDto) {
|
|
130
|
+
|
|
131
|
+
switch (responseDto) {
|
|
132
|
+
|
|
133
|
+
#{PLACEHOLDER_CONTENT}
|
|
134
|
+
default:
|
|
135
|
+
throw new RuntimeException(MessageFormat.format("Unrecognized response DTO: {0}", responseDto));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
TEMPLATE
|
|
140
|
+
|
|
141
|
+
@template_service = <<TEMPLATE
|
|
142
|
+
package #{PLACEHOLDER_PACKAGE};
|
|
143
|
+
|
|
144
|
+
import org.blufin.base.helper.IdSet;
|
|
145
|
+
import org.blufin.sdk.base.AbstractService;
|
|
146
|
+
import org.blufin.sdk.service.credentials.ApiCredentials;
|
|
147
|
+
import org.blufin.sdk.embedded.dto.#{PLACEHOLDER_SCHEMA}.#{@embedded}#{PLACEHOLDER_OBJECT};
|
|
148
|
+
import org.blufin.sdk.embedded.field.#{@embedded}#{PLACEHOLDER_OBJECT}Field;
|
|
149
|
+
import org.blufin.sdk.embedded.metadata.#{@embedded}#{PLACEHOLDER_OBJECT}MetaData;
|
|
150
|
+
import org.blufin.sdk.embedded.sort.#{@embedded}#{PLACEHOLDER_OBJECT}Sort;
|
|
151
|
+
import org.blufin.sdk.embedded.refiner.#{@embedded}#{PLACEHOLDER_OBJECT}Refiner;
|
|
152
|
+
import org.blufin.sdk.request.IdSetGetRequest;
|
|
153
|
+
import org.blufin.sdk.request.PaginatedGetRequest;#{PLACEHOLDER_IMPORT}
|
|
154
|
+
|
|
155
|
+
public class #{PLACEHOLDER_CLASS} implements AbstractService {
|
|
156
|
+
|
|
157
|
+
private final ApiCredentials apiCredentials;
|
|
158
|
+
|
|
159
|
+
public #{PLACEHOLDER_CLASS}(ApiCredentials apiCredentials) {
|
|
160
|
+
|
|
161
|
+
this.apiCredentials = apiCredentials;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
#{PLACEHOLDER_CONTENT}}
|
|
165
|
+
TEMPLATE
|
|
166
|
+
|
|
167
|
+
@template_field = <<TEMPLATE
|
|
168
|
+
package #{PLACEHOLDER_PACKAGE};
|
|
169
|
+
|
|
170
|
+
import org.blufin.sdk.base.AbstractField;
|
|
171
|
+
|
|
172
|
+
public enum #{PLACEHOLDER_CLASS} implements AbstractField {
|
|
173
|
+
#{PLACEHOLDER_CONTENT}
|
|
174
|
+
|
|
175
|
+
private final String fieldName;
|
|
176
|
+
|
|
177
|
+
#{PLACEHOLDER_CLASS}(String fieldName) {
|
|
178
|
+
|
|
179
|
+
this.fieldName = fieldName;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
@Override
|
|
183
|
+
public String getFieldName() {
|
|
184
|
+
|
|
185
|
+
return fieldName;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
TEMPLATE
|
|
189
|
+
|
|
190
|
+
@template_filter = <<TEMPLATE
|
|
191
|
+
package #{PLACEHOLDER_PACKAGE};
|
|
192
|
+
|
|
193
|
+
import org.blufin.sdk.base.AbstractFilter;
|
|
194
|
+
|
|
195
|
+
public enum #{PLACEHOLDER_CLASS} implements AbstractFilter {
|
|
196
|
+
#{PLACEHOLDER_CONTENT}
|
|
197
|
+
|
|
198
|
+
private final String fieldName;
|
|
199
|
+
|
|
200
|
+
#{PLACEHOLDER_CLASS}(String fieldName) {
|
|
201
|
+
|
|
202
|
+
this.fieldName = fieldName;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
@Override
|
|
206
|
+
public String getFieldName() {
|
|
207
|
+
|
|
208
|
+
return fieldName;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
TEMPLATE
|
|
212
|
+
|
|
213
|
+
@template_mapper = <<TEMPLATE
|
|
214
|
+
package #{PLACEHOLDER_PACKAGE};
|
|
215
|
+
|
|
216
|
+
import lombok.Getter;
|
|
217
|
+
import org.blufin.sdk.base.AbstractMapperEmbedded;
|
|
218
|
+
import org.blufin.sdk.embedded.dto.#{PLACEHOLDER_SCHEMA}.#{@embedded}#{PLACEHOLDER_OBJECT};
|
|
219
|
+
#{PLACEHOLDER_IMPORT}
|
|
220
|
+
|
|
221
|
+
import java.lang.reflect.InvocationTargetException;
|
|
222
|
+
|
|
223
|
+
public final class #{PLACEHOLDER_CLASS} extends AbstractMapperEmbedded<#{@embedded}#{PLACEHOLDER_OBJECT}> {
|
|
224
|
+
|
|
225
|
+
@Getter
|
|
226
|
+
private static final #{PLACEHOLDER_CLASS} instance = new #{PLACEHOLDER_CLASS}();
|
|
227
|
+
|
|
228
|
+
private #{PLACEHOLDER_CLASS}() {}
|
|
229
|
+
|
|
230
|
+
@Override
|
|
231
|
+
public #{@embedded}#{PLACEHOLDER_OBJECT} map(Object #{PLACEHOLDER_OBJECT_LOWER}) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
|
|
232
|
+
|
|
233
|
+
#{@embedded}#{PLACEHOLDER_OBJECT} #{@embedded.downcase}#{PLACEHOLDER_OBJECT} = new #{@embedded}#{PLACEHOLDER_OBJECT}();
|
|
234
|
+
|
|
235
|
+
#{PLACEHOLDER_CONTENT}
|
|
236
|
+
|
|
237
|
+
return #{@embedded.downcase}#{PLACEHOLDER_OBJECT};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
TEMPLATE
|
|
241
|
+
|
|
242
|
+
@template_refiner = <<TEMPLATE
|
|
243
|
+
package #{PLACEHOLDER_PACKAGE};
|
|
244
|
+
|
|
245
|
+
import org.blufin.base.annotations.TestNotRequired;
|
|
246
|
+
import org.blufin.base.annotations.NestedRefiner;
|
|
247
|
+
import org.blufin.sdk.base.AbstractRefiner;
|
|
248
|
+
import org.blufin.sdk.base.Refiner;
|
|
249
|
+
import org.blufin.sdk.filters.dynamic.*;
|
|
250
|
+
import org.blufin.sdk.request.PaginatedGetRequest;
|
|
251
|
+
import org.blufin.sdk.filters.Filter;
|
|
252
|
+
import org.blufin.sdk.embedded.dto.#{PLACEHOLDER_SCHEMA}.#{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE};
|
|
253
|
+
import org.blufin.sdk.embedded.field.#{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Field;
|
|
254
|
+
import org.blufin.sdk.embedded.filter.#{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Filter;
|
|
255
|
+
import org.blufin.sdk.embedded.sort.#{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Sort;#{PLACEHOLDER_BASE_IMPORT}
|
|
256
|
+
import java.util.List;
|
|
257
|
+
|
|
258
|
+
@TestNotRequired
|
|
259
|
+
public class #{PLACEHOLDER_CLASS} extends Refiner<PaginatedGetRequest<#{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}, #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Field, #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Sort, #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Refiner>> implements AbstractRefiner {
|
|
260
|
+
|
|
261
|
+
public #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Refiner(List<Filter> filters, PaginatedGetRequest<#{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}, #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Field, #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Sort, #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Refiner> originalRequest) {
|
|
262
|
+
|
|
263
|
+
super(filters, originalRequest);
|
|
264
|
+
}
|
|
265
|
+
#{PLACEHOLDER_CONTENT}}
|
|
266
|
+
TEMPLATE
|
|
267
|
+
|
|
268
|
+
@template_sort = <<TEMPLATE
|
|
269
|
+
package #{PLACEHOLDER_PACKAGE};
|
|
270
|
+
|
|
271
|
+
import org.blufin.sdk.base.AbstractSort;
|
|
272
|
+
|
|
273
|
+
public enum #{PLACEHOLDER_CLASS} implements AbstractSort {
|
|
274
|
+
#{PLACEHOLDER_CONTENT}
|
|
275
|
+
|
|
276
|
+
private final String fieldName;
|
|
277
|
+
|
|
278
|
+
#{PLACEHOLDER_CLASS}(String fieldName) {
|
|
279
|
+
|
|
280
|
+
this.fieldName = fieldName;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
@Override
|
|
284
|
+
public String getFieldName() {
|
|
285
|
+
|
|
286
|
+
return fieldName;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
@Override
|
|
290
|
+
public String toString() {
|
|
291
|
+
|
|
292
|
+
return this.name();
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
TEMPLATE
|
|
296
|
+
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
# Write the file(s).
|
|
300
|
+
# @return void
|
|
301
|
+
def write
|
|
302
|
+
|
|
303
|
+
write_embedded_base
|
|
304
|
+
|
|
305
|
+
@embedded_data.each do |table, data|
|
|
306
|
+
|
|
307
|
+
write_embedded_service(table, data)
|
|
308
|
+
write_embedded_field(table, data)
|
|
309
|
+
write_embedded_filter(table, data)
|
|
310
|
+
write_embedded_mapper(table, data)
|
|
311
|
+
write_embedded_metadata(table, data)
|
|
312
|
+
write_embedded_refiner(table, data)
|
|
313
|
+
write_embedded_sort(table, data)
|
|
314
|
+
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
# Writes the Base Services -> EmbeddedSDK and EmbeddedResourceData
|
|
320
|
+
# @return void
|
|
321
|
+
def write_embedded_base
|
|
322
|
+
|
|
323
|
+
write_embedded_sdk
|
|
324
|
+
write_embedded_locator
|
|
325
|
+
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
# @return void
|
|
329
|
+
def write_embedded_sdk
|
|
330
|
+
|
|
331
|
+
contents = @template_embedded_sdk
|
|
332
|
+
import_statements = []
|
|
333
|
+
service_getters = ''
|
|
334
|
+
|
|
335
|
+
@embedded_data.each do |key, data|
|
|
336
|
+
service = Blufin::Strings::snake_case_to_camel_case(key)
|
|
337
|
+
service_getters += <<TEMPLATE
|
|
338
|
+
|
|
339
|
+
public #{@embedded}#{service}Service get#{@embedded}#{service}Service() {
|
|
340
|
+
|
|
341
|
+
return new #{@embedded}#{service}Service(getApiCredentials());
|
|
342
|
+
}
|
|
343
|
+
TEMPLATE
|
|
344
|
+
import_statements << "import org.blufin.sdk.embedded.service.#{@embedded}#{service}Service;"
|
|
345
|
+
end
|
|
346
|
+
|
|
347
|
+
contents = contents.gsub(PLACEHOLDER_PACKAGE, 'org.blufin.sdk.embedded.base')
|
|
348
|
+
contents = contents.gsub(PLACEHOLDER_CLASS, EMBEDDED_SDK)
|
|
349
|
+
contents = contents.gsub(PLACEHOLDER_CONTENT, service_getters)
|
|
350
|
+
contents = contents.gsub(PLACEHOLDER_IMPORT, import_statements.join("\n"))
|
|
351
|
+
|
|
352
|
+
write_file("base/#{EMBEDDED_SDK}.java", contents, false)
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
def write_embedded_locator
|
|
356
|
+
|
|
357
|
+
contents = @template_embedded_resource_data
|
|
358
|
+
contents_inner = []
|
|
359
|
+
import_statements = []
|
|
360
|
+
|
|
361
|
+
@embedded_data.each do |key, data|
|
|
362
|
+
embedded_object = Blufin::Strings::snake_case_to_camel_case(key)
|
|
363
|
+
import_statements << "import org.blufin.sdk.embedded.mapper.#{@embedded}#{embedded_object}Mapper;"
|
|
364
|
+
contents_inner << "case \"#{@embedded}#{embedded_object}\":"
|
|
365
|
+
contents_inner << " return #{@embedded}#{embedded_object}Mapper.getInstance();"
|
|
366
|
+
end
|
|
367
|
+
|
|
368
|
+
contents_inner.map! { |n| " #{n}" }
|
|
369
|
+
contents = contents.gsub(PLACEHOLDER_PACKAGE, 'org.blufin.sdk.embedded.base')
|
|
370
|
+
contents = contents.gsub(PLACEHOLDER_CLASS, EMBEDDED_RESOURCE_DATA)
|
|
371
|
+
contents = contents.gsub(PLACEHOLDER_CONTENT, contents_inner.join("\n"))
|
|
372
|
+
contents = contents.gsub(PLACEHOLDER_IMPORT, import_statements.join("\n"))
|
|
373
|
+
|
|
374
|
+
write_file("base/#{EMBEDDED_RESOURCE_DATA}.java", contents, false)
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
# Write embedded Service classes.
|
|
378
|
+
# @return void
|
|
379
|
+
def write_embedded_service(table, data)
|
|
380
|
+
|
|
381
|
+
schema = data[:schema]
|
|
382
|
+
service = data[:class]
|
|
383
|
+
|
|
384
|
+
class_name = "#{@embedded}#{service}Service"
|
|
385
|
+
class_auth = Blufin::SiteAuth::get_auth_level_for_table(schema, table)
|
|
386
|
+
|
|
387
|
+
import_statements = []
|
|
388
|
+
|
|
389
|
+
end_point = data[:table].gsub('_', '-')
|
|
390
|
+
|
|
391
|
+
contents = @template_service
|
|
392
|
+
contents = contents.gsub(PLACEHOLDER_PACKAGE, 'org.blufin.sdk.embedded.service')
|
|
393
|
+
contents = contents.gsub(PLACEHOLDER_CLASS, class_name)
|
|
394
|
+
contents = contents.gsub(PLACEHOLDER_SCHEMA, schema)
|
|
395
|
+
|
|
396
|
+
case class_auth
|
|
397
|
+
when Blufin::SiteAuth::LEVEL_NONE
|
|
398
|
+
content_inner = <<TEMPLATE
|
|
399
|
+
public PaginatedGetRequest<#{@embedded}#{service}, #{@embedded}#{service}Field, #{@embedded}#{service}Sort, #{@embedded}#{service}Refiner> get() {
|
|
400
|
+
|
|
401
|
+
return new PaginatedGetRequest<>(apiCredentials, "#{end_point}", #{@embedded}#{service}.class, #{@embedded}#{service}MetaData.getInstance(), #{@embedded}#{service}Refiner.class);
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
public IdSetGetRequest<#{@embedded}#{service}, #{@embedded}#{service}Field, #{@embedded}#{service}Sort> get(IdSet idSet) {
|
|
405
|
+
|
|
406
|
+
return new IdSetGetRequest<>(apiCredentials, "#{end_point}", #{@embedded}#{service}.class, #{@embedded}#{service}MetaData.getInstance(), idSet);
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
public IdSetGetRequest<#{@embedded}#{service}, #{@embedded}#{service}Field, #{@embedded}#{service}Sort> get(int id) {
|
|
410
|
+
|
|
411
|
+
return new IdSetGetRequest<>(apiCredentials, "#{end_point}", #{@embedded}#{service}.class, #{@embedded}#{service}MetaData.getInstance(), new IdSet(id));
|
|
412
|
+
}
|
|
413
|
+
TEMPLATE
|
|
414
|
+
when Blufin::SiteAuth::LEVEL_ACCOUNT
|
|
415
|
+
import_statements << 'import org.blufin.sdk.request.type.AccountRequest;'
|
|
416
|
+
content_inner = <<TEMPLATE
|
|
417
|
+
public AccountRequest<PaginatedGetRequest<#{@embedded}#{service}, #{@embedded}#{service}Field, #{@embedded}#{service}Sort, #{@embedded}#{service}Refiner>> get() {
|
|
418
|
+
|
|
419
|
+
return new AccountRequest(apiCredentials, "#{end_point}", #{@embedded}#{service}.class, #{@embedded}#{service}MetaData.getInstance(), #{@embedded}#{service}Refiner.class);
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
public AccountRequest<IdSetGetRequest<#{@embedded}#{service}, #{@embedded}#{service}Field, #{@embedded}#{service}Sort>> get(IdSet idSet) {
|
|
423
|
+
|
|
424
|
+
return new AccountRequest(apiCredentials, "#{end_point}", #{@embedded}#{service}.class, #{@embedded}#{service}MetaData.getInstance(), idSet);
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
public AccountRequest<IdSetGetRequest<#{@embedded}#{service}, #{@embedded}#{service}Field, #{@embedded}#{service}Sort>> get(int id) {
|
|
428
|
+
|
|
429
|
+
return new AccountRequest(apiCredentials, "#{end_point}", #{@embedded}#{service}.class, #{@embedded}#{service}MetaData.getInstance(), new IdSet(id));
|
|
430
|
+
}
|
|
431
|
+
TEMPLATE
|
|
432
|
+
when Blufin::SiteAuth::LEVEL_ACCOUNT_USER
|
|
433
|
+
import_statements << 'import org.blufin.sdk.request.type.AccountUserRequest;'
|
|
434
|
+
content_inner = <<TEMPLATE
|
|
435
|
+
public AccountUserRequest<PaginatedGetRequest<#{@embedded}#{service}, #{@embedded}#{service}Field, #{@embedded}#{service}Sort, #{@embedded}#{service}Refiner>> get() {
|
|
436
|
+
|
|
437
|
+
return new AccountUserRequest(apiCredentials, "#{end_point}", #{@embedded}#{service}.class, #{@embedded}#{service}MetaData.getInstance(), #{@embedded}#{service}Refiner.class);
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
public AccountUserRequest<IdSetGetRequest<#{@embedded}#{service}, #{@embedded}#{service}Field, #{@embedded}#{service}Sort>> get(IdSet idSet) {
|
|
441
|
+
|
|
442
|
+
return new AccountUserRequest(apiCredentials, "#{end_point}", #{@embedded}#{service}.class, #{@embedded}#{service}MetaData.getInstance(), idSet);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
public AccountUserRequest<IdSetGetRequest<#{@embedded}#{service}, #{@embedded}#{service}Field, #{@embedded}#{service}Sort>> get(int id) {
|
|
446
|
+
|
|
447
|
+
return new AccountUserRequest(apiCredentials, "#{end_point}", #{@embedded}#{service}.class, #{@embedded}#{service}MetaData.getInstance(), new IdSet(id));
|
|
448
|
+
}
|
|
449
|
+
TEMPLATE
|
|
450
|
+
else
|
|
451
|
+
raise RuntimeError, "Unrecognized AuthLevel for table: #{class_auth}"
|
|
452
|
+
end
|
|
453
|
+
|
|
454
|
+
contents = contents.gsub(PLACEHOLDER_CONTENT, content_inner)
|
|
455
|
+
contents = contents.gsub(PLACEHOLDER_IMPORT, import_statements.any? ? "\n#{import_statements.join("\n")}" : '')
|
|
456
|
+
contents = contents.gsub(PLACEHOLDER_OBJECT, data[:class])
|
|
457
|
+
|
|
458
|
+
write_file("service/#{class_name}.java", contents, schema == Blufin::YmlSchemaValidator::MOCK)
|
|
459
|
+
|
|
460
|
+
end
|
|
461
|
+
|
|
462
|
+
# Write embedded Field classes.
|
|
463
|
+
# @return void
|
|
464
|
+
def write_embedded_field(table, data)
|
|
465
|
+
|
|
466
|
+
schema = data[:schema]
|
|
467
|
+
class_name = "#{@embedded}#{data[:class]}Field"
|
|
468
|
+
|
|
469
|
+
contents = @template_field
|
|
470
|
+
contents = contents.gsub(PLACEHOLDER_PACKAGE, "org.blufin.sdk.embedded.field")
|
|
471
|
+
contents = contents.gsub(PLACEHOLDER_CLASS, class_name)
|
|
472
|
+
|
|
473
|
+
content = "\n"
|
|
474
|
+
content_data = []
|
|
475
|
+
|
|
476
|
+
data[:data].keys.each do |key|
|
|
477
|
+
next if key =~ /\A(#{Blufin::YmlSchemaValidator::VALID_SCHEMAS_REGEX})\.[a-z_]+\z/ || key =~ /\A(#{Blufin::YmlSchemaValidator::VALID_SCHEMAS_REGEX})\.[a-z_]+\[(link)?\]\z/
|
|
478
|
+
content_data << [Blufin::YmlCommon::extract_field_name(key)]
|
|
479
|
+
end
|
|
480
|
+
|
|
481
|
+
content_data.each_with_index do |cd, idx|
|
|
482
|
+
comma_or_not = (idx == (content_data.length - 1)) ? ';' : ",\n"
|
|
483
|
+
content += " #{cd[0].upcase}(\"#{table}.#{cd[0]}\")#{comma_or_not}"
|
|
484
|
+
end
|
|
485
|
+
|
|
486
|
+
contents = contents.gsub(PLACEHOLDER_CONTENT, content)
|
|
487
|
+
|
|
488
|
+
write_file("field/#{class_name}.java", contents, schema == Blufin::YmlSchemaValidator::MOCK)
|
|
489
|
+
|
|
490
|
+
end
|
|
491
|
+
|
|
492
|
+
# Write embedded Filter classes.
|
|
493
|
+
# @return void
|
|
494
|
+
def write_embedded_filter(table, data)
|
|
495
|
+
|
|
496
|
+
schema = data[:schema]
|
|
497
|
+
class_name = "#{@embedded}#{data[:class]}Filter"
|
|
498
|
+
|
|
499
|
+
contents = @template_filter
|
|
500
|
+
contents = contents.gsub(PLACEHOLDER_PACKAGE, 'org.blufin.sdk.embedded.filter')
|
|
501
|
+
contents = contents.gsub(PLACEHOLDER_CLASS, class_name)
|
|
502
|
+
|
|
503
|
+
content = "\n"
|
|
504
|
+
content_data = []
|
|
505
|
+
|
|
506
|
+
data[:data].each do |key, data_inner|
|
|
507
|
+
next if key =~ /\A(#{Blufin::YmlSchemaValidator::VALID_SCHEMAS_REGEX})\.[a-z_]+\z/ || key =~ /\A(#{Blufin::YmlSchemaValidator::VALID_SCHEMAS_REGEX})\.[a-z_]+\[(link)?\]\z/
|
|
508
|
+
next if data_inner.has_key?(:encrypted)
|
|
509
|
+
content_data << [Blufin::YmlCommon::extract_field_name(key)]
|
|
510
|
+
end
|
|
511
|
+
|
|
512
|
+
content_data.each_with_index do |cd, idx|
|
|
513
|
+
comma_or_not = (idx == (content_data.length - 1)) ? ';' : ",\n"
|
|
514
|
+
content += " #{cd[0].upcase}(\"#{table}.#{cd[0]}\")#{comma_or_not}"
|
|
515
|
+
end
|
|
516
|
+
|
|
517
|
+
contents = contents.gsub(PLACEHOLDER_CONTENT, content)
|
|
518
|
+
|
|
519
|
+
write_file("filter/#{class_name}.java", contents, schema == Blufin::YmlSchemaValidator::MOCK)
|
|
520
|
+
|
|
521
|
+
end
|
|
522
|
+
|
|
523
|
+
# Write embedded Mapper classes.
|
|
524
|
+
# @return void
|
|
525
|
+
def write_embedded_mapper(table, data)
|
|
526
|
+
|
|
527
|
+
method_body = []
|
|
528
|
+
import_statements = []
|
|
529
|
+
|
|
530
|
+
data[:data].each do |key, data_inner|
|
|
531
|
+
|
|
532
|
+
field_camel_case = Blufin::Strings.snake_case_to_camel_case(key)
|
|
533
|
+
|
|
534
|
+
@type = data_inner[:type]
|
|
535
|
+
|
|
536
|
+
# If this is a LINK field, skip.
|
|
537
|
+
# TODO - 12/15/18 - Probably need to make changes here when we need to support Linked objects.
|
|
538
|
+
next if @type == Blufin::ScannerJavaEmbeddedObjects::OBJECT_LINK
|
|
539
|
+
|
|
540
|
+
# TODO - If this field is ENCRYPTED, skip (for now).
|
|
541
|
+
raise RuntimeError, 'Encrypted fields not currently supported by @Embedded objects.' if data_inner.has_key?(Blufin::YmlSchemaValidator::ENCRYPTED)
|
|
542
|
+
|
|
543
|
+
if @type == Blufin::YmlSchemaValidator::TYPE_BOOLEAN
|
|
544
|
+
method_body << "#{@embedded.downcase}#{PLACEHOLDER_OBJECT}.set#{field_camel_case}((Boolean) #{PLACEHOLDER_OBJECT_LOWER}.getClass().getMethod(\"is#{field_camel_case}\").invoke(#{PLACEHOLDER_OBJECT_LOWER}));"
|
|
545
|
+
elsif @type == Blufin::YmlSchemaValidator::TYPE_DATE # Must come BEFORE ..DATETIME_TYPES.include?(@type) because the latter included DATE as well.
|
|
546
|
+
import_statements << 'import java.time.LocalDate;'
|
|
547
|
+
method_body << "#{@embedded.downcase}#{PLACEHOLDER_OBJECT}.set#{field_camel_case}((LocalDate) #{PLACEHOLDER_OBJECT_LOWER}.getClass().getMethod(\"get#{field_camel_case}\").invoke(#{PLACEHOLDER_OBJECT_LOWER}));"
|
|
548
|
+
elsif Blufin::YmlSchemaValidator::DATETIME_TYPES.include?(@type)
|
|
549
|
+
import_statements << 'import java.time.ZonedDateTime;'
|
|
550
|
+
method_body << "#{@embedded.downcase}#{PLACEHOLDER_OBJECT}.set#{field_camel_case}((ZonedDateTime) #{PLACEHOLDER_OBJECT_LOWER}.getClass().getMethod(\"get#{field_camel_case}\").invoke(#{PLACEHOLDER_OBJECT_LOWER}));"
|
|
551
|
+
elsif @type =~ Blufin::YmlSchemaValidator::REGEX_DECIMAL
|
|
552
|
+
import_statements << 'import java.math.BigDecimal;'
|
|
553
|
+
method_body << "#{@embedded.downcase}#{PLACEHOLDER_OBJECT}.set#{field_camel_case}((BigDecimal) #{PLACEHOLDER_OBJECT_LOWER}.getClass().getMethod(\"get#{field_camel_case}\").invoke(#{PLACEHOLDER_OBJECT_LOWER}));"
|
|
554
|
+
elsif @type == Blufin::YmlSchemaValidator::TYPE_INT_BIG
|
|
555
|
+
method_body << "#{@embedded.downcase}#{PLACEHOLDER_OBJECT}.set#{field_camel_case}((Long) #{PLACEHOLDER_OBJECT_LOWER}.getClass().getMethod(\"get#{field_camel_case}\").invoke(#{PLACEHOLDER_OBJECT_LOWER}));"
|
|
556
|
+
elsif @type == Blufin::YmlSchemaValidator::TYPE_INT_TINY
|
|
557
|
+
method_body << "#{@embedded.downcase}#{PLACEHOLDER_OBJECT}.set#{field_camel_case}((Byte) #{PLACEHOLDER_OBJECT_LOWER}.getClass().getMethod(\"get#{field_camel_case}\").invoke(#{PLACEHOLDER_OBJECT_LOWER}));"
|
|
558
|
+
elsif @type == Blufin::YmlSchemaValidator::TYPE_INT_SMALL
|
|
559
|
+
method_body << "#{@embedded.downcase}#{PLACEHOLDER_OBJECT}.set#{field_camel_case}((Short) #{PLACEHOLDER_OBJECT_LOWER}.getClass().getMethod(\"get#{field_camel_case}\").invoke(#{PLACEHOLDER_OBJECT_LOWER}));"
|
|
560
|
+
elsif Blufin::YmlSchemaValidator::INT_TYPES.include?(@type)
|
|
561
|
+
method_body << "#{@embedded.downcase}#{PLACEHOLDER_OBJECT}.set#{field_camel_case}((Integer) #{PLACEHOLDER_OBJECT_LOWER}.getClass().getMethod(\"get#{field_camel_case}\").invoke(#{PLACEHOLDER_OBJECT_LOWER}));"
|
|
562
|
+
elsif @type == Blufin::YmlSchemaValidator::TYPE_TEXT
|
|
563
|
+
next if data_inner.has_key?(:encrypted)
|
|
564
|
+
method_body << "#{@embedded.downcase}#{PLACEHOLDER_OBJECT}.set#{field_camel_case}((String) #{PLACEHOLDER_OBJECT_LOWER}.getClass().getMethod(\"get#{field_camel_case}\").invoke(#{PLACEHOLDER_OBJECT_LOWER}));"
|
|
565
|
+
elsif @type == Blufin::YmlSchemaValidator::TYPE_TEXT_LONG
|
|
566
|
+
method_body << "#{@embedded.downcase}#{PLACEHOLDER_OBJECT}.set#{field_camel_case}((String) #{PLACEHOLDER_OBJECT_LOWER}.getClass().getMethod(\"get#{field_camel_case}\").invoke(#{PLACEHOLDER_OBJECT_LOWER}));"
|
|
567
|
+
elsif @type == Blufin::YmlSchemaValidator::TYPE_ENUM_SYSTEM
|
|
568
|
+
enum_class = data_inner[:type_java]
|
|
569
|
+
enum_class = enum_class.slice(0, 1).upcase + enum_class.slice(1..-1)
|
|
570
|
+
import_statements << "import #{Blufin::SiteServices::PACKAGE_SYSTEM_ENUMS}.#{enum_class};"
|
|
571
|
+
method_body << "#{@embedded.downcase}#{PLACEHOLDER_OBJECT}.set#{field_camel_case}((#{enum_class}) #{PLACEHOLDER_OBJECT_LOWER}.getClass().getMethod(\"get#{field_camel_case}\").invoke(#{PLACEHOLDER_OBJECT_LOWER}));"
|
|
572
|
+
elsif @type =~ Blufin::YmlSchemaValidator::REGEX_VARCHAR
|
|
573
|
+
method_body << "#{@embedded.downcase}#{PLACEHOLDER_OBJECT}.set#{field_camel_case}((String) #{PLACEHOLDER_OBJECT_LOWER}.getClass().getMethod(\"get#{field_camel_case}\").invoke(#{PLACEHOLDER_OBJECT_LOWER}));"
|
|
574
|
+
elsif @type == Blufin::ScannerJavaEmbeddedObjects::OBJECT
|
|
575
|
+
type_java_stripped = data_inner[:type_java].strip.gsub(/^List</, '').gsub(/>$/, '')
|
|
576
|
+
method_body << "#{@embedded.downcase}#{PLACEHOLDER_OBJECT}.#{"set#{type_java_stripped}".gsub(/^set#{@embedded}/, 'set')}(mapObject(#{PLACEHOLDER_OBJECT_LOWER}, \"#{"get#{type_java_stripped}".gsub(/^get#{@embedded}/, 'get')}\", #{type_java_stripped}Mapper.getInstance()));"
|
|
577
|
+
elsif @type == Blufin::ScannerJavaEmbeddedObjects::OBJECT_LIST
|
|
578
|
+
type_java_stripped = data_inner[:type_java].strip.gsub(/^List</, '').gsub(/>$/, '')
|
|
579
|
+
method_body << "#{@embedded.downcase}#{PLACEHOLDER_OBJECT}.#{"set#{type_java_stripped}".gsub(/^set#{@embedded}/, 'set')}List(mapList(#{PLACEHOLDER_OBJECT_LOWER}, \"#{"get#{type_java_stripped}List".gsub(/^get#{@embedded}/, 'get')}\", #{type_java_stripped}Mapper.getInstance()));"
|
|
580
|
+
else
|
|
581
|
+
raise RuntimeError, "Unrecognized type in #{__FILE__} or field: #{key} \xe2\x86\x92 #{@type}"
|
|
582
|
+
end
|
|
583
|
+
end
|
|
584
|
+
|
|
585
|
+
import_statements.uniq!
|
|
586
|
+
import_statements.sort!
|
|
587
|
+
|
|
588
|
+
method_body.map! { |n| " #{n}" }
|
|
589
|
+
|
|
590
|
+
schema = data[:schema]
|
|
591
|
+
class_name = "#{@embedded}#{data[:class]}Mapper"
|
|
592
|
+
|
|
593
|
+
contents = @template_mapper
|
|
594
|
+
contents = contents.gsub(PLACEHOLDER_PACKAGE, 'org.blufin.sdk.embedded.mapper')
|
|
595
|
+
contents = contents.gsub(PLACEHOLDER_CLASS, class_name)
|
|
596
|
+
contents = contents.gsub(PLACEHOLDER_SCHEMA, schema)
|
|
597
|
+
contents = contents.gsub(PLACEHOLDER_CONTENT, method_body.join("\n"))
|
|
598
|
+
contents = contents.gsub(PLACEHOLDER_OBJECT, data[:class])
|
|
599
|
+
contents = contents.gsub(PLACEHOLDER_OBJECT_LOWER, data[:class][0, 1].downcase + data[:class][1..-1])
|
|
600
|
+
contents = contents.gsub(PLACEHOLDER_IMPORT, import_statements.join("\n"))
|
|
601
|
+
|
|
602
|
+
write_file("mapper/#{class_name}.java", contents, schema == Blufin::YmlSchemaValidator::MOCK)
|
|
603
|
+
|
|
604
|
+
end
|
|
605
|
+
|
|
606
|
+
# Write embedded Metadata classes.
|
|
607
|
+
# @return void
|
|
608
|
+
def write_embedded_metadata(table, data)
|
|
609
|
+
|
|
610
|
+
@import_statements = ['import org.blufin.sdk.base.AbstractMetaData;', 'import org.blufin.base.enums.DataType;']
|
|
611
|
+
@child_type = nil
|
|
612
|
+
|
|
613
|
+
consts = []
|
|
614
|
+
fields = []
|
|
615
|
+
schema = data[:schema]
|
|
616
|
+
|
|
617
|
+
table_data = data[:data]
|
|
618
|
+
table_data.each do |column_name, column_data|
|
|
619
|
+
|
|
620
|
+
@type = nil
|
|
621
|
+
@flag = nil
|
|
622
|
+
@fkey = nil
|
|
623
|
+
@link = nil
|
|
624
|
+
@encrypted = nil
|
|
625
|
+
@max_length = nil
|
|
626
|
+
@transient = nil
|
|
627
|
+
@child_of = nil
|
|
628
|
+
@description = nil
|
|
629
|
+
@required = nil
|
|
630
|
+
@required_if = nil
|
|
631
|
+
@decimal_distribution = nil
|
|
632
|
+
@enum_name = nil
|
|
633
|
+
@enum_values = nil
|
|
634
|
+
|
|
635
|
+
# Handle Placeholders
|
|
636
|
+
if column_data[:type] == Blufin::ScannerJavaEmbeddedObjects::OBJECT_LIST
|
|
637
|
+
column_name_dup = "#{column_name.dup.gsub('[]', '').split('.')[1]}_list"
|
|
638
|
+
consts << " public static final String FIELD_#{column_name_dup.upcase} = \"#{column_name_dup}\";"
|
|
639
|
+
fields << " metaData.put(FIELD_#{column_name_dup.upcase}, new HashMap<String, Object>() {{"
|
|
640
|
+
elsif column_data[:type] == Blufin::ScannerJavaEmbeddedObjects::OBJECT_LINK
|
|
641
|
+
column_name_dup = "#{column_name.dup.gsub("[#{Blufin::YmlSchemaValidator::LINK}]", '').split('.')[1]}_list"
|
|
642
|
+
consts << " public static final String FIELD_#{column_name_dup.upcase} = \"#{column_name_dup}\";"
|
|
643
|
+
fields << " metaData.put(FIELD_#{column_name_dup.upcase}, new HashMap<String, Object>() {{"
|
|
644
|
+
else
|
|
645
|
+
consts << " public static final String FIELD_#{column_name.upcase} = \"#{column_name}\";"
|
|
646
|
+
fields << " metaData.put(FIELD_#{column_name.upcase}, new HashMap<String, Object>() {{"
|
|
647
|
+
end
|
|
648
|
+
|
|
649
|
+
unless column_data.nil?
|
|
650
|
+
|
|
651
|
+
column_data.each do |key, value|
|
|
652
|
+
|
|
653
|
+
case key.to_s
|
|
654
|
+
when Blufin::YmlSchemaValidator::DESCRIPTION
|
|
655
|
+
handle_description(value)
|
|
656
|
+
when Blufin::YmlSchemaValidator::TYPE
|
|
657
|
+
handle_type(value, schema, table, column_name, column_data)
|
|
658
|
+
when Blufin::YmlSchemaValidator::FLAG
|
|
659
|
+
handle_flag(value.join(' '))
|
|
660
|
+
when Blufin::YmlSchemaValidator::FKEY
|
|
661
|
+
handle_fkey(value)
|
|
662
|
+
when Blufin::YmlSchemaValidator::REQUIRED
|
|
663
|
+
handle_required(schema, table, value, table_data)
|
|
664
|
+
when Blufin::YmlSchemaValidator::REQUIRED_IF
|
|
665
|
+
handle_required_if(schema, table, value, table_data)
|
|
666
|
+
when Blufin::YmlSchemaValidator::ENCRYPTED
|
|
667
|
+
handle_encrypted(value)
|
|
668
|
+
when Blufin::YmlSchemaValidator::TRANSIENT
|
|
669
|
+
handle_transient(value)
|
|
670
|
+
when Blufin::YmlSchemaValidator::CHILD_OF
|
|
671
|
+
handle_child_of(value)
|
|
672
|
+
when Blufin::YmlSchemaValidator::CHILD_TYPE # For constructor parameter(s).
|
|
673
|
+
handle_child_type(value)
|
|
674
|
+
when Blufin::ScannerJavaEmbeddedObjects::KEY_NESTED_TABLE
|
|
675
|
+
when Blufin::ScannerJavaEmbeddedObjects::KEY_TYPE_JAVA
|
|
676
|
+
# Do Nothing.
|
|
677
|
+
else
|
|
678
|
+
raise RuntimeError, "Unrecognized column key in #{__FILE__}: #{key}"
|
|
679
|
+
end
|
|
680
|
+
|
|
681
|
+
end
|
|
682
|
+
|
|
683
|
+
end
|
|
684
|
+
|
|
685
|
+
# Handle fields that don't have a 'type' -- IE: Where type is automatically implied.
|
|
686
|
+
handle_type_where_implied(table, column_name)
|
|
687
|
+
|
|
688
|
+
# Check for critical errors...
|
|
689
|
+
raise RuntimeError, "A MetaData field would've rendered without a 'TYPE' \xe2\x86\x92 #{schema}.#{table} \xe2\x86\x92 #{column_name}" if @type.nil?
|
|
690
|
+
|
|
691
|
+
fields << @type unless @type.nil?
|
|
692
|
+
fields << @flag unless @flag.nil?
|
|
693
|
+
fields << @fkey unless @fkey.nil?
|
|
694
|
+
fields << @link unless @link.nil?
|
|
695
|
+
fields << @encrypted unless @encrypted.nil?
|
|
696
|
+
fields << @max_length unless @max_length.nil?
|
|
697
|
+
fields << @transient unless @transient.nil?
|
|
698
|
+
fields << @child_of unless @child_of.nil?
|
|
699
|
+
fields << @description unless @description.nil?
|
|
700
|
+
fields << @required unless @required.nil?
|
|
701
|
+
fields << @required_if unless @required_if.nil?
|
|
702
|
+
fields << @decimal_distribution unless @decimal_distribution.nil?
|
|
703
|
+
fields << @enum_name unless @enum_name.nil?
|
|
704
|
+
fields << @enum_values unless @enum_values.nil?
|
|
705
|
+
fields << " }});\n"
|
|
706
|
+
|
|
707
|
+
end
|
|
708
|
+
|
|
709
|
+
hierarchy_result = extract_hierarchy(schema, table, data[:dependents], @embedded_tables)
|
|
710
|
+
hierarchy = hierarchy_result[0]
|
|
711
|
+
hierarchy_nested_only = hierarchy_result[1]
|
|
712
|
+
|
|
713
|
+
class_name = "#{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{Blufin::Strings::snake_case_to_camel_case(table)}#{Blufin::YmlJavaMetaWriter::META_DATA}"
|
|
714
|
+
content = ['package org.blufin.sdk.embedded.metadata;', '']
|
|
715
|
+
full_file_path = "#{@embedded_path}/metadata/#{class_name}.java"
|
|
716
|
+
|
|
717
|
+
# Generate the content. Shared method between Embedded and non-embedded writers.
|
|
718
|
+
content = generate_content(content, 'Embedded', consts, fields, hierarchy, hierarchy_nested_only, schema, table, class_name, @import_statements, @child_type)
|
|
719
|
+
|
|
720
|
+
# Write the file.
|
|
721
|
+
write_file_java(full_file_path, content, schema == Blufin::YmlSchemaValidator::MOCK).gsub(@site_location, '')
|
|
722
|
+
|
|
723
|
+
end
|
|
724
|
+
|
|
725
|
+
# Write embedded Refiner classes.
|
|
726
|
+
# @return void
|
|
727
|
+
def write_embedded_refiner(table, data)
|
|
728
|
+
|
|
729
|
+
@content = "\n"
|
|
730
|
+
@content_nested = {}
|
|
731
|
+
schema = data[:schema]
|
|
732
|
+
table = data[:table]
|
|
733
|
+
service = Blufin::Strings::snake_case_to_camel_case(data[:table])
|
|
734
|
+
class_name = "#{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{service}Refiner"
|
|
735
|
+
full_file_path = "#{@embedded_path}/refiner/#{class_name}.java"
|
|
736
|
+
@content_data_import = []
|
|
737
|
+
@content_data_master = {}
|
|
738
|
+
|
|
739
|
+
get_refiner_content(schema, table)
|
|
740
|
+
|
|
741
|
+
# Sort Hash by keys (alphabetically).
|
|
742
|
+
@content_data_master = Hash[@content_data_master.sort_by { |key| key }]
|
|
743
|
+
@content_data_master.each do |first_key, content_data|
|
|
744
|
+
write_refiner_content(first_key, content_data, service)
|
|
745
|
+
break
|
|
746
|
+
end
|
|
747
|
+
|
|
748
|
+
contents = @template_refiner
|
|
749
|
+
contents = contents.gsub(PLACEHOLDER_PACKAGE, 'org.blufin.sdk.embedded.refiner')
|
|
750
|
+
contents = contents.gsub(PLACEHOLDER_CLASS, class_name)
|
|
751
|
+
|
|
752
|
+
base_import_statements = "\n"
|
|
753
|
+
|
|
754
|
+
@content_data_import.uniq!
|
|
755
|
+
@content_data_import.sort!
|
|
756
|
+
@content_data_import.each { |content_import_statement| base_import_statements += "#{content_import_statement}\n" }
|
|
757
|
+
|
|
758
|
+
@content_nested.each do |key, data_inner|
|
|
759
|
+
key_split = key.split('.')
|
|
760
|
+
nc_cc = Blufin::Strings::snake_case_to_camel_case(key_split[2])
|
|
761
|
+
content = <<CLASS
|
|
762
|
+
@NestedRefiner
|
|
763
|
+
public static class #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{nc_cc}Refiner extends Refiner<PaginatedGetRequest<#{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}, #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Field, #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Sort, #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Refiner>> implements AbstractRefiner {
|
|
764
|
+
|
|
765
|
+
public #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{nc_cc}Refiner(List<Filter> filters, PaginatedGetRequest<#{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}, #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Field, #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Sort, #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Refiner> originalRequest) {
|
|
766
|
+
|
|
767
|
+
super(filters, originalRequest);
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
#{PLACEHOLDER_CONTENT} }
|
|
771
|
+
|
|
772
|
+
CLASS
|
|
773
|
+
content = content.gsub(PLACEHOLDER_CONTENT, data_inner.chomp)
|
|
774
|
+
@content += content
|
|
775
|
+
end
|
|
776
|
+
|
|
777
|
+
contents = contents.gsub(PLACEHOLDER_CONTENT, @content.chomp)
|
|
778
|
+
contents = contents.gsub(PLACEHOLDER_SERVICE, service)
|
|
779
|
+
contents = contents.gsub(PLACEHOLDER_SCHEMA, schema)
|
|
780
|
+
contents = contents.gsub(PLACEHOLDER_SITE_NAME, @site_name.gsub('-', '.'))
|
|
781
|
+
contents = contents.gsub(PLACEHOLDER_SITE_DOMAIN, @site_domain_gsub)
|
|
782
|
+
contents = contents.gsub(PLACEHOLDER_BASE_IMPORT, base_import_statements)
|
|
783
|
+
|
|
784
|
+
write_file_java(full_file_path, Blufin::YmlCommon::convert_string_to_line_array(contents), schema == Blufin::YmlSchemaValidator::MOCK)
|
|
785
|
+
|
|
786
|
+
end
|
|
787
|
+
|
|
788
|
+
# Gets refiner content as a Hash of Arrays.
|
|
789
|
+
# @return string
|
|
790
|
+
def get_refiner_content(schema, table, nest_level = 1)
|
|
791
|
+
content_data = []
|
|
792
|
+
field_data = @embedded_data[table][:data]
|
|
793
|
+
field_data.keys.each do |key|
|
|
794
|
+
|
|
795
|
+
@type = field_data[key][:type]
|
|
796
|
+
|
|
797
|
+
# If this is a LINK field, skip.
|
|
798
|
+
# TODO - 12/15/18 - Probably need to make changes here when we need to support Linked objects.
|
|
799
|
+
next if @type == Blufin::ScannerJavaEmbeddedObjects::OBJECT_LINK
|
|
800
|
+
|
|
801
|
+
# If this is a nested SINGLE/MULTIPLE, handle it.
|
|
802
|
+
if @type == Blufin::ScannerJavaEmbeddedObjects::OBJECT_LIST
|
|
803
|
+
key_split = field_data[key][:nested_table].gsub(/\[\]$/, '').split('.')
|
|
804
|
+
content_data << ["#{nest_level + 1}.#{schema}.#{key_split[1]}"]
|
|
805
|
+
get_refiner_content(schema, key_split[1], nest_level + 1)
|
|
806
|
+
next
|
|
807
|
+
end
|
|
808
|
+
|
|
809
|
+
# TODO - If this field is ENCRYPTED, skip (for now).
|
|
810
|
+
# TODO - Encrypted fields are possible, but need to be thought about when used across multiple apps.
|
|
811
|
+
# TODO - The challenge is, how do we ensure we're using the same Encryption Key/IV?
|
|
812
|
+
# TODO - And it needs to stay the same FOREVER! Probably means we have to hard-code it somewhere, somehow.
|
|
813
|
+
raise RuntimeError, 'Encrypted fields not currently supported by @Embedded objects.' if field_data[key].has_key?(Blufin::YmlSchemaValidator::ENCRYPTED)
|
|
814
|
+
|
|
815
|
+
if @type == Blufin::YmlSchemaValidator::TYPE_BOOLEAN
|
|
816
|
+
filter = 'FilterBoolean'
|
|
817
|
+
elsif @type == Blufin::YmlSchemaValidator::TYPE_DATE
|
|
818
|
+
# Must come BEFORE ..DATETIME_TYPES.include?(@type) because the latter included DATE as well.
|
|
819
|
+
filter = 'FilterDate'
|
|
820
|
+
elsif Blufin::YmlSchemaValidator::DATETIME_TYPES.include?(@type)
|
|
821
|
+
filter = 'FilterDateTime'
|
|
822
|
+
elsif @type =~ Blufin::YmlSchemaValidator::REGEX_DECIMAL
|
|
823
|
+
filter = 'FilterDecimal'
|
|
824
|
+
elsif @type == Blufin::YmlSchemaValidator::TYPE_INT_BIG
|
|
825
|
+
filter = 'FilterIntegerBig'
|
|
826
|
+
elsif @type == Blufin::YmlSchemaValidator::TYPE_INT_TINY
|
|
827
|
+
filter = 'FilterIntegerTiny'
|
|
828
|
+
elsif @type == Blufin::YmlSchemaValidator::TYPE_INT_SMALL
|
|
829
|
+
filter = 'FilterIntegerSmall'
|
|
830
|
+
elsif Blufin::YmlSchemaValidator::INT_TYPES.include?(@type)
|
|
831
|
+
filter = 'FilterInteger'
|
|
832
|
+
elsif @type == Blufin::YmlSchemaValidator::TYPE_TEXT
|
|
833
|
+
next if field_data[key].has_key?(:encrypted)
|
|
834
|
+
filter = 'FilterText'
|
|
835
|
+
elsif @type == Blufin::YmlSchemaValidator::TYPE_TEXT_LONG
|
|
836
|
+
filter = 'FilterTextLong'
|
|
837
|
+
elsif @type == Blufin::YmlSchemaValidator::TYPE_ENUM_SYSTEM
|
|
838
|
+
filter = 'FilterEnum'
|
|
839
|
+
enum_class = field_data[key][:type_java]
|
|
840
|
+
enum_class = enum_class.slice(0, 1).upcase + enum_class.slice(1..-1)
|
|
841
|
+
enum_import = "import #{Blufin::SiteServices::PACKAGE_SYSTEM_ENUMS}.#{PLACEHOLDER_ENUM};"
|
|
842
|
+
@content_data_import << enum_import.gsub(PLACEHOLDER_ENUM, enum_class)
|
|
843
|
+
filterable_extra = ", #{enum_class}"
|
|
844
|
+
elsif @type =~ Blufin::YmlSchemaValidator::REGEX_VARCHAR
|
|
845
|
+
filter = 'FilterVarchar'
|
|
846
|
+
elsif @type == Blufin::ScannerJavaEmbeddedObjects::OBJECT
|
|
847
|
+
content_data << ["#{nest_level + 1}.#{schema}.#{key}"]
|
|
848
|
+
get_refiner_content(schema, key, nest_level + 1)
|
|
849
|
+
next
|
|
850
|
+
else
|
|
851
|
+
raise RuntimeError, "Unrecognized type in #{__FILE__} or field: #{key} \xe2\x86\x92 #{@type}"
|
|
852
|
+
end
|
|
853
|
+
key_cleaned = Blufin::YmlCommon::extract_field_name(key)
|
|
854
|
+
content_data << [filter, Blufin::Strings::snake_case_to_camel_case_lower(key_cleaned), key_cleaned.upcase, filterable_extra]
|
|
855
|
+
end
|
|
856
|
+
@content_data_master["#{nest_level}.#{schema}.#{table}"] = content_data
|
|
857
|
+
end
|
|
858
|
+
|
|
859
|
+
# Adds method data to @content & @content_nested Arrays.
|
|
860
|
+
# @return void
|
|
861
|
+
def write_refiner_content(content_key, content_data, service_inner, nest_level = 1)
|
|
862
|
+
|
|
863
|
+
nest_space = nest_level == 1 ? ' ' : ' '
|
|
864
|
+
|
|
865
|
+
content_data.each do |cd|
|
|
866
|
+
|
|
867
|
+
if cd.length == 1
|
|
868
|
+
cd_split = cd[0].split('.')
|
|
869
|
+
cd_cc = Blufin::Strings::snake_case_to_camel_case(cd_split[2])
|
|
870
|
+
cd_ccl = Blufin::Strings::snake_case_to_camel_case_lower(cd_split[2])
|
|
871
|
+
@content_data_import << "import org.blufin.sdk.embedded.filter.#{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{cd_cc}Filter;"
|
|
872
|
+
write_refiner_content(cd[0], @content_data_master[cd[0]], cd_cc, nest_level + 1)
|
|
873
|
+
content = <<METHOD
|
|
874
|
+
#{nest_space}public #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Refiner.#{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{cd_cc}Refiner #{cd_ccl}() {
|
|
875
|
+
|
|
876
|
+
#{nest_space} return new #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Refiner.#{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{cd_cc}Refiner(getFilters(), getOriginalRequest());
|
|
877
|
+
#{nest_space}}
|
|
878
|
+
|
|
879
|
+
METHOD
|
|
880
|
+
if nest_level == 1
|
|
881
|
+
@content += content
|
|
882
|
+
else
|
|
883
|
+
@content_nested[content_key] = '' if @content_nested[cd].nil?
|
|
884
|
+
@content_nested[content_key] += content
|
|
885
|
+
end
|
|
886
|
+
|
|
887
|
+
next
|
|
888
|
+
end
|
|
889
|
+
|
|
890
|
+
content = ''
|
|
891
|
+
content += <<METHOD
|
|
892
|
+
#{nest_space}public #{cd[0]}<PaginatedGetRequest<#{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}, #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Field, #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Sort, #{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{PLACEHOLDER_SERVICE}Refiner>#{cd[3]}> #{cd[1]}() {
|
|
893
|
+
|
|
894
|
+
#{nest_space} return new #{cd[0]}<>(#{Blufin::ScannerJavaEmbeddedObjects::EMBEDDED}#{service_inner}Filter.#{cd[2]}, getFilters(), getOriginalRequest());
|
|
895
|
+
#{nest_space}}
|
|
896
|
+
|
|
897
|
+
METHOD
|
|
898
|
+
if nest_level == 1
|
|
899
|
+
@content += content
|
|
900
|
+
else
|
|
901
|
+
@content_nested[content_key] = '' if @content_nested[content_key].nil?
|
|
902
|
+
@content_nested[content_key] += content
|
|
903
|
+
end
|
|
904
|
+
|
|
905
|
+
end
|
|
906
|
+
|
|
907
|
+
end
|
|
908
|
+
|
|
909
|
+
# Write embedded Sort classes.
|
|
910
|
+
# @return void
|
|
911
|
+
def write_embedded_sort(table, data)
|
|
912
|
+
|
|
913
|
+
schema = data[:schema]
|
|
914
|
+
class_name = "#{@embedded}#{data[:class]}Sort"
|
|
915
|
+
|
|
916
|
+
contents = @template_sort
|
|
917
|
+
contents = contents.gsub(PLACEHOLDER_PACKAGE, 'org.blufin.sdk.embedded.sort')
|
|
918
|
+
contents = contents.gsub(PLACEHOLDER_CLASS, class_name)
|
|
919
|
+
|
|
920
|
+
content = "\n"
|
|
921
|
+
content_data = []
|
|
922
|
+
|
|
923
|
+
data[:data].each do |key, data_inner|
|
|
924
|
+
next if key =~ /\A(#{Blufin::YmlSchemaValidator::VALID_SCHEMAS_REGEX})\.[a-z_]+\z/ || key =~ /\A(#{Blufin::YmlSchemaValidator::VALID_SCHEMAS_REGEX})\.[a-z_]+\[(link)?\]\z/
|
|
925
|
+
next if data_inner.has_key?(:encrypted)
|
|
926
|
+
next if [
|
|
927
|
+
Blufin::YmlSchemaValidator::TYPE_BOOLEAN,
|
|
928
|
+
Blufin::YmlSchemaValidator::TYPE_TEXT,
|
|
929
|
+
Blufin::YmlSchemaValidator::TYPE_TEXT_LONG
|
|
930
|
+
].include?(data_inner['type'])
|
|
931
|
+
content_data << [Blufin::YmlCommon::extract_field_name(key)]
|
|
932
|
+
end
|
|
933
|
+
|
|
934
|
+
content_data.each_with_index do |cd, idx|
|
|
935
|
+
comma_or_not = (idx == (content_data.length - 1)) ? ';' : ",\n"
|
|
936
|
+
content += " #{cd[0].upcase}(\"#{table}.#{cd[0]}\")#{comma_or_not}"
|
|
937
|
+
end
|
|
938
|
+
|
|
939
|
+
contents = contents.gsub(PLACEHOLDER_CONTENT, content)
|
|
940
|
+
|
|
941
|
+
write_file("sort/#{class_name}.java", contents, schema == Blufin::YmlSchemaValidator::MOCK)
|
|
942
|
+
|
|
943
|
+
end
|
|
944
|
+
|
|
945
|
+
private
|
|
946
|
+
|
|
947
|
+
# Write a file and add to Git. This method is already aware of the @embedded_path.
|
|
948
|
+
# @return void
|
|
949
|
+
def write_file(file_from_embedded_path, contents, is_mock)
|
|
950
|
+
write_file_java("#{@embedded_path}/#{file_from_embedded_path}", Blufin::YmlCommon::convert_string_to_line_array(contents), is_mock)
|
|
951
|
+
end
|
|
952
|
+
|
|
953
|
+
# Generates an array of schema/table pairs separated by a dot (.)
|
|
954
|
+
# IE: An Array like [app.data_center, app.db, common.cron]...
|
|
955
|
+
# @return Array
|
|
956
|
+
def generate_embedded_tables_array
|
|
957
|
+
embedded_tables = []
|
|
958
|
+
@embedded_data.each do |key, value|
|
|
959
|
+
embedded_tables << "#{value[:schema]}.#{key}"
|
|
960
|
+
end
|
|
961
|
+
embedded_tables.uniq!
|
|
962
|
+
embedded_tables.sort!
|
|
963
|
+
embedded_tables
|
|
964
|
+
end
|
|
965
|
+
|
|
966
|
+
end
|
|
967
|
+
|
|
968
|
+
end
|