Class: Blufin::YmlJavaCronTypeWriter

Inherits:
YmlWriterBase show all
Defined in:
lib/core/yml_writers/yml_java_cron_type_writer.rb

Constant Summary collapse

SERVICE =
Blufin::SiteServices::LIB
PACKAGE =
'enums.system'
PLACEHOLDER_ONE =
'{{--PLACEHOLDER-ONE--}}'
PLACEHOLDER_TWO =
'{{--PLACEHOLDER-TWO--}}'

Constants inherited from YmlWriterBase

Blufin::YmlWriterBase::AUTO_TYPES, Blufin::YmlWriterBase::PLACEHOLDER_CLASS, Blufin::YmlWriterBase::PLACEHOLDER_IMPORT, Blufin::YmlWriterBase::PLACEHOLDER_PACKAGE, Blufin::YmlWriterBase::PLACEHOLDER_SCHEMA

Instance Method Summary collapse

Methods inherited from YmlWriterBase

#get_base_path, #get_java_path, #get_package, #get_package_from_file, #write_file_java

Constructor Details

#initialize(site) ⇒ Object

Initialize the class.



13
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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_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

Instance Method Details

#writeObject

Write the file(s).

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
# 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