class EWorld::ServiceWriter

Constants

AUTOWIRED
METHODS
PACKAGE_NAME

Public Class Methods

write(api_project, ui_project, controllers) click to toggle source

Responsible for writing all the spring boot @RestController classes. @return void

# File lib/writers/service_writer.rb, line 11
def self.write(api_project, ui_project, controllers)
    raise RuntimeError, "Expected project type to be: #{Blufin::Projects::TYPE_API_SIMPLE}, instead got: #{api_project[Blufin::Projects::TYPE]}" unless api_project[Blufin::Projects::TYPE] == Blufin::Projects::TYPE_API_SIMPLE
    raise RuntimeError, "Expected project type to be: #{Blufin::Projects::TYPE_QUASAR}, instead got: #{ui_project[Blufin::Projects::TYPE]}" unless ui_project[Blufin::Projects::TYPE] == Blufin::Projects::TYPE_QUASAR
    @generated          = []
    @overwritten        = []
    @project_path       = Blufin::Projects::get_project_path(api_project[Blufin::Projects::PROJECT_ID])
    @project_path_api   = Blufin::Projects::get_project_path(api_project[Blufin::Projects::PROJECT_ID], true)
    @project_path_ui    = Blufin::Projects::get_project_path(ui_project[Blufin::Projects::PROJECT_ID], true)
    @transient_data_api = api_project[Blufin::Projects::TRANSIENT_DATA]
    @transient_data_ui  = ui_project[Blufin::Projects::TRANSIENT_DATA]
    @service_path       = "#{EWorld::BaseWriter::get_java_path_for(@project_path, @transient_data_api['ServicePath'])}/#{PACKAGE_NAME}"

    # Loop controllers.
    controllers.each do |clazz, data|
        write_java_service(clazz, data)
        write_axios_service(clazz, data)
    end

    return @generated, @overwritten

end

Private Class Methods

write_axios_service(clazz, data) click to toggle source

Write Axios services. @return void

# File lib/writers/service_writer.rb, line 98
def self.write_axios_service(clazz, data)

    # TODO - Overwrite Axios Service.

end
write_java_service(clazz, data) click to toggle source

Write Java services. @return void

# File lib/writers/service_writer.rb, line 37
        def self.write_java_service(clazz, data)

            file = "#{@service_path}/#{clazz}Service.java"

            methods          = {}

            # TODO NOW - Here we need to parse in the stuff from the java file scanner.

            autowired_output = ''
            methods_output   = ''

            if data.has_key?('EndPoints') && data['EndPoints'].is_a?(Array)
                methods_output = "\n"
                data['EndPoints'].each do |end_point|
                    method       = end_point['Method'].downcase
                    method       = method[0].upcase + method[1..-1]
                    path         = end_point['Path'].downcase
                    camel_case   = Blufin::Strings::snake_case_to_camel_case(path.gsub('-', '_'))
                    method_title = "#{method.downcase}#{camel_case}"
                    if methods.has_key?(method_title)

                        # TODO - Must scan file here ...

                    else

                        methods_output += <<TEMPLATE

    public Object #{method_title}() {

        return null;
    }
TEMPLATE
                    end
                end
            end

            methods.each do |method|

            end

            content = <<TEMPLATE
package #{PACKAGE}.core.#{PACKAGE_NAME};

import gov.hi.dhs.fmm.lib.rest.request.AbstractService;
import org.springframework.stereotype.Service;

@Service
public class #{CLASS}Service extends AbstractService {#{AUTOWIRED}#{METHODS}}
TEMPLATE

            content = content.gsub(AUTOWIRED, autowired_output)
            content = content.gsub(METHODS, methods_output)
            content = content.gsub(PACKAGE, @transient_data_api['Package'])
            content = content.gsub(CLASS, clazz)

            Blufin::Files::write_file_java(file, Blufin::Arrays::convert_string_to_line_array(content), nil, false)

        end