Class: ActiveDocumentum::Schema

Inherits:
Object
  • Object
show all
Includes:
Support
Defined in:
lib/active_documentum/schema.rb

Constant Summary collapse

@@sc =
nil
@@schema =
nil

Instance Method Summary collapse

Methods included from Support

#camelize, #clean, #decamelize

Constructor Details

#initializeSchema

Returns a new instance of Schema.



8
9
10
11
12
# File 'lib/active_documentum/schema.rb', line 8

def initialize
  @@sc ||= ActiveDocumentum::SchemaClient.new
  @@schema ||= @@sc.schema_info
  @base_dir = "tmp/types/" #TODO find better way of doing this
end

Instance Method Details

#loadObject



31
32
33
34
35
# File 'lib/active_documentum/schema.rb', line 31

def load
  @@schema[:types].each do |name|
    load_type(name)
  end
end

#load_type(type_name) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/active_documentum/schema.rb', line 14

def load_type(type_name)
  file_name = @base_dir + type_name + '.rb'
  unless File.exists?(file_name)
    type = @@sc.type_info(type_name) 
    parent_name = camelize(type[:parent_name]) unless type[:parent_name].empty?
    parent_name ||= "ActiveDocumentum::Base"
    class_def = "class #{camelize(type_name)} < #{parent_name}\n"
    type[:properties].each do |property|
    class_def += "# #{property[:name]} => #{property.inspect}\n"
    end
    class_def += "end"
    FileUtils.mkdir_p(@base_dir)
    File.open(file_name, 'w') {|f| f.puts class_def }
  end
  autoload camelize(type_name).intern, file_name
end