class Blufin::ScannerJavaEnums

Public Class Methods

new(site) click to toggle source

Read all enum values into class variable – shard between instances meaning re-instantiating the class won't require re-scanning enums. @return void

# File lib/core/code_scanners/scanner_java_enums.rb, line 12
def initialize(site)

    @site = Blufin::SiteResolver::validate_site(site)

    unless @@enum_scanned

        directories = %W(
        #{Blufin::SiteResolver::path_to_java_sdk_core(@site)}/src/main/java/#{Blufin::SiteResolver::get_site_domain(@site)}/#{Blufin::SiteResolver::get_site_name(@site)}/sdk/enums
            #{Blufin::SiteResolver::path_to_blufin_java}/blufin-base/src/main/java/#{Blufin::SiteServices::PACKAGE_SYSTEM_ENUMS.gsub('.', '/')}
        )

        directories.each_with_index do |directory_data, idx|

            hash        = {}
            hash_nested = {}

            if Blufin::Files::path_exists(directory_data)

                Blufin::Files::get_files_in_dir(directory_data).each do |file|

                    enum_title  = nil
                    enum_exists = false

                    Blufin::Files::read_file(file).each do |line|

                        # If line matches "public enum XXX {"
                        if enum_exists == false && line.strip =~ /public\s+enum\s+[A-Za-z0-9]+\s*\{/
                            enum_exists             = true
                            enum_title              = line.strip.gsub(/public\s+enum\s+/, '').gsub(/\s*\{/, '')
                            hash[enum_title]        = []
                            hash_nested[enum_title] = (file.gsub(directory_data, '').gsub(/\A\//, '').split('/').length > 1) ? true : false
                        end

                        # Extract ENUM values and put them inside @enum hash.
                        if enum_exists

                            if line.strip =~ /\A[A-Z_]+(\(.*\))*(,|;|)\z/
                                matcher = line.strip.match(/\A[A-Z_]+/)
                                hash[enum_title] << matcher[0]
                            elsif line.strip =~ /\A[A-Z_,\s]+(,|;|)\z/
                                line.strip.split(',').each do |value|
                                    hash[enum_title] << value.strip
                                end
                            end

                        end

                    end

                end

            end

            if idx == 0

                @@enum_auto   = {}
                @@enum_custom = {}

                hash.each do |key, value|
                    if hash_nested[key]
                        @@enum_auto[key] = value
                    else
                        @@enum_custom[key] = value
                    end
                end

            elsif idx == 1
                @@enum_system = hash
            end

        end

        @@enum_scanned = true

    end

end

Public Instance Methods

get_auto_enums() click to toggle source

Returns a Hash with all of the Auto-generated ENUM data. @return Hash

# File lib/core/code_scanners/scanner_java_enums.rb, line 107
def get_auto_enums
    @@enum_auto
end
get_custom_enums() click to toggle source

Returns a Hash with all of the Custom ENUM data. @return Hash

# File lib/core/code_scanners/scanner_java_enums.rb, line 113
def get_custom_enums
    @@enum_custom
end
get_enum_custom_values_for(enum_name) click to toggle source

Returns CUSTOM enum values as Array. @return Array

# File lib/core/code_scanners/scanner_java_enums.rb, line 92
def get_enum_custom_values_for(enum_name)
    raise RuntimeError, "#{enum_name} has not been found to be a CUSTOM_ENUM" unless @@enum_custom.has_key?(enum_name)
    @@enum_custom[enum_name]

end
get_enum_system_values_for(enum_name) click to toggle source

Returns SYSTEM enum values as Array. @return Array

# File lib/core/code_scanners/scanner_java_enums.rb, line 100
def get_enum_system_values_for(enum_name)
    raise RuntimeError, "#{enum_name} has not been found to be a SYSTEM_ENUM" unless @@enum_system.has_key?(enum_name)
    @@enum_system[enum_name]
end
get_system_enums() click to toggle source

Returns a Hash with all of the System ENUM data. @return Hash

# File lib/core/code_scanners/scanner_java_enums.rb, line 119
def get_system_enums
    @@enum_system
end