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