class Blufin::YmlJavaCronTypeWriter

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_cron_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_domain_gsub = @site_domain.strip == '' ? '' : "#{@site_domain}."
            @site_location    = "#{Blufin::SiteResolver::get_site_location(@site)}/"

            @class_name = 'CronType'

            @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.AbstractCronType;
import #{@site_domain_gsub}#{@site_name.gsub('-', '.')}.lib.enums.system.MessageType;
import lombok.Getter;

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

public enum #{@class_name} implements AbstractCronType {

#{PLACEHOLDER_ONE}

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

    @Getter
    private String name;

    @Getter
    private MessageType messageType;

    static {

#{PLACEHOLDER_TWO}
    }

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

        this.name = name;
        this.messageType = messageType;
    }

    /**
     * Get CronType by its String representation.
     * @param name
     */
    public static CronType 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_cron_type_writer.rb, line 86
def write

    ph1 = []
    ph2 = []

    cron_types = Blufin::YmlConfigValidator::get_cron_types

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

    cron_types.each_with_index do |(key, value), idx|
        comma_or_semicolon = (idx == (cron_types.length - 1)) ? ';' : ','
        ph1 << "    #{key.upcase}(\"#{key.upcase}\", MessageType.#{value[Blufin::YmlConfigValidator::MESSAGE].upcase})#{comma_or_semicolon}"
        ph2 << "        map.put(\"#{key.upcase}\", #{@class_name}.#{key.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