Class: Dbsketch::Model::Database_Object
- Inherits:
-
Object
- Object
- Dbsketch::Model::Database_Object
- Defined in:
- lib/dbsketch/model/database_object.rb
Direct Known Subclasses
AbstractColumn, CheckConstraint, CustomCode, ForeignKey, Index, Operation, PrimaryKey, Table, Trigger, UniqueConstraint, View
Instance Attribute Summary collapse
-
#comment ⇒ Object
readonly
Returns the value of attribute comment.
-
#dependencies ⇒ Object
readonly
Returns the value of attribute dependencies.
-
#meaning ⇒ Object
readonly
Returns the value of attribute meaning.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#order ⇒ Object
readonly
Returns the value of attribute order.
Instance Method Summary collapse
- #add_dependencies(dependencies) ⇒ Object
- #class_name ⇒ Object
- #compute_order!(trace = []) ⇒ Object
-
#initialize(name, meaning: nil, comment: nil, dependencies: []) ⇒ Database_Object
constructor
A new instance of Database_Object.
- #inspect ⇒ Object
- #reset_order! ⇒ Object
Constructor Details
#initialize(name, meaning: nil, comment: nil, dependencies: []) ⇒ Database_Object
Returns a new instance of Database_Object.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# 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 |
Instance Attribute Details
#comment ⇒ Object (readonly)
Returns the value of attribute comment.
29 30 31 |
# File 'lib/dbsketch/model/database_object.rb', line 29 def comment @comment end |
#dependencies ⇒ Object (readonly)
Returns the value of attribute dependencies.
29 30 31 |
# File 'lib/dbsketch/model/database_object.rb', line 29 def dependencies @dependencies end |
#meaning ⇒ Object (readonly)
Returns the value of attribute meaning.
29 30 31 |
# File 'lib/dbsketch/model/database_object.rb', line 29 def meaning @meaning end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
29 30 31 |
# File 'lib/dbsketch/model/database_object.rb', line 29 def name @name end |
#order ⇒ Object (readonly)
Returns the value of attribute order.
29 30 31 |
# File 'lib/dbsketch/model/database_object.rb', line 29 def order @order end |
Instance Method Details
#add_dependencies(dependencies) ⇒ Object
31 32 33 34 35 36 37 38 39 |
# 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 ⇒ Object
41 42 43 |
# File 'lib/dbsketch/model/database_object.rb', line 41 def class_name self.class.name.gsub(/^Dbsketch::Model::/, '') end |
#compute_order!(trace = []) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# 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 ⇒ Object
45 46 47 |
# File 'lib/dbsketch/model/database_object.rb', line 45 def inspect "#{self.class_name}:#{object_id} #{@name}" end |
#reset_order! ⇒ Object
49 50 51 |
# File 'lib/dbsketch/model/database_object.rb', line 49 def reset_order! @order = nil end |