class Blufin::YmlJavaMessageTypeWriter

Constants

PACKAGE
PLACEHOLDER_ONE
PLACEHOLDER_TWO
SERVICE

Public Class Methods

new(site) click to toggle source

Initialize the class. @return void

# File lib/core/yml_writers/yml_java_message_type_writer.rb, line 13
        def initialize(site)

            @site          = Blufin::SiteResolver::validate_site(site)
            @site_name     = Blufin::SiteResolver::get_site_name(@site)
            @site_domain   = Blufin::SiteResolver::get_site_domain(@site)
            @site_location = "#{Blufin::SiteResolver::get_site_location(@site)}/"

            @class_name = 'MessageType'

            @filename = "#{get_java_path(@site, nil, SERVICE, PACKAGE)}/#{@class_name}.java"

            # Wipe out previous file (if exists).
            Blufin::Files::delete_file(@filename)

            @template = <<TEMPLATE
package #{PLACEHOLDER_PACKAGE};

import org.blufin.base.interfaces.AbstractMessageType;
import lombok.Getter;

import java.util.HashMap;
import java.util.Map;

public enum #{@class_name} implements AbstractMessageType {

#{PLACEHOLDER_ONE}

    private static final Map<String, #{@class_name}> map = new HashMap<>();

    @Getter
    private String name;

    static {

#{PLACEHOLDER_TWO}
    }

    /**
     * @param name
     */
    #{@class_name}(String name) {

        this.name = name;
    }

    /**
     * Get MessageType by its String representation.
     * @param name
     */
    public static MessageType get(String name) {

        return map.get(name);
    }

    @Override
    public String toString() {

        return name;
    }
}
TEMPLATE

        end

Public Instance Methods

write() click to toggle source

Write the file(s). @return void

# File lib/core/yml_writers/yml_java_message_type_writer.rb, line 79
def write

    ph1 = []
    ph2 = []

    message_types = Blufin::YmlConfigValidator::get_message_types.keys

    # Don't write the class if there are no message types.
    return if message_types.nil? || message_types.length == 0

    message_types.each_with_index do |message_type, idx|
        comma_or_semicolon = (idx == (message_types.length - 1)) ? ';' : ','
        ph1 << "    #{message_type.upcase}(\"#{message_type.upcase}\")#{comma_or_semicolon}"
        ph2 << "        map.put(\"#{message_type.upcase}\", MessageType.#{message_type.upcase});"
    end

    contents = @template
    contents = contents.gsub(PLACEHOLDER_PACKAGE, get_package(@site, nil, PACKAGE, SERVICE))
    contents = contents.gsub(PLACEHOLDER_ONE, Blufin::YmlCommon::convert_line_array_to_string(ph1))
    contents = contents.gsub(PLACEHOLDER_TWO, Blufin::YmlCommon::convert_line_array_to_string(ph2))

    write_file_java(@filename, Blufin::YmlCommon::convert_string_to_line_array(contents))

end