Class: Blufin::YmlWriterBase

Inherits:
Object
  • Object
show all
Defined in:
lib/core/yml_writers/yml_writer_base.rb

Constant Summary collapse

PLACEHOLDER_PACKAGE =
'{{--PACKAGE--}}'
PLACEHOLDER_CLASS =
'{{--CLASS--}}'
PLACEHOLDER_SCHEMA =
'{{--SCHEMA--}}'
PLACEHOLDER_IMPORT =
'{{--IMPORT--}}'
AUTO_TYPES =
%w(boolean byte short int long BigDecimal String ZonedDateTime LocalDate)

Instance Method Summary collapse

Instance Method Details

#get_base_path(site) ⇒ Object

Gets the base path for site.

Returns:

  • String


42
43
44
# File 'lib/core/yml_writers/yml_writer_base.rb', line 42

def get_base_path(site)
    "#{Blufin::SiteResolver::get_site_location(site)}"
end

#get_java_path(site, schema, service, package) ⇒ Object

Gets the base path to JAVA.

Returns:

  • String


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/core/yml_writers/yml_writer_base.rb', line 14

def get_java_path(site, schema, service, package)
    schema = '' if schema.nil?
    case service
        when Blufin::SiteServices::API
            path = Blufin::SiteResolver::path_to_java_api(site)
        when Blufin::SiteServices::CRON
            path = Blufin::SiteResolver::path_to_java_cron(site)
        when Blufin::SiteServices::LIB
            path = Blufin::SiteResolver::path_to_java_lib(site)
        when Blufin::SiteServices::SDK_CORE
            path = Blufin::SiteResolver::path_to_java_sdk_core(site)
            return "#{path}/src/main/java/#{Blufin::SiteResolver::get_site_domain(site).gsub('.', '/')}/#{Blufin::SiteResolver::get_site_name(site).gsub('-', '/')}/#{Blufin::SiteServices::SDK}/#{package.gsub('{schema}', schema).gsub('.', '/')}"
        when Blufin::SiteServices::SDK_INTERNAL
            path = Blufin::SiteResolver::path_to_java_sdk_internal(site)
            return "#{path}/src/main/java/#{Blufin::SiteResolver::get_site_domain(site).gsub('.', '/')}/#{Blufin::SiteResolver::get_site_name(site).gsub('-', '/')}/#{Blufin::SiteServices::SDK}/#{package.gsub('{schema}', schema).gsub('.', '/')}"
        when Blufin::SiteServices::SDK_OAUTH
            path = Blufin::SiteResolver::path_to_java_sdk_oauth(site)
            return "#{path}/src/main/java/#{Blufin::SiteResolver::get_site_domain(site).gsub('.', '/')}/#{Blufin::SiteResolver::get_site_name(site).gsub('-', '/')}/#{Blufin::SiteServices::SDK}/#{package.gsub('{schema}', schema).gsub('.', '/')}"
        when Blufin::SiteServices::WORKER
            path = Blufin::SiteResolver::path_to_java_worker(site)
        else
            raise RuntimeError, "Invalid Service: #{service}"
    end
    "#{path}/src/main/java/#{Blufin::SiteResolver::get_site_domain(site).gsub('.', '/')}/#{Blufin::SiteResolver::get_site_name(site).gsub('-', '/')}/#{service}/#{package.gsub('{schema}', schema).gsub('.', '/')}"
end

#get_package(site, schema, package, service) ⇒ Object

Gets the package.

Returns:

  • String


48
49
50
51
52
53
54
55
56
57
# File 'lib/core/yml_writers/yml_writer_base.rb', line 48

def get_package(site, schema, package, service)
    schema      = '' if schema.nil?
    domain      = Blufin::SiteResolver::get_site_domain(site).strip
    domain_gsub = domain == '' ? '' : "#{domain}."
    if [Blufin::SiteServices::SDK_CORE, Blufin::SiteServices::SDK_INTERNAL, Blufin::SiteServices::SDK_OAUTH].include?(service)
        "#{domain_gsub}#{Blufin::SiteResolver::get_site_name(site).gsub('-', '.')}.#{Blufin::SiteServices::SDK}.#{package.gsub('{schema}', schema)}"
    else
        "#{domain_gsub}#{Blufin::SiteResolver::get_site_name(site).gsub('-', '.')}.#{service}.#{package.gsub('{schema}', schema)}"
    end
end

#get_package_from_file(site, file) ⇒ Object

Takes a filename as input and determines the package. Magic.

Returns:

  • String

Raises:

  • (RuntimeError)

61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/core/yml_writers/yml_writer_base.rb', line 61

def get_package_from_file(site, file)
    raise RuntimeError, "Expected String, instead got: #{file.class}" unless file.is_a?(String)
    site        = Blufin::SiteResolver::validate_site(site)
    site_name   = Blufin::SiteResolver::get_site_name(site)
    site_domain = Blufin::SiteResolver::get_site_domain(site)
    begin
        matches    = file.match(/\/#{site_name}-(#{Blufin::SiteServices::REGEX_JAVA})\/src\/(main|test)\/java\/#{site_domain}\/#{site_name.gsub('-', '/')}\//)
        matches    = matches[0].gsub(/\A\//, '').gsub(/\/\z/, '')
        matches    = matches.split('/')
        service    = matches[0]
        split_path = "/#{service}/src/"
        raise RuntimeError, "Unable to find swap_path: #{split_path}" unless file =~ /#{split_path}/
        file_split = file.split(split_path)
        file_split = file_split[1].split('/java/')
        file_split = file_split[1].split('/')
        file_split.pop
        return file_split.join('.')
    rescue => e
        puts e.message
        raise RuntimeError, "Failed to get_package_from_file() with file: #{file}"
    end
end

#write_file_java(path_and_file, contents, is_mock = false) ⇒ Object

Proxy method needed to handle mocks.

Returns:

  • void


86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/core/yml_writers/yml_writer_base.rb', line 86

def write_file_java(path_and_file, contents, is_mock = false)
    all_paths = 'config|dao|dto|enums|field|filter|mapper|metadata|model|refiner|service|sort|validator'
    # This is the "mock interceptor" that writes all the auto-generated mocks.
    if is_mock
        package              = path_and_file =~ /\/sdk/ ? 'sdk' : 'api'
        file                 = File.basename(path_and_file)
        type                 = path_and_file.split('/')
        type                 = type[type.length - 2]
        path                 = "#{Blufin::Config::get_path('Paths', 'BlufinJava')}/blufin-#{package}/src/test/java/org/blufin/mock/#{type}/"
        path_and_file        = "#{path}#{file}"
        contents_intercepted = []
        contents_intercepted = ['import lombok.EqualsAndHashCode;', '@EqualsAndHashCode(callSuper = false)'] if type == 'dto'
        contents.each do |line|
            if line =~ /^package\s+[A-Za-z0-9\.\-_].+(#{all_paths});/
                contents_intercepted << line.gsub(/^package\s+[A-Za-z0-9.\-_].+./, "package org.blufin.mock.#{type};")
            elsif line =~ /^import\s+[A-Za-z0-9\.\-_].+(#{all_paths}).Mock([A-Z][A-Za-z]+)?;/
                import_split = line.split('.')
                contents_intercepted << "import org.blufin.mock.#{import_split[import_split.length - 2]}.#{import_split[import_split.length - 1]}"
            else
                contents_intercepted << line
            end
        end
        contents = contents_intercepted
    end
    Blufin::Files::write_file_java(path_and_file, contents)
end