Top Level Namespace

Defined Under Namespace

Classes: EClassClassAdapter, EClassClassMethodAdapter, EClassFieldAdapter

Constant Summary collapse

EObject =
org.eclipse.emf.ecore.EObject
JavaResource =
org.emftext.language.java.resource.java.mopp.JavaResource
JavaResourceUtil =
org.emftext.language.java.resource.java.util.JavaResourceUtil
EcoreUtil =
org.eclipse.emf.ecore.util.EcoreUtil
IJavaOptions =
org.emftext.language.java.resource.java.IJavaOptions

Instance Method Summary collapse

Instance Method Details

#all_deep_content(root) ⇒ Object



41
42
43
44
45
46
47
48
# File 'lib/java_model/java_to_json.rb', line 41

def all_deep_content(root)
  contents = []
  all_direct_content(root).each do |c|
    contents << c
    contents.concat(all_deep_content(c))
  end
  contents
end

#all_direct_content(root) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/java_model/java_to_json.rb', line 24

def all_direct_content(root)
  contents = []
  root.keys.each do |k|
    if k.start_with? 'relcont_' and root[k]
      #puts "Considering rel #{k} = #{root[k]}"

      if root[k].is_a? Array 
        root[k].each do |c|
          contents << c
        end
      else
        contents << root[k]
      end
    end
  end
  contents
end

#create_resource_setObject



7
8
9
10
11
12
13
# File 'lib/java_model/java_to_json.rb', line 7

def create_resource_set()
  resource_set = org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.new
  resource_set.getLoadOptions.put(IJavaOptions.DISABLE_LAYOUT_INFORMATION_RECORDING,true)
  rf = org.emftext.language.java.resource.java.mopp.JavaResourceFactory.new
  resource_set.getResourceFactoryRegistry.getExtensionToFactoryMap.put('java',rf)
  resource_set
end

#eobject_class_qname(clazz) ⇒ Object



19
20
21
22
# File 'lib/java_model/java_to_json.rb', line 19

def eobject_class_qname(clazz)
  raise "not implemented (ParentConcreteClassifier: #{clazz.getParentConcreteClassifier}" if clazz.getParentConcreteClassifier!=clazz
  clazz.getContainingPackageName.join('.')+"."+clazz.name
end

#field_from_getter(getter) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/java_model/java_to_json.rb', line 81

def field_from_getter(getter)
  if (getter.name.start_with? 'get' and getter.name.length>3) or (getter.name.start_with? 'is' and getter.name.length>2)
    field_name = getter.name.slice(3,1).downcase + getter.name.slice(4..-1) if getter.name.start_with? 'get'
    field_name = getter.name.slice(2,1).downcase + getter.name.slice(3..-1) if getter.name.start_with? 'is'
    #puts "Field name for getter #{getter.name} #{field_name}"

    fields = getter.eContainer.members.select {|m| m.java_kind_of? org.emftext.language.java.members.Field}
    field = fields.find {|f| f.name==field_name}
    return field
  else
    return nil
  end  
end

#field_from_setter(setter) ⇒ Object



94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/java_model/java_to_json.rb', line 94

def field_from_setter(setter)
  if setter.name.start_with? 'set' and setter.name.length>3
    field_name = setter.name.slice(3,1).downcase + setter.name.slice(4..-1) if setter.name.start_with? 'set'
    #field_name = getter.name.slice(2,1).downcase + getter.name.slice(3..-1) if getter.name.start_with? 'is'

    #puts "Field name for getter #{getter.name} #{field_name}"

    fields = setter.eContainer.members.select {|m| m.java_kind_of? org.emftext.language.java.members.Field}
    field = fields.find {|f| f.name==field_name}
    return field
  else
    return nil
  end  
end

#get_deep_content_of_type(root, type) ⇒ Object



50
51
52
# File 'lib/java_model/java_to_json.rb', line 50

def get_deep_content_of_type(root,type)
  all_deep_content(root).select {|o| o['type']==type}
end

#get_resource(resource_set, path) ⇒ Object



15
16
17
# File 'lib/java_model/java_to_json.rb', line 15

def get_resource(resource_set,path)
  resource_set.getResource(org.eclipse.emf.common.util.URI.createFileURI(path),true)
end

#get_specific_deep_content(root, type, &block) ⇒ Object



54
55
56
# File 'lib/java_model/java_to_json.rb', line 54

def get_specific_deep_content(root,type,&block)
  get_deep_content_of_type(root,type).find &block
end

#getter(field) ⇒ Object



66
67
68
69
70
71
72
# File 'lib/java_model/java_to_json.rb', line 66

def getter(field)
  getter_nb_name = 'get' + field.name.slice(0,1).capitalize + field.name.slice(1..-1)
  getter_b_name  = 'is' + field.name.slice(0,1).capitalize + field.name.slice(1..-1)
  methods = field.eContainer.members.select {|m| m.java_kind_of? org.emftext.language.java.members.ClassMethod}
  getter = methods.find {|m| m.name==getter_b_name or m.name==getter_nb_name}
  getter
end

#jsonize_java_obj(root) ⇒ Object



133
134
135
136
137
138
# File 'lib/java_model/java_to_json.rb', line 133

def jsonize_java_obj(root)
  jsonize_obj(root,{
    'http://www.emftext.org/java/classifiers#Class'=> EClassClassAdapter.new,
    'http://www.emftext.org/java/members#ClassMethod'=> EClassClassMethodAdapter.new,
    'http://www.emftext.org/java/members#Field'=> EClassFieldAdapter.new})
end

#setter(field) ⇒ Object



74
75
76
77
78
79
# File 'lib/java_model/java_to_json.rb', line 74

def setter(field)
  setter_name = 'set' + field.name.slice(0,1).capitalize + field.name.slice(1..-1)
  methods = field.eContainer.members.select {|m| m.java_kind_of? org.emftext.language.java.members.ClassMethod}
  setter = methods.find {|m| m.name==setter_name}
  setter
end

#translate_dir(src, dest, src_extension, dest_extension, &translate_file) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/java_model/generate.rb', line 26

def translate_dir(src,dest,src_extension,dest_extension,&translate_file)
  puts "== #{src} -> #{dest} ==" if $VERBOSE
  Dir["#{src}/*"].each do |fd|   
    if File.directory? fd
      basename = File.basename(fd)
      translate_dir("#{src}/#{basename}","#{dest}/#{basename}",src_extension,dest_extension,&translate_file)
    else
      if File.extname(fd)==".#{src_extension}"
        translated_simple_name = "#{File.basename(fd, ".#{src_extension}")}.#{dest_extension}"
        translated_name = "#{dest}/#{translated_simple_name}"
        puts "* #{fd} --> #{translated_name}" if $VERBOSE
        translate_file.call(fd,translated_name)
      end
    end
  end
end