class Generic

TODO

Attributes

model[RW]
output[RW]
properties[RW]

Public Class Methods

new(model=nil) click to toggle source
# File lib/kody/engine/generic/generic.rb, line 18
def initialize(model=nil)
        @output = Dir.pwd
        @hash = Hash.new      

        @model = model
        if !model.nil?
                @properties = Properties.load(@output)
                initialize_builders                  
        end
end

Public Instance Methods

generate() click to toggle source
# File lib/kody/engine/generic/generic.rb, line 47
def generate
        @entities.each do |e|                 
                generate_class(e)
        end
end
name() click to toggle source
# File lib/kody/engine/generic/generic.rb, line 39
def name
        return "Generic"
end
version() click to toggle source
# File lib/kody/engine/generic/generic.rb, line 43
def version
        return "1.0"
end

Private Instance Methods

generate_class(clazz) click to toggle source
# File lib/kody/engine/generic/generic.rb, line 97
def generate_class(clazz)

        @hash['class'] = clazz
        generate_classes(clazz)
        generate_dao(clazz)
end
generate_classes(clazz) click to toggle source
# File lib/kody/engine/generic/generic.rb, line 122
def generate_classes(clazz)

        case clazz.stereotype
        when :entity                  
                template = load_template("entity.tpl")
        when :enumeration
                template = load_template("enumeration.tpl")
        else
                return
        end

        @rendered = template.render(@hash)
        path = output + "/src/main/java/" + clazz.package.gsub(".", "/") + "/"        
        file_name = clazz.name + ".java"
        save(@rendered, path, file_name)              
end
initialize_builders() click to toggle source
# File lib/kody/engine/generic/generic.rb, line 54
def initialize_builders
        App.logger.info "Initializing builders..."

        @entities = Array.new
        @enumerations = Array.new

        @model.classes.each do |clazz|
                initialize_class(clazz)
        end           

        App.logger.info "Builders initialized"
end
initialize_class(clazz) click to toggle source
# File lib/kody/engine/generic/generic.rb, line 81
def initialize_class(clazz)
        
        #App.logger.debug "Class: #{clazz.name}"
        class_builder = ClassBuilder.new(clazz, self)

        case class_builder.stereotype
        when :entity
                @entities << class_builder
        when :enumeration
                @enumerations << class_builder
        else
                return
        end           
end
initialize_package(package) click to toggle source
# File lib/kody/engine/generic/generic.rb, line 68
def initialize_package(package)        
        
        #App.logger.debug "Package: #{package.name}"
        package.classes.sort.each do |c|
                initialize_class(c)
        end
        
        package.packages.sort.each do |p|
                initialize_package(p)
        end
end
load_template(template_name) click to toggle source
# File lib/kody/engine/generic/generic.rb, line 105
def load_template(template_name)
        @templates = Hash.new if @templates.nil?
        return @templates[template_name] if !(@templates[template_name]).nil?         

        full_template_name = File.expand_path File.dirname(__FILE__) + "/templates/" + template_name
        arquivo_template = File.read(full_template_name)
        template = Liquid::Template.parse(arquivo_template)
        Liquid::Template.register_filter(TextFilter)

        @templates[template_name] = template

        App.logger.info "Template '#{template_name}' loaded..."

        return template
end
save(content, path, file_name) click to toggle source
# File lib/kody/engine/generic/generic.rb, line 141
def save(content, path, file_name)     
        FileUtils.mkdir_p(path) unless File.exists?(path)
        
        file = File.new("#{path}#{file_name}", "w")
        file.write(content)
        file.close

        App.logger.debug "Template saved in #{path}#{file_name}"
end