class Dbsketch::Model::Database_Object

Attributes

comment[R]
dependencies[R]
meaning[R]
name[R]
order[R]

Public Class Methods

new(name, meaning: nil, comment: nil, dependencies: []) click to toggle source
# File lib/dbsketch/model/database_object.rb, line 11
def initialize name, meaning: nil, comment: nil, dependencies: []
        dependencies = dependencies.is_a?(Array) ? dependencies : [dependencies]
        ### Preconditions
        raise ArgumentError, "name is not a String" unless name.is_a? String
        raise ModelError, "name (#{name}) shall not contain special chars (apart from underscore)" if name.match(/\W/)
        raise ArgumentError, "meaning is not a String" unless nil == meaning or meaning.is_a? String
        raise ArgumentError, "comment is not a String" unless nil == comment or comment.is_a? String
        dependencies.each_with_index do |d, index|
                raise ArgumentError, "dependencies[#{index}] is not a Dbsketch::Model::Database_Object" unless d.is_a? Database_Object
        end
        ###
        @name = name
        @meaning = meaning
        @comment = comment
        @dependencies = dependencies
        @order = nil
end

Public Instance Methods

add_dependencies(dependencies) click to toggle source
# File lib/dbsketch/model/database_object.rb, line 31
def add_dependencies dependencies
        dependencies = dependencies.is_a?(Array) ? dependencies : [dependencies]
        ### Preconditions
        dependencies.each_with_index do |d, index|
                raise ArgumentError, "dependencies[#{index}] is not a Dbsketch::Model::Database_Object" unless d.is_a? Database_Object
        end
        ###
        @dependencies = (@dependencies.concat(dependencies)).uniq
end
class_name() click to toggle source
# File lib/dbsketch/model/database_object.rb, line 41
def class_name
        self.class.name.gsub(/^Dbsketch::Model::/, '')
end
compute_order!(trace = []) click to toggle source
# File lib/dbsketch/model/database_object.rb, line 53
def compute_order! trace = []
        if nil == @order
                current_trace = trace.clone
                current_trace << self
                if nil != trace.find { |t| t.object_id == self.object_id }
                        raise ModelError, "circular dependencies found. Trace: #{current_trace.map { |t| "#{t.class_name} #{t.name}" }.join(" < ")}"
                end
                if @dependencies.empty?
                        @order = 1
                else
                        @order = @dependencies.map {|d| d.compute_order! current_trace }.max + 1
                end
        end
        @order
end
inspect() click to toggle source
# File lib/dbsketch/model/database_object.rb, line 45
def inspect
        "#{self.class_name}:#{object_id} #{@name}"
end
reset_order!() click to toggle source
# File lib/dbsketch/model/database_object.rb, line 49
def reset_order!
        @order = nil
end