Method: ActiveOrient::API#create_classes

Defined in:
lib/jdbc.rb,
lib/java-api.rb

#create_classes(classes, &b) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/jdbc.rb', line 75

def create_classes classes , &b
  consts = allocate_classes_in_ruby( classes , &b )

  all_classes = consts.is_a?( Array) ? consts.flatten : [consts]
  get_database_classes(requery: true)
  selected_classes =  all_classes.map do | this_class |
  this_class unless get_database_classes(requery: false).include?( this_class.ref_name ) rescue nil
  end.compact.uniq
  command= selected_classes.map do | database_class |
  ## improper initialized ActiveOrient::Model-classes lack a ref_name class-variable
  next if database_class.ref_name.blank?  
  c = if database_class.superclass == ActiveOrient::Model || database_class.superclass.ref_name.blank?
   puts "CREATE CLASS #{database_class.ref_name} "
   OClassImpl.create @db, database_class.ref_name 
 else
   puts "CREATE CLASS #{database_class.ref_name} EXTENDS #{database_class.superclass.ref_name}"
   OClassImpl.create @db, superClass: database_class.ref_name 
 end
  end

  # update the internal class hierarchy 
  get_database_classes requery: true
  # return all allocated classes, no matter whether they had to be created in the DB or not.
  #  keep the format of the input-parameter
  consts.shift if block_given? && consts.is_a?( Array) # remove the first element
  # remove traces of superclass-allocations
  if classes.is_a? Hash
  consts =  Hash[ consts ] 
  consts.each_key{ |x| consts[x].delete_if{|y| y == x} if consts[x].is_a? Array  }
  end
  consts
end