blufin 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. checksums.yaml +7 -0
  2. data/bin/bf +5 -0
  3. data/bin/blufin +5 -0
  4. data/lib/blufin.rb +245 -0
  5. data/lib/core/code_scanners/common/scanner_common.rb +83 -0
  6. data/lib/core/code_scanners/common/scanner_java.rb +106 -0
  7. data/lib/core/code_scanners/scanner_java_embedded_objects.rb +386 -0
  8. data/lib/core/code_scanners/scanner_java_enums.rb +125 -0
  9. data/lib/core/code_scanners/scanner_java_source.rb +29 -0
  10. data/lib/core/code_scanners/scanner_java_tests.rb +157 -0
  11. data/lib/core/error_handling/schema_error.rb +9 -0
  12. data/lib/core/error_handling/sql_error.rb +21 -0
  13. data/lib/core/error_handling/sql_error_handler.rb +149 -0
  14. data/lib/core/error_handling/yml_error.rb +21 -0
  15. data/lib/core/error_handling/yml_error_handler.rb +437 -0
  16. data/lib/core/mysql.rb +347 -0
  17. data/lib/core/opt.rb +21 -0
  18. data/lib/core/site/site.rb +26 -0
  19. data/lib/core/site/site_auth.rb +88 -0
  20. data/lib/core/site/site_embedded.rb +27 -0
  21. data/lib/core/site/site_ports.rb +9 -0
  22. data/lib/core/site/site_resolver.rb +276 -0
  23. data/lib/core/site/site_services.rb +162 -0
  24. data/lib/core/site/site_ui.rb +16 -0
  25. data/lib/core/yml/config/yml_config_validator.rb +219 -0
  26. data/lib/core/yml/maven/yml_maven_validator.rb +1132 -0
  27. data/lib/core/yml/resource/yml_resource_validator.rb +154 -0
  28. data/lib/core/yml/schema/yml_schema_flags.rb +9 -0
  29. data/lib/core/yml/schema/yml_schema_validator.rb +1850 -0
  30. data/lib/core/yml/yml_cache_handler.rb +115 -0
  31. data/lib/core/yml/yml_common.rb +487 -0
  32. data/lib/core/yml/yml_meta_writer_base.rb +300 -0
  33. data/lib/core/yml/yml_outputter.rb +307 -0
  34. data/lib/core/yml/yml_validator_base.rb +630 -0
  35. data/lib/core/yml_writers/yml_configuration_writer.rb +40 -0
  36. data/lib/core/yml_writers/yml_java_api_resource_writer.rb +348 -0
  37. data/lib/core/yml_writers/yml_java_cron_type_writer.rb +113 -0
  38. data/lib/core/yml_writers/yml_java_css_dependency_writer.rb +59 -0
  39. data/lib/core/yml_writers/yml_java_dao_writer.rb +364 -0
  40. data/lib/core/yml_writers/yml_java_dto_writer.rb +251 -0
  41. data/lib/core/yml_writers/yml_java_embedded_object_writer.rb +968 -0
  42. data/lib/core/yml_writers/yml_java_enum_writer.rb +161 -0
  43. data/lib/core/yml_writers/yml_java_js_dependency_writer.rb +59 -0
  44. data/lib/core/yml_writers/yml_java_message_type_writer.rb +106 -0
  45. data/lib/core/yml_writers/yml_java_meta_writer.rb +173 -0
  46. data/lib/core/yml_writers/yml_java_model_writer.rb +510 -0
  47. data/lib/core/yml_writers/yml_java_pom_writer.rb +1050 -0
  48. data/lib/core/yml_writers/yml_java_resource_data_writer.rb +251 -0
  49. data/lib/core/yml_writers/yml_java_sdk_writer.rb +732 -0
  50. data/lib/core/yml_writers/yml_java_validator_writer.rb +280 -0
  51. data/lib/core/yml_writers/yml_java_worker_writer.rb +81 -0
  52. data/lib/core/yml_writers/yml_sql_structure_writer.rb +307 -0
  53. data/lib/core/yml_writers/yml_sql_template_writer.rb +243 -0
  54. data/lib/core/yml_writers/yml_vue_service_writer.rb +170 -0
  55. data/lib/core/yml_writers/yml_writer_base.rb +114 -0
  56. data/lib/routes/api_list.rb +35 -0
  57. data/lib/routes/api_meta.rb +59 -0
  58. data/lib/routes/build.rb +46 -0
  59. data/lib/routes/create/create_api.rb +35 -0
  60. data/lib/routes/create/create_ui.rb +84 -0
  61. data/lib/routes/export.rb +56 -0
  62. data/lib/routes/generate/generate_api.rb +225 -0
  63. data/lib/routes/generate/generate_img_favicon.rb +56 -0
  64. data/lib/routes/generate/generate_img_landing.rb +94 -0
  65. data/lib/routes/generate/generate_lambda.rb +43 -0
  66. data/lib/routes/lint.rb +35 -0
  67. data/lib/routes/mysql_reset.rb +43 -0
  68. data/lib/routes/release_blufin.rb +351 -0
  69. data/lib/routes/run.rb +35 -0
  70. data/lib/version.rb +1 -0
  71. data/opt/README.MD +2 -0
  72. data/opt/config/schema.yml +73 -0
  73. data/opt/config/template.yml +25 -0
  74. data/opt/sql/data/config/data-client.sql +7 -0
  75. data/opt/sql/data/config/data-db-configuration-property.sql +47 -0
  76. data/opt/sql/data/config/data-db-configuration.sql +9 -0
  77. data/opt/sql/data/config/data-db.sql +175 -0
  78. data/opt/sql/data/config/data-profile-api.sql +47 -0
  79. data/opt/sql/data/config/data-profile-cron.sql +0 -0
  80. data/opt/sql/data/config/data-profile-worker.sql +0 -0
  81. data/opt/sql/data/config/data-profile.sql +87 -0
  82. data/opt/sql/data/config/data-project.sql +95 -0
  83. data/opt/sql/structure/blufin-master-structure-fks.sql +65 -0
  84. data/opt/sql/structure/blufin-master-structure.sql +97 -0
  85. data/opt/sql/structure/blufin-mock-structure-fks.sql +38 -0
  86. data/opt/sql/structure/blufin-mock-structure.sql +98 -0
  87. data/opt/sql/templates/config/template-client.sql +7 -0
  88. data/opt/sql/templates/config/template-db-configuration-property.sql +11 -0
  89. data/opt/sql/templates/config/template-db-configuration.sql +9 -0
  90. data/opt/sql/templates/config/template-db.sql +21 -0
  91. data/opt/sql/templates/config/template-profile-api.sql +11 -0
  92. data/opt/sql/templates/config/template-profile-cron.sql +7 -0
  93. data/opt/sql/templates/config/template-profile-worker.sql +7 -0
  94. data/opt/sql/templates/config/template-profile.sql +21 -0
  95. data/opt/sql/templates/config/template-project.sql +23 -0
  96. data/opt/yml/api/schema/config/client.yml +14 -0
  97. data/opt/yml/api/schema/config/db.yml +45 -0
  98. data/opt/yml/api/schema/config/db_configuration.yml +22 -0
  99. data/opt/yml/api/schema/config/db_configuration_property.yml +22 -0
  100. data/opt/yml/api/schema/config/profile.yml +53 -0
  101. data/opt/yml/api/schema/config/profile_api.yml +22 -0
  102. data/opt/yml/api/schema/config/profile_cron.yml +14 -0
  103. data/opt/yml/api/schema/config/profile_worker.yml +14 -0
  104. data/opt/yml/api/schema/config/project.yml +48 -0
  105. data/opt/yml/api/schema/mock/mock.yml +99 -0
  106. data/opt/yml/api/schema/mock/mock_nested_if_enum.yml +16 -0
  107. data/opt/yml/api/schema/mock/mock_nested_if_enum_system.yml +16 -0
  108. data/opt/yml/api/schema/mock/mock_nested_linked.yml +43 -0
  109. data/opt/yml/api/schema/mock/mock_nested_multiple.yml +61 -0
  110. data/opt/yml/api/schema/mock/mock_nested_single.yml +67 -0
  111. data/opt/yml/api/schema/mock/mock_nested_single_super_deep.yml +32 -0
  112. data/opt/yml/api/schema/mock/mock_nested_single_super_super_deep.yml +17 -0
  113. metadata +240 -0
@@ -0,0 +1,280 @@
1
+ module Blufin
2
+
3
+ class YmlJavaValidatorWriter < Blufin::YmlWriterBase
4
+
5
+ SERVICE = Blufin::SiteServices::API
6
+ PACKAGE = "#{Blufin::SiteServices::PACKAGE_AUTO_GENERATED}.validator"
7
+
8
+ PLACEHOLDER_SITE_NAME = '{{--SITE-NAME--}}'
9
+ PLACEHOLDER_SITE_DOMAIN = '{{--SITE-DOMAIN--}}'
10
+ PLACEHOLDER_OBJECT = '{{--OBJECT--}}'
11
+ PLACEHOLDER_OBJECT_LOWERCASE = '{{--OBJECT-LOWERCASE--}}'
12
+ PLACEHOLDER_VALIDATE_SWITCH = '{{--VALIDATE-SWITCH--}}'
13
+
14
+ # @return void
15
+ def initialize(site, schema_data, schema_resources)
16
+
17
+ @schema_data = schema_data
18
+ @schema_resources = schema_resources
19
+
20
+ raise RuntimeError, 'Could not find valid @schema_data.' if @schema_data.nil? || !@schema_data.is_a?(Hash)
21
+ raise RuntimeError, 'Could not find valid @schema_resources.' if @schema_resources.nil? || !@schema_resources.is_a?(Hash)
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
+
29
+ # Wipe out all previous files.
30
+ Blufin::YmlSchemaValidator::VALID_SCHEMAS_GENERATE.each do |schema|
31
+ path_to_wipe_out = "#{get_java_path(@site, schema, SERVICE, PACKAGE)}"
32
+ if Blufin::Files::path_exists(path_to_wipe_out)
33
+ if Blufin::Files::get_files_in_dir(path_to_wipe_out).any?
34
+ Blufin::Terminal::command('rm *', path_to_wipe_out, false, false)
35
+ end
36
+ end
37
+ end
38
+
39
+ @template = <<TEMPLATE
40
+ package #{PLACEHOLDER_SITE_DOMAIN}#{PLACEHOLDER_SITE_NAME}.#{Blufin::SiteServices::API}.#{PACKAGE};
41
+
42
+ import org.blufin.api.base.AbstractValidator;
43
+ import org.blufin.sdk.rest.PatchOperation;
44
+ import org.blufin.base.annotations.AutoGenerated;
45
+ import org.blufin.base.annotations.Singleton;
46
+ import org.blufin.base.annotations.TestNotRequired;
47
+ import org.blufin.base.annotations.helper.ON;
48
+ import org.blufin.base.exceptions.BlufinAlertDeveloperException;
49
+ import org.blufin.base.exceptions.BlufinServerException;
50
+ import org.blufin.base.enums.Environment;
51
+ import org.blufin.sdk.base.PersistentDto;
52
+ import org.blufin.sdk.enums.PayloadType;
53
+ import org.blufin.sdk.response.AckError;
54
+ import org.blufin.sdk.response.AckResolver;
55
+ import java.util.List;
56
+ import java.sql.Connection;
57
+ import java.text.MessageFormat;
58
+ import org.springframework.stereotype.Service;
59
+ import #{PLACEHOLDER_SITE_DOMAIN}#{PLACEHOLDER_SITE_NAME}.api.#{Blufin::SiteServices::PACKAGE_AUTO_GENERATED}.dao.#{PLACEHOLDER_OBJECT}Dao;
60
+ import #{PLACEHOLDER_SITE_DOMAIN}#{PLACEHOLDER_SITE_NAME}.sdk.metadata.#{PLACEHOLDER_OBJECT}MetaData;
61
+ import #{PLACEHOLDER_SITE_DOMAIN}#{PLACEHOLDER_SITE_NAME}.sdk.dto.#{PLACEHOLDER_OBJECT};
62
+ import lombok.Getter;#{PLACEHOLDER_IMPORT}
63
+
64
+ @Service
65
+ public class #{PLACEHOLDER_OBJECT}Validator extends AbstractValidator<#{PLACEHOLDER_OBJECT}> {
66
+
67
+ @Getter
68
+ private static final #{PLACEHOLDER_OBJECT}Validator instance = new #{PLACEHOLDER_OBJECT}Validator();
69
+
70
+ @Singleton
71
+ private #{PLACEHOLDER_OBJECT}Validator() {
72
+
73
+ super(#{PLACEHOLDER_OBJECT}Dao.getInstance(), #{PLACEHOLDER_OBJECT}MetaData.getInstance());
74
+ }
75
+
76
+ @Override
77
+ protected <T extends PersistentDto> void validate(Connection connection, #{PLACEHOLDER_OBJECT} #{PLACEHOLDER_OBJECT_LOWERCASE}, T parent, AckResolver ackResolver, String tree, String fieldName, Integer idx, PayloadType payloadType) throws BlufinServerException {
78
+
79
+ switch (fieldName) {
80
+ #{PLACEHOLDER_VALIDATE_SWITCH}
81
+ default:
82
+ throw new BlufinAlertDeveloperException(MessageFormat.format("Unrecognized field-name: {0}", getTree(tree, fieldName, idx)));
83
+ }
84
+ }
85
+ }
86
+ TEMPLATE
87
+
88
+ end
89
+
90
+ # @return void
91
+ def write
92
+
93
+ @schema_data.each do |schema, schema_data|
94
+
95
+ schema_data.each_with_index do |(table, table_data), idx|
96
+
97
+ if table_data.is_a?(Hash) && table_data.length > 0
98
+
99
+ import_statements = []
100
+
101
+ @validate_switch = {}
102
+
103
+ @letter_idx = 7
104
+
105
+ table_data.each do |column_name, column_data|
106
+
107
+ # Skip ID. They way this is handled will be har-coded into the template.
108
+ next if column_name =~ /\Aid\z/i
109
+
110
+ # Handle Placeholders
111
+ if column_name =~ /^(#{Blufin::YmlSchemaValidator::VALID_SCHEMAS_REGEX})\.[a-z_]+$/ || column_name =~ /^(#{Blufin::YmlSchemaValidator::VALID_SCHEMAS_REGEX})\.[a-z_]+\[\]$/
112
+
113
+ list_type = column_data.has_key?(Blufin::YmlSchemaValidator::TYPE) && column_data[Blufin::YmlSchemaValidator::TYPE] == Blufin::ScannerJavaEmbeddedObjects::OBJECT_LIST
114
+
115
+ column_name_dup = column_name.dup.gsub('[]', '').split('.')[1]
116
+ column_name_upcase = column_name_dup.upcase
117
+ column_name_camel_case = "#{Blufin::Strings::snake_case_to_camel_case(column_name_dup)}"
118
+ column_name_key = list_type ? "#{column_name_upcase}_LIST" : column_name_upcase
119
+
120
+ @validate_switch[column_name_key] = []
121
+
122
+ if column_data.is_a?(Hash)
123
+ @required = (column_data.has_key?(Blufin::YmlSchemaValidator::REQUIRED) && column_data[Blufin::YmlSchemaValidator::REQUIRED] == true) || column_data.has_key?(Blufin::YmlSchemaValidator::REQUIRED_IF)
124
+ @required_if = column_data.has_key?(Blufin::YmlSchemaValidator::REQUIRED_IF) ? column_data[Blufin::YmlSchemaValidator::REQUIRED_IF] : nil
125
+ else
126
+ @required = false # Will always be a BOOLEAN
127
+ @required_if = nil # Will always be a String (IE: 'originating_platform=MAGENTO') or nil.
128
+ end
129
+
130
+ if list_type
131
+ import_statements << "import #{PLACEHOLDER_SITE_DOMAIN}#{PLACEHOLDER_SITE_NAME}.sdk.dto.#{column_name_camel_case};"
132
+ import_statements << "import #{PLACEHOLDER_SITE_DOMAIN}#{PLACEHOLDER_SITE_NAME}.sdk.metadata.#{column_name_camel_case}MetaData;"
133
+ @validate_switch[column_name_key] << " validateList(connection, #{PLACEHOLDER_OBJECT_LOWERCASE}.get#{column_name_camel_case}List(), #{PLACEHOLDER_OBJECT_LOWERCASE}, ackResolver, tree, fieldName, idx, #{column_name_camel_case}Validator.getInstance(), payloadType);"
134
+ else
135
+ if !@required_if.nil?
136
+ value_split = @required_if.split('=')
137
+ enum_field = value_split[0]
138
+ enum_value = value_split[1]
139
+ enum_data = @schema_data[schema][table][enum_field][Blufin::YmlSchemaValidator::TYPE]
140
+ enum_type = Blufin::YmlCommon::enum_type_extractor(enum_data)
141
+ case enum_type
142
+ when Blufin::YmlSchemaValidator::TYPE_ENUM
143
+ required_enum_name = "#{PLACEHOLDER_OBJECT}#{Blufin::Strings::snake_case_to_camel_case(enum_field)}"
144
+ required_enum_value = "#{required_enum_name}.#{enum_value}"
145
+ import_statements << "import #{PLACEHOLDER_SITE_DOMAIN}#{PLACEHOLDER_SITE_NAME}.sdk.enums.#{required_enum_name};"
146
+ when Blufin::YmlSchemaValidator::TYPE_ENUM_CUSTOM
147
+ required_enum_name = enum_data.gsub(/\A#{Blufin::YmlSchemaValidator::TYPE_ENUM_CUSTOM}\(/, '').gsub(/\)\z/, '').gsub(/\A'/, '').gsub(/'\z/, '')
148
+ required_enum_value = "#{required_enum_name}.#{enum_value}"
149
+ import_statements << "import #{PLACEHOLDER_SITE_DOMAIN}#{PLACEHOLDER_SITE_NAME}.sdk.enums.#{required_enum_name};"
150
+ when Blufin::YmlSchemaValidator::TYPE_ENUM_SYSTEM
151
+ required_enum_name = enum_data.gsub(/\A#{Blufin::YmlSchemaValidator::TYPE_ENUM_SYSTEM}\(/, '').gsub(/\)\z/, '').gsub(/\A'/, '').gsub(/'\z/, '')
152
+ required_enum_value = "#{required_enum_name}.#{enum_value}"
153
+ import_statements << "import #{Blufin::SiteServices::PACKAGE_SYSTEM_ENUMS}.#{required_enum_name};"
154
+ else
155
+ raise RuntimeError, "Unrecognized enum_type in #{__FILE__}: #{enum_type}"
156
+ end
157
+ @validate_switch[column_name_key] << " validateObjectConditionally(connection, #{PLACEHOLDER_OBJECT_LOWERCASE}.get#{column_name_camel_case}(), #{PLACEHOLDER_OBJECT_LOWERCASE}, ackResolver, tree, fieldName, idx, #{column_name_camel_case}Validator.getInstance(), payloadType, #{PLACEHOLDER_OBJECT}MetaData.FIELD_#{enum_field.upcase}, #{required_enum_value}, #{PLACEHOLDER_OBJECT_LOWERCASE}.get#{Blufin::Strings::snake_case_to_camel_case(enum_field)}());"
158
+ elsif @required
159
+ @validate_switch[column_name_key] << " assertNotNull(#{PLACEHOLDER_OBJECT_LOWERCASE}.get#{column_name_camel_case}(), ackResolver, tree, fieldName, idx);"
160
+ @validate_switch[column_name_key] << " validateObject(connection, #{PLACEHOLDER_OBJECT_LOWERCASE}.get#{column_name_camel_case}(), #{PLACEHOLDER_OBJECT_LOWERCASE}, ackResolver, tree, fieldName, idx, #{column_name_camel_case}Validator.getInstance(), payloadType);"
161
+ else
162
+ @validate_switch[column_name_key] << " validateObject(connection, #{PLACEHOLDER_OBJECT_LOWERCASE}.get#{column_name_camel_case}(), #{PLACEHOLDER_OBJECT_LOWERCASE}, ackResolver, tree, fieldName, idx, #{column_name_camel_case}Validator.getInstance(), payloadType);"
163
+ end
164
+ end
165
+ next
166
+ elsif column_name =~ /\A[a-z_.]+\[#{Blufin::YmlSchemaValidator::LINK}\]/
167
+ column_name_dup = column_name.dup.gsub("[#{Blufin::YmlSchemaValidator::LINK}]", '').split('.')[1]
168
+ column_name_upcase = column_name_dup.upcase
169
+ column_name_key = "#{column_name_upcase}_LIST"
170
+ @validate_switch[column_name_key] = []
171
+
172
+ # TODO - FINISH THIS.
173
+
174
+ next
175
+ else
176
+ column_name_upcase = column_name.upcase
177
+ column_name_camel_case = "#{Blufin::Strings::snake_case_to_camel_case(column_name.dup)}"
178
+ @validate_switch[column_name_upcase] = []
179
+ end
180
+
181
+ field_camel_case = Blufin::Strings.snake_case_to_camel_case(column_name.dup)
182
+
183
+ @type = column_data[Blufin::YmlSchemaValidator::TYPE]
184
+ @is_nullable = column_data.has_key?(Blufin::YmlSchemaValidator::FLAG) && column_data[Blufin::YmlSchemaValidator::FLAG].split(' ').include?(Blufin::YmlSchemaValidator::FLAG_NULLABLE)
185
+ @is_child = column_data.has_key?(Blufin::YmlSchemaValidator::CHILD_OF) && column_data.has_key?(Blufin::YmlSchemaValidator::CHILD_TYPE)
186
+ @is_fkey = column_data.has_key?(Blufin::YmlSchemaValidator::FKEY)
187
+ @is_transient = [Blufin::ScannerJavaEmbeddedObjects::OBJECT].include?(@type) && !column_data[Blufin::YmlSchemaValidator::TRANSIENT].nil?
188
+
189
+ # Null-checks.
190
+ unless @is_nullable || @is_child || @is_transient || [
191
+ Blufin::YmlSchemaValidator::TYPE_DATETIME_INSERT,
192
+ Blufin::YmlSchemaValidator::TYPE_DATETIME_UPDATE
193
+ ].include?(@type)
194
+ if @type =~ Blufin::YmlSchemaValidator::REGEX_ENUM || @type =~ Blufin::YmlSchemaValidator::REGEX_ENUM_CUSTOM || @type =~ Blufin::YmlSchemaValidator::REGEX_ENUM_SYSTEM
195
+ @validate_switch[column_name_upcase] << " assertNotNull(#{PLACEHOLDER_OBJECT_LOWERCASE}.get#{field_camel_case}(), ackResolver, tree, fieldName, idx, true);"
196
+ elsif @type == Blufin::YmlSchemaValidator::TYPE_BOOLEAN
197
+ @validate_switch[column_name_upcase] << " assertNotNull(#{PLACEHOLDER_OBJECT_LOWERCASE}.is#{field_camel_case}(), ackResolver, tree, fieldName, idx);"
198
+ else
199
+ @validate_switch[column_name_upcase] << " assertNotNull(#{PLACEHOLDER_OBJECT_LOWERCASE}.get#{field_camel_case}(), ackResolver, tree, fieldName, idx);"
200
+ end
201
+ end
202
+
203
+ # All the different types (and their logic).
204
+ if @type == Blufin::YmlSchemaValidator::TYPE_BOOLEAN
205
+ elsif @type == Blufin::YmlSchemaValidator::TYPE_DATETIME
206
+ elsif [
207
+ Blufin::YmlSchemaValidator::TYPE_DATETIME_INSERT,
208
+ Blufin::YmlSchemaValidator::TYPE_DATETIME_UPDATE
209
+ ].include?(@type)
210
+ @validate_switch[column_name_upcase] << " assertNull(#{PLACEHOLDER_OBJECT_LOWERCASE}.get#{field_camel_case}(), ackResolver, tree, fieldName, idx);"
211
+ elsif @type == Blufin::YmlSchemaValidator::TYPE_DATE
212
+ elsif @type =~ Blufin::YmlSchemaValidator::REGEX_DECIMAL
213
+ elsif @type == Blufin::YmlSchemaValidator::TYPE_INT_TINY
214
+ elsif @type == Blufin::YmlSchemaValidator::TYPE_INT_SMALL
215
+ elsif @type == Blufin::YmlSchemaValidator::TYPE_INT_BIG
216
+ elsif [Blufin::YmlSchemaValidator::TYPE_INT, Blufin::YmlSchemaValidator::TYPE_INT_AUTO].include?(@type)
217
+ unless @is_child
218
+ if @is_fkey
219
+ target_object = Blufin::Strings::snake_case_to_camel_case(column_data[Blufin::YmlSchemaValidator::FKEY].split('.')[1])
220
+ import_statements << "import #{PLACEHOLDER_SITE_DOMAIN}#{PLACEHOLDER_SITE_NAME}.api.#{Blufin::SiteServices::PACKAGE_AUTO_GENERATED}.dao.#{target_object}Dao;"
221
+ import_statements << "import #{PLACEHOLDER_SITE_DOMAIN}#{PLACEHOLDER_SITE_NAME}.sdk.metadata.#{target_object}MetaData;"
222
+ @validate_switch[column_name_upcase] << " assertExists(connection, #{PLACEHOLDER_OBJECT_LOWERCASE}.get#{column_name_camel_case}(), ackResolver, tree, fieldName, idx, #{target_object}MetaData.getInstance(), #{target_object}Dao.getInstance());"
223
+ end
224
+ end
225
+ elsif [Blufin::YmlSchemaValidator::TYPE_TEXT, Blufin::YmlSchemaValidator::TYPE_TEXT_LONG].include?(@type)
226
+ elsif @type =~ Blufin::YmlSchemaValidator::REGEX_ENUM
227
+ elsif @type =~ Blufin::YmlSchemaValidator::REGEX_ENUM_CUSTOM
228
+ elsif @type =~ Blufin::YmlSchemaValidator::REGEX_ENUM_SYSTEM
229
+ elsif @type =~ Blufin::YmlSchemaValidator::REGEX_VARCHAR
230
+ @validate_switch[column_name_upcase] << " #{PLACEHOLDER_OBJECT_LOWERCASE}.set#{field_camel_case}(normalizeString(#{PLACEHOLDER_OBJECT_LOWERCASE}.get#{field_camel_case}(), ackResolver, tree, fieldName, idx, #{Blufin::YmlCommon::varchar_extract_max_length(column_data[Blufin::YmlSchemaValidator::TYPE])}));"
231
+ elsif @type == Blufin::ScannerJavaEmbeddedObjects::OBJECT
232
+ @validate_switch[column_name_upcase] << " assertNull(#{PLACEHOLDER_OBJECT_LOWERCASE}.get#{field_camel_case}(), ackResolver, tree, fieldName, idx);" if @is_transient
233
+ else
234
+ raise RuntimeError, "Unrecognized type in #{__FILE__}: #{@type}"
235
+ end
236
+
237
+ end
238
+
239
+ import_statements.uniq!
240
+ import_statements.sort!
241
+
242
+ contents = @template
243
+
244
+ object = Blufin::Strings::snake_case_to_camel_case(table)
245
+ object_lower = Blufin::Strings::snake_case_to_camel_case_lower(table)
246
+
247
+ contents = contents.gsub(PLACEHOLDER_IMPORT, import_statements.any? ? "\n#{import_statements.join("\n")}" : '')
248
+ contents = contents.gsub(PLACEHOLDER_VALIDATE_SWITCH, build_switch.join("\n"))
249
+
250
+ contents = contents.gsub(PLACEHOLDER_SITE_NAME, @site_name.gsub('-', '.'))
251
+ contents = contents.gsub(PLACEHOLDER_SITE_DOMAIN, @site_domain_gsub)
252
+ contents = contents.gsub(PLACEHOLDER_SCHEMA, schema)
253
+ contents = contents.gsub(PLACEHOLDER_OBJECT, object)
254
+ contents = contents.gsub(PLACEHOLDER_OBJECT_LOWERCASE, object_lower)
255
+
256
+ write_file_java("#{get_java_path(@site, schema, SERVICE, PACKAGE)}/#{object}Validator.java", Blufin::YmlCommon::convert_string_to_line_array(contents), schema == Blufin::YmlSchemaValidator::MOCK)
257
+
258
+ end
259
+
260
+ end
261
+
262
+ end
263
+
264
+ end
265
+
266
+ private
267
+
268
+ def build_switch
269
+ output = []
270
+ @validate_switch.each do |key, value|
271
+ output << " case #{PLACEHOLDER_OBJECT}MetaData.FIELD_#{key}:"
272
+ value.each { |line| output << line }
273
+ output << ' break;'
274
+ end
275
+ output
276
+ end
277
+
278
+ end
279
+
280
+ end
@@ -0,0 +1,81 @@
1
+ module Blufin
2
+
3
+ class YmlJavaWorkerWriter < Blufin::YmlWriterBase
4
+
5
+ SERVICE = Blufin::SiteServices::WORKER
6
+ PACKAGE = 'messages'
7
+
8
+ PLACEHOLDER_IMP = '{{--PLACEHOLDER-IMP--}}'
9
+ PLACEHOLDER_PUT = '{{--PLACEHOLDER-ONE--}}'
10
+ PLACEHOLDER_SITE_NAME = '{{--SITE-NAME--}}'
11
+ PLACEHOLDER_SITE_DOMAIN = '{{--SITE-DOMAIN--}}'
12
+
13
+ MESSAGE_HANDLER = 'MessageHandler'
14
+ MESSAGE_HANDLER_MAPPER = 'MessageHandlerMapper'
15
+
16
+ # Initialize the class.
17
+ # @return void
18
+ def initialize(site)
19
+
20
+ @site = Blufin::SiteResolver::validate_site(site)
21
+ @site_name = Blufin::SiteResolver::get_site_name(@site)
22
+ @site_domain = Blufin::SiteResolver::get_site_domain(@site)
23
+ @site_domain_gsub = @site_domain.strip == '' ? '' : "#{@site_domain}."
24
+ @site_location = "#{Blufin::SiteResolver::get_site_location(@site)}/"
25
+
26
+ # Wipe out parent file.
27
+ Blufin::Files::delete_file("#{get_java_path(@site, nil, SERVICE, PLACEHOLDER_PUT)}/#{MESSAGE_HANDLER_MAPPER}.java")
28
+
29
+ @template_parent = <<TEMPLATE
30
+ package #{PLACEHOLDER_PACKAGE};
31
+
32
+ import org.blufin.worker.queue.MessageHandlerInterface;
33
+ import #{PLACEHOLDER_SITE_DOMAIN}#{PLACEHOLDER_SITE_NAME}.lib.enums.system.MessageType;
34
+ #{PLACEHOLDER_IMP}
35
+
36
+ import java.util.HashMap;
37
+ import java.util.Map;
38
+
39
+ public class #{MESSAGE_HANDLER_MAPPER} {
40
+
41
+ public static Map<String, MessageHandlerInterface> getMap() {
42
+
43
+ Map<String, MessageHandlerInterface> map = new HashMap<>();
44
+
45
+ #{PLACEHOLDER_PUT}
46
+
47
+ return map;
48
+ }
49
+ }
50
+ TEMPLATE
51
+
52
+ end
53
+
54
+ # Write the file(s).
55
+ # @return void
56
+ def write
57
+
58
+ imp_statements = ''
59
+ put_statements = ''
60
+
61
+ message_types = Blufin::YmlConfigValidator::get_message_types.keys
62
+ message_types.each_with_index do |message_type, idx|
63
+ new_line_or_not = (idx == (message_types.length - 1)) ? '' : "\n"
64
+ imp_statements += "import #{@site_domain_gsub}#{@site_name.gsub('-', '.')}.worker.messages.#{Blufin::Strings::snake_case_to_camel_case_lower(message_type)}.#{Blufin::Strings::snake_case_to_camel_case(message_type)}#{MESSAGE_HANDLER};#{new_line_or_not}"
65
+ put_statements += " map.put(MessageType.#{message_type.upcase.gsub('-', '_')}.toString(), new #{Blufin::Strings::snake_case_to_camel_case(message_type)}#{MESSAGE_HANDLER}());#{new_line_or_not}"
66
+ end
67
+
68
+ contents = @template_parent
69
+ contents = contents.gsub(PLACEHOLDER_PACKAGE, get_package(@site, nil, PACKAGE, SERVICE))
70
+ contents = contents.gsub(PLACEHOLDER_IMP, imp_statements)
71
+ contents = contents.gsub(PLACEHOLDER_PUT, put_statements)
72
+ contents = contents.gsub(PLACEHOLDER_SITE_NAME, @site_name.gsub('-', '.'))
73
+ contents = contents.gsub(PLACEHOLDER_SITE_DOMAIN, @site_domain_gsub)
74
+
75
+ write_file_java("#{get_java_path(@site, nil, SERVICE, PACKAGE)}/#{MESSAGE_HANDLER_MAPPER}.java", Blufin::YmlCommon::convert_string_to_line_array(contents))
76
+
77
+ end
78
+
79
+ end
80
+
81
+ end
@@ -0,0 +1,307 @@
1
+ module Blufin
2
+
3
+ class YmlSqlStructureWriter < Blufin::YmlWriterBase
4
+
5
+ def initialize(site, schema_data)
6
+
7
+ @schema_data = schema_data
8
+
9
+ raise RuntimeError, 'Could not find valid @schema_data.' if @schema_data.nil? || !@schema_data.is_a?(Hash)
10
+
11
+ @site = Blufin::SiteResolver::validate_site(site)
12
+ @site_name = Blufin::SiteResolver::get_site_name(@site)
13
+ @site_domain = Blufin::SiteResolver::get_site_domain(@site)
14
+ @site_location = "#{Blufin::SiteResolver::get_site_location(@site)}/"
15
+
16
+ @yml_enum_scanner = Blufin::ScannerJavaEnums.new(@site)
17
+
18
+ end
19
+
20
+ def write
21
+
22
+ # Remove ALL previous structure files.
23
+ Blufin::YmlSchemaValidator::VALID_SCHEMAS_GENERATE.each do |schema|
24
+ sfs = get_structure_files(schema)
25
+ next if sfs.nil? # Skip if user doesn't have the PATH_TO_RUBY config value.
26
+ structure_file = sfs[0]
27
+ foreign_key_file = sfs[1]
28
+ Blufin::Files::delete_file(structure_file)
29
+ Blufin::Files::delete_file(foreign_key_file)
30
+ end
31
+
32
+ @schema_data.each do |schema, schema_data|
33
+
34
+ # This filters out the "mock" schema used for testing.
35
+ next if schema == Blufin::YmlSchemaValidator::MOCK
36
+
37
+ fk_count = 0
38
+ idx_count = 0
39
+
40
+ @structure = []
41
+ @alter_table_lines = []
42
+ @fks = []
43
+ @link_tables = []
44
+
45
+ schema_data.each_with_index do |(table, table_data), idx|
46
+
47
+ if table_data.length > 0
48
+
49
+ primary_key = nil
50
+ indexes = []
51
+ indexes_unique = []
52
+ indexes_fulltext = []
53
+ foreign_keys = []
54
+
55
+ @structure << "-- Create #{table} table"
56
+ @structure << "CREATE TABLE `#{table}` ("
57
+
58
+ table_data.each do |column_name, column_data|
59
+
60
+ # Skip Placeholders
61
+ next if column_name =~ /\A(#{Blufin::YmlSchemaValidator::VALID_SCHEMAS_REGEX})\.[a-z_]+\[\]\z/ || column_name =~ /\A(#{Blufin::YmlSchemaValidator::VALID_SCHEMAS_REGEX})\.[a-z_]+\z/
62
+
63
+ @type = column_data[Blufin::YmlSchemaValidator::TYPE]
64
+ @fkey = !column_data[Blufin::YmlSchemaValidator::FKEY].nil?
65
+
66
+ # Skip Transient Objects.
67
+ next if [Blufin::ScannerJavaEmbeddedObjects::OBJECT].include?(@type)
68
+
69
+ # Create FKEY LINK tables
70
+ if column_name =~ /\A[a-z_.]+\[#{Blufin::YmlSchemaValidator::LINK}\]/
71
+ @link_tables << [
72
+ "#{schema}.#{table}",
73
+ column_name.dup.gsub("[#{Blufin::YmlSchemaValidator::LINK}]", '')
74
+ ]
75
+ next
76
+ end
77
+
78
+ # Get the flags and check for indexes.
79
+ if column_data[Blufin::YmlSchemaValidator::FLAG].nil?
80
+ @flags = nil
81
+ indexes << " INDEX `#{schema}_#{table}_#{column_name}_idx` (`#{column_name}`)," if @type =~ Blufin::YmlSchemaValidator::REGEX_ENUM
82
+ else
83
+ @flags = Blufin::YmlCommon::extract_flags(column_data[Blufin::YmlSchemaValidator::FLAG])[0]
84
+ # See if this is a PRIMARY KEY
85
+ primary_key = column_name if @flags.primary_key
86
+ # See if there are any INDEXES
87
+ if @flags.index
88
+ if [Blufin::YmlSchemaValidator::TYPE_TEXT, Blufin::YmlSchemaValidator::TYPE_TEXT_LONG].include?(@type)
89
+ indexes_fulltext << " FULLTEXT `#{schema}_#{table}_#{column_name}_idx_fulltext` (`#{column_name}`),"
90
+ else
91
+ indexes << " INDEX `#{schema}_#{table}_#{column_name}_idx` (`#{column_name}`)," if @flags.unique.nil?
92
+ indexes_unique << " UNIQUE INDEX `#{schema}_#{table}_#{column_name}_uniq_idx` (`#{column_name}`)," if @flags.unique
93
+ end
94
+ end
95
+ end
96
+
97
+ # Check for FKs
98
+ unless column_data[Blufin::YmlSchemaValidator::FKEY].nil?
99
+ fk_count = fk_count + 1
100
+ fk_ref = column_data[Blufin::YmlSchemaValidator::FKEY].split('.') # The target in form -> app.ebay_user.id
101
+ foreign_key_lines = []
102
+ foreign_key_lines << "ADD CONSTRAINT `fk_#{fk_count}`"
103
+ foreign_key_lines << " FOREIGN KEY (`#{column_name}`)"
104
+ foreign_key_lines << " REFERENCES `#{fk_ref[1]}` (`#{fk_ref[2]}`)"
105
+ foreign_key_lines << ' ON DELETE RESTRICT'
106
+ foreign_key_lines << ' ON UPDATE CASCADE,'
107
+ foreign_keys << foreign_key_lines
108
+ end
109
+
110
+ column_definition = " `#{column_name}`"
111
+
112
+ determine_type(column_definition, column_data)
113
+ determine_not_null(column_definition, column_data)
114
+ determine_auto_increment(column_definition)
115
+ determine_comment(column_data[Blufin::YmlSchemaValidator::DESCRIPTION], column_definition)
116
+
117
+ @structure << "#{column_definition},"
118
+
119
+ end
120
+
121
+ # Add primary key (if any) ..
122
+ @structure << " PRIMARY KEY (`#{primary_key}`)," if primary_key != nil
123
+
124
+ # Add indexes (if any) ..
125
+ indexes_fulltext.each { |index_fulltext| @structure << index_fulltext } if indexes_fulltext.any?
126
+ indexes_unique.each { |index_unique| @structure << index_unique } if indexes_unique.any?
127
+ indexes.each { |index| @structure << index } if indexes.any?
128
+
129
+ # Add FKs (if any) ..
130
+ if foreign_keys.any?
131
+ @alter_table_lines << "-- Add #{table} FKs"
132
+ @alter_table_lines << "ALTER TABLE `#{table}`"
133
+ foreign_keys.each do |foreign_key_lines|
134
+ foreign_key_lines.each do |foreign_key_line|
135
+ @alter_table_lines << foreign_key_line
136
+ end
137
+ end
138
+ @alter_table_lines[@alter_table_lines.length - 1] = @alter_table_lines[@alter_table_lines.length - 1][0...-1]
139
+ @alter_table_lines[@alter_table_lines.length - 1] << ";\n"
140
+ end
141
+
142
+ @structure[@structure.length - 1] = @structure[@structure.length - 1][0...-1]
143
+ @structure << ") ENGINE = InnoDB;#{idx == (schema_data.length - 1) ? '' : "\n"}"
144
+
145
+ end
146
+
147
+ end
148
+
149
+ # Add LINK tables (if any) ..
150
+ if @link_tables.any?
151
+ @link_tables.each_with_index do |link_data, idx|
152
+ source_table = link_data[0].split('.')
153
+ target_table = link_data[1].split('.')
154
+ link_table_name = Blufin::YmlCommon::get_link_table_name(source_table[1], link_data[1])
155
+
156
+ # Create structure.
157
+ @structure << "-- Add table to link '#{source_table[1]}' with '#{target_table[1]}'"
158
+ @structure << "CREATE TABLE `#{link_table_name}` ("
159
+ @structure << " `#{source_table[1]}_id` INT NOT NULL,"
160
+ @structure << " `#{target_table[1]}_id` INT NOT NULL"
161
+ @structure << ") ENGINE = InnoDB;#{idx == (@link_tables.length - 1) ? '' : "\n"}"
162
+
163
+ # Create FKs and indexes.
164
+ @fks << "ALTER TABLE `#{link_table_name}`"
165
+ idx_count = idx_count + 1
166
+ @fks << " ADD INDEX `idx_#{idx_count}` (`#{source_table[1]}_id` DESC),"
167
+ idx_count = idx_count + 1
168
+ @fks << " ADD INDEX `idx_#{idx_count}` (`#{target_table[1]}_id` DESC),"
169
+ @fks << " ADD UNIQUE INDEX `#{source_table[1]}_to_#{target_table[1]}_uniq_idx` (`#{source_table[1]}_id` DESC, `#{target_table[1]}_id` DESC),"
170
+ fk_count = fk_count + 1
171
+ @fks << " ADD CONSTRAINT `fk_#{fk_count}`"
172
+ @fks << " FOREIGN KEY (`#{source_table[1]}_id`)"
173
+ @fks << " REFERENCES `#{source_table[1]}` (`id`)"
174
+ @fks << ' ON DELETE RESTRICT'
175
+ @fks << ' ON UPDATE RESTRICT,'
176
+ fk_count = fk_count + 1
177
+ @fks << " ADD CONSTRAINT `fk_#{fk_count}`"
178
+ @fks << " FOREIGN KEY (`#{target_table[1]}_id`)"
179
+ @fks << " REFERENCES `#{target_table[1]}` (`id`)"
180
+ @fks << ' ON DELETE RESTRICT'
181
+ @fks << ' ON UPDATE RESTRICT;'
182
+ @fks << '' unless idx == @link_tables.length - 1
183
+ end
184
+ end
185
+
186
+ sfs = get_structure_files(schema)
187
+ next if sfs.nil? # Skip if user doesn't have the PATH_TO_RUBY config value.
188
+ structure_file = sfs[0]
189
+ foreign_key_file = sfs[1]
190
+
191
+ Blufin::Files.write_file(structure_file, @structure).gsub(@site_location, '') if @structure.any?
192
+ Blufin::Files.write_file(foreign_key_file, @alter_table_lines + @fks).gsub(@site_location, '') if @alter_table_lines.any? || @fks.any?
193
+
194
+ end
195
+
196
+ end
197
+
198
+ private
199
+
200
+ # @return void
201
+ def determine_type(column_definition, column_data)
202
+
203
+ if @type == Blufin::YmlSchemaValidator::TYPE_DATE
204
+ # Must come before DATETIME_TYPES.include?
205
+ column_definition << ' DATE'
206
+ elsif Blufin::YmlSchemaValidator::DATETIME_TYPES.include?(@type)
207
+ column_definition << ' DATETIME(3)'
208
+ elsif @type == Blufin::YmlSchemaValidator::TYPE_INT_TINY
209
+ column_definition << ' TINYINT'
210
+ elsif @type == Blufin::YmlSchemaValidator::TYPE_INT_SMALL
211
+ column_definition << ' SMALLINT'
212
+ elsif @type == Blufin::YmlSchemaValidator::TYPE_INT_BIG
213
+ column_definition << ' BIGINT'
214
+ elsif Blufin::YmlSchemaValidator::INT_TYPES.include?(@type)
215
+ column_definition << ' INT'
216
+ elsif @type == Blufin::YmlSchemaValidator::TYPE_BOOLEAN
217
+ column_definition << ' TINYINT(1)'
218
+ elsif @type == Blufin::YmlSchemaValidator::TYPE_TEXT
219
+ column_definition << ' TEXT'
220
+ elsif @type == Blufin::YmlSchemaValidator::TYPE_TEXT_LONG
221
+ column_definition << ' LONGTEXT'
222
+ elsif @type =~ Blufin::YmlSchemaValidator::REGEX_DECIMAL || @type =~ Blufin::YmlSchemaValidator::REGEX_VARCHAR
223
+ if column_data[Blufin::YmlSchemaValidator::ENCRYPTED].nil?
224
+ column_definition << " #{@type}"
225
+ else
226
+ # Encrypted VARCHAR(30) would become VARCHAR(60).
227
+ varchar_amount = Blufin::Strings::extract_using_regex(@type, /\(\d+\)\z/, %w{( )})
228
+ column_definition << " #{Blufin::YmlSchemaValidator::TYPE_VARCHAR}(#{varchar_amount.to_i * 2})"
229
+ end
230
+ elsif @type =~ Blufin::YmlSchemaValidator::REGEX_ENUM
231
+ enum_values = Blufin::YmlCommon::enum_value_extractor(@type, @site)
232
+ column_definition << " VARCHAR(#{enum_values.max_by(&:length).length})"
233
+ elsif @type =~ Blufin::YmlSchemaValidator::REGEX_ENUM_CUSTOM
234
+ enum_values = @yml_enum_scanner.get_enum_custom_values_for(Blufin::YmlCommon::enum_name_extractor(@type))
235
+ column_definition << " VARCHAR(#{enum_values.max_by(&:length).length})"
236
+ elsif @type =~ Blufin::YmlSchemaValidator::REGEX_ENUM_SYSTEM
237
+ enum_values = @yml_enum_scanner.get_enum_system_values_for(Blufin::YmlCommon::enum_name_extractor(@type))
238
+ column_definition << " VARCHAR(#{enum_values.max_by(&:length).length})"
239
+ else
240
+ raise RuntimeError, "Unrecognized type in #{__FILE__}: #{@type}"
241
+ end
242
+
243
+ end
244
+
245
+ # @return void
246
+ def determine_not_null(column_definition, column_data)
247
+
248
+ ((@flags != nil && @flags.nullable) || column_data.has_key?(Blufin::YmlSchemaValidator::REQUIRED_IF)) ?
249
+ column_definition << ' NULL' :
250
+ column_definition << ' NOT NULL'
251
+ end
252
+
253
+ # @return void
254
+ def determine_auto_increment(column_definition)
255
+ column_definition << ' AUTO_INCREMENT' if @type == Blufin::YmlSchemaValidator::TYPE_INT_AUTO
256
+ end
257
+
258
+ # @return void
259
+ def determine_comment(description, column_definition)
260
+
261
+ if description != nil
262
+ desc = description
263
+ else
264
+ desc = ''
265
+ end
266
+
267
+ desc = Blufin::YmlCommon::description_without_formatting(desc)
268
+
269
+ if @type =~ Blufin::YmlSchemaValidator::REGEX_ENUM
270
+ desc << " \xe2\x80\x94 " unless desc == '' || desc.nil?
271
+ desc << '['
272
+ Blufin::YmlCommon::enum_value_extractor(@type, @site).each do |enum_value|
273
+ desc << "#{enum_value}|"
274
+ end
275
+ desc = desc[0...-1]
276
+ desc << ']'
277
+ end
278
+
279
+ column_definition << " COMMENT '#{desc.gsub("'", %q(\\\'))}'" if desc != nil && desc.to_s != ''
280
+
281
+ end
282
+
283
+ # @return Array
284
+ def get_structure_files(schema)
285
+
286
+ if schema == Blufin::YmlSchemaValidator::CONFIG
287
+ path_to_blufin_ruby = Blufin::Config::get_path('Paths', 'BlufinRuby')
288
+ return nil if path_to_blufin_ruby.nil?
289
+ structure_file = "#{path_to_blufin_ruby}/#{App::Opt::BLUFIN}#{App::Opt::OPT_PATH_SQL}/structure/#{App::MySQL::CONFIG_FILENAME_STRUCTURE}"
290
+ foreign_key_file = "#{path_to_blufin_ruby}/#{App::Opt::BLUFIN}#{App::Opt::OPT_PATH_SQL}/structure/#{App::MySQL::CONFIG_FILENAME_STRUCTURE_FKS}"
291
+ elsif schema == Blufin::YmlSchemaValidator::MOCK
292
+ path_to_blufin_ruby = Blufin::Config::get_path('Paths', 'BlufinRuby')
293
+ return nil if path_to_blufin_ruby.nil?
294
+ structure_file = "#{path_to_blufin_ruby}/#{App::Opt::BLUFIN}#{App::Opt::OPT_PATH_SQL}/structure/#{App::MySQL::MOCK_FILENAME_STRUCTURE}"
295
+ foreign_key_file = "#{path_to_blufin_ruby}/#{App::Opt::BLUFIN}#{App::Opt::OPT_PATH_SQL}/structure/#{App::MySQL::MOCK_FILENAME_STRUCTURE_FKS}"
296
+ else
297
+ structure_file = "#{get_base_path(@site)}/#{Blufin::Site::PATH_TO_SQL_STRUCTURE}/#{Blufin::SiteResolver::get_site_name(@site)}-#{schema}.sql"
298
+ foreign_key_file = "#{get_base_path(@site)}/#{Blufin::Site::PATH_TO_SQL_STRUCTURE}/#{Blufin::SiteResolver::get_site_name(@site)}-fks-#{schema}.sql"
299
+ end
300
+
301
+ [structure_file, foreign_key_file]
302
+
303
+ end
304
+
305
+ end
306
+
307
+ end