luruju 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. data/Rakefile +1 -4
  2. data/lib/luruju.rb +15 -7
  3. data/lib/luruju/customize_inflector.rb +3 -0
  4. data/lib/luruju/dynamic_method.rb +5 -11
  5. data/lib/luruju/easy_breakpoint.rb +22 -0
  6. data/lib/luruju/jude_api/add_dynamic_method.rb +49 -0
  7. data/lib/luruju/jude_api/add_method.rb +52 -0
  8. data/lib/luruju/jude_api/jude_base.rb +2 -0
  9. data/lib/luruju/jude_api_loader.rb +164 -0
  10. data/lib/luruju/version.rb +2 -2
  11. data/test/abstract_unit.rb +26 -5
  12. data/test/er_diagram_test.rb +466 -0
  13. data/test/jude/{model001.jude → community-5.0.2/class_diagram/model001.jude} +0 -0
  14. data/test/jude/{model002.jude → community-5.0.2/class_diagram/model002.jude} +0 -0
  15. data/test/jude/{model003.jude → community-5.0.2/class_diagram/model003.jude} +0 -0
  16. data/test/jude/{model004.jude → community-5.0.2/class_diagram/model004.jude} +0 -0
  17. data/test/jude/{model005.jude → community-5.0.2/class_diagram/model005.jude} +0 -0
  18. data/test/jude/{model006.jude → community-5.0.2/class_diagram/model006.jude} +0 -0
  19. data/test/jude/{model007.jude → community-5.0.2/class_diagram/model007.jude} +0 -0
  20. data/test/jude/{model008.jude → community-5.0.2/class_diagram/model008.jude} +0 -0
  21. data/test/jude/{model009.jude → community-5.0.2/class_diagram/model009.jude} +0 -0
  22. data/test/jude/{model010.jude → community-5.0.2/class_diagram/model010.jude} +0 -0
  23. data/test/jude/{model011.jude → community-5.0.2/class_diagram/model011.jude} +0 -0
  24. data/test/jude/{model012.jude → community-5.0.2/class_diagram/model012.jude} +0 -0
  25. data/test/jude/{model013.jude → community-5.0.2/class_diagram/model013.jude} +0 -0
  26. data/test/jude/professional-5.1/class_diagram/model001.jude +0 -0
  27. data/test/jude/professional-5.1/class_diagram/model002.jude +0 -0
  28. data/test/jude/professional-5.1/class_diagram/model003.jude +0 -0
  29. data/test/jude/professional-5.1/class_diagram/model004.jude +0 -0
  30. data/test/jude/professional-5.1/class_diagram/model005.jude +0 -0
  31. data/test/jude/professional-5.1/class_diagram/model006.jude +0 -0
  32. data/test/jude/professional-5.1/class_diagram/model007.jude +0 -0
  33. data/test/jude/professional-5.1/class_diagram/model008.jude +0 -0
  34. data/test/jude/professional-5.1/class_diagram/model009.jude +0 -0
  35. data/test/jude/professional-5.1/class_diagram/model010.jude +0 -0
  36. data/test/jude/professional-5.1/class_diagram/model011.jude +0 -0
  37. data/test/jude/professional-5.1/class_diagram/model012.jude +0 -0
  38. data/test/jude/professional-5.1/class_diagram/model013.jude +0 -0
  39. data/test/jude/professional-5.1/er_diagram/er001.jude +0 -0
  40. data/test/jude/professional-5.1/er_diagram/er002.jude +0 -0
  41. data/test/jude/professional-5.1/er_diagram/er003.jude +0 -0
  42. data/test/jude/professional-5.1/er_diagram/er004.jude +0 -0
  43. data/test/jude/professional-5.1/er_diagram/er005.jude +0 -0
  44. data/test/jude/professional-5.1/er_diagram/er006.jude +0 -0
  45. data/test/jude/professional-5.1/er_diagram/er007.jude +0 -0
  46. data/test/jude/professional-5.1/er_diagram/er008.jude +0 -0
  47. data/test/jude/professional-5.1/er_diagram/er009.jude +0 -0
  48. data/test/jude_api_test.rb +3 -1
  49. metadata +93 -56
  50. data/lib/luruju/add_useful_method.rb +0 -36
  51. data/lib/luruju/jude_api.rb +0 -134
  52. data/test/jude/model013.jude.bak +0 -0
@@ -2,7 +2,9 @@ $:.unshift(File.dirname(__FILE__))
2
2
  require 'abstract_unit'
3
3
 
4
4
 
5
- class JudeTest < Test::Unit::TestCase
5
+ class ClassDiagramTest < Test::Unit::TestCase
6
+
7
+ test_jude_model_dir :class_diagram
6
8
 
7
9
  def setup
8
10
  super
metadata CHANGED
@@ -1,73 +1,110 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.2
3
+ specification_version: 1
4
+ name: luruju
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.1.0
7
+ date: 2007-12-31 00:00:00 +09:00
8
+ summary: A library for coordinating with Ruby And JUDE.
9
+ require_paths:
10
+ - lib
11
+ email:
2
12
  homepage: http://luruju.com
3
- extensions: []
4
- executables: []
5
- version: !ruby/object:Gem::Version
6
- version: 0.0.1
13
+ rubyforge_project: luruju
14
+ description:
15
+ autorequire: luruju
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: false
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
7
28
  post_install_message:
8
- date: 2007-10-06 15:00:00 +00:00
29
+ authors:
30
+ - Shuhei Nomura
9
31
  files:
10
32
  - LICENSE
11
33
  - Rakefile
12
34
  - lib/luruju
13
- - lib/luruju.rb
14
- - lib/luruju/add_useful_method.rb
35
+ - lib/luruju/customize_inflector.rb
15
36
  - lib/luruju/dynamic_method.rb
16
- - lib/luruju/jude_api.rb
37
+ - lib/luruju/easy_breakpoint.rb
38
+ - lib/luruju/jude_api
39
+ - lib/luruju/jude_api/add_dynamic_method.rb
40
+ - lib/luruju/jude_api/add_method.rb
41
+ - lib/luruju/jude_api/jude_base.rb
42
+ - lib/luruju/jude_api_loader.rb
17
43
  - lib/luruju/version.rb
44
+ - lib/luruju.rb
18
45
  - test/abstract_unit.rb
46
+ - test/er_diagram_test.rb
19
47
  - test/jude
48
+ - test/jude/community-5.0.2
49
+ - test/jude/community-5.0.2/class_diagram
50
+ - test/jude/community-5.0.2/class_diagram/model001.jude
51
+ - test/jude/community-5.0.2/class_diagram/model002.jude
52
+ - test/jude/community-5.0.2/class_diagram/model003.jude
53
+ - test/jude/community-5.0.2/class_diagram/model004.jude
54
+ - test/jude/community-5.0.2/class_diagram/model005.jude
55
+ - test/jude/community-5.0.2/class_diagram/model006.jude
56
+ - test/jude/community-5.0.2/class_diagram/model007.jude
57
+ - test/jude/community-5.0.2/class_diagram/model008.jude
58
+ - test/jude/community-5.0.2/class_diagram/model009.jude
59
+ - test/jude/community-5.0.2/class_diagram/model010.jude
60
+ - test/jude/community-5.0.2/class_diagram/model011.jude
61
+ - test/jude/community-5.0.2/class_diagram/model012.jude
62
+ - test/jude/community-5.0.2/class_diagram/model013.jude
63
+ - test/jude/professional-5.1
64
+ - test/jude/professional-5.1/class_diagram
65
+ - test/jude/professional-5.1/class_diagram/model001.jude
66
+ - test/jude/professional-5.1/class_diagram/model002.jude
67
+ - test/jude/professional-5.1/class_diagram/model003.jude
68
+ - test/jude/professional-5.1/class_diagram/model004.jude
69
+ - test/jude/professional-5.1/class_diagram/model005.jude
70
+ - test/jude/professional-5.1/class_diagram/model006.jude
71
+ - test/jude/professional-5.1/class_diagram/model007.jude
72
+ - test/jude/professional-5.1/class_diagram/model008.jude
73
+ - test/jude/professional-5.1/class_diagram/model009.jude
74
+ - test/jude/professional-5.1/class_diagram/model010.jude
75
+ - test/jude/professional-5.1/class_diagram/model011.jude
76
+ - test/jude/professional-5.1/class_diagram/model012.jude
77
+ - test/jude/professional-5.1/class_diagram/model013.jude
78
+ - test/jude/professional-5.1/er_diagram
79
+ - test/jude/professional-5.1/er_diagram/er001.jude
80
+ - test/jude/professional-5.1/er_diagram/er002.jude
81
+ - test/jude/professional-5.1/er_diagram/er003.jude
82
+ - test/jude/professional-5.1/er_diagram/er004.jude
83
+ - test/jude/professional-5.1/er_diagram/er005.jude
84
+ - test/jude/professional-5.1/er_diagram/er006.jude
85
+ - test/jude/professional-5.1/er_diagram/er007.jude
86
+ - test/jude/professional-5.1/er_diagram/er008.jude
87
+ - test/jude/professional-5.1/er_diagram/er009.jude
20
88
  - test/jude_api_test.rb
21
- - test/jude/model001.jude
22
- - test/jude/model002.jude
23
- - test/jude/model003.jude
24
- - test/jude/model004.jude
25
- - test/jude/model005.jude
26
- - test/jude/model006.jude
27
- - test/jude/model007.jude
28
- - test/jude/model008.jude
29
- - test/jude/model009.jude
30
- - test/jude/model010.jude
31
- - test/jude/model011.jude
32
- - test/jude/model012.jude
33
- - test/jude/model013.jude
34
- - test/jude/model013.jude.bak
35
- rubygems_version: 0.9.4
36
- rdoc_options: []
37
- signing_key:
38
- cert_chain:
39
- name: luruju
40
- has_rdoc: false
41
- platform: ruby
42
- summary: A library for coordinating with Ruby And JUDE.
43
- default_executable:
44
- bindir: bin
45
- required_ruby_version: !ruby/object:Gem::Version::Requirement
46
- version:
47
- requirements:
48
- - - '>'
49
- - !ruby/object:Gem::Version
50
- version: 0.0.0
51
- require_paths:
52
- - lib
53
- specification_version: 1
54
89
  test_files: []
90
+
91
+ rdoc_options: []
92
+
93
+ extra_rdoc_files: []
94
+
95
+ executables: []
96
+
97
+ extensions: []
98
+
99
+ requirements:
100
+ - JUDE Community
55
101
  dependencies:
56
- - !ruby/object:Gem::Dependency
102
+ - !ruby/object:Gem::Dependency
57
103
  name: activesupport
58
104
  version_requirement:
59
- version_requirements: !ruby/object:Gem::Version::Requirement
60
- version:
105
+ version_requirements: !ruby/object:Gem::Version::Requirement
61
106
  requirements:
62
- - - !str =
63
- - !ruby/object:Gem::Version
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
64
109
  version: 1.4.2
65
- description:
66
- authors:
67
- - Shuhei Nomura
68
- email:
69
- extra_rdoc_files: []
70
- requirements:
71
- - JUDE Community
72
- rubyforge_project: luruju
73
- autorequire: luruju
110
+ version:
@@ -1,36 +0,0 @@
1
-
2
- module Luruju
3
-
4
- module JudeApi
5
-
6
- class JudeBase
7
-
8
- include DynamicMethod
9
-
10
- def dyna_01_select_XXXs_by_YYY(method, *args)
11
- raise IsNotMyRole unless /^(find_all|select)_(.+?)_by_(.+?)$/ =~ method.to_s
12
- a_getter, attr, param = $2, $3, args[0]
13
- raise IsNotMyRole unless self.class.method_defined?(a_getter)
14
- ope = param.instance_of?(Regexp) ? "=~" : "=="
15
- instance_eval("#{a_getter}.select{|i|i.#{attr} #{ope} param}");
16
- end
17
-
18
- def dyna_02_find_XXX_by_YYY(method, *args)
19
- raise IsNotMyRole unless /^find_(.+?)_by_(.+?)$/ =~ method.to_s
20
- clazz, attr, param = $1, $2, args[0]
21
- a_getter = Inflector.pluralize(clazz)
22
- ope = param.instance_of?(Regexp) ? "=~" : "=="
23
- instance_eval("#{a_getter}.find{|i|i.#{attr} #{ope} param}");
24
- end
25
-
26
- def dyna_children_access(method, *args)
27
- raise IsNotMyRole unless self.class.method_defined?(:owned_elements)
28
- api_name = "Jude" + Inflector.classify(method.to_s)
29
- raise IsNotMyRole unless JudeApi.constants.include?(api_name)
30
- owned_elements.select{|p| p.instance_of?(JudeApi.module_eval(api_name))}
31
- end
32
-
33
- end
34
- end
35
-
36
- end
@@ -1,134 +0,0 @@
1
-
2
- require 'java'
3
-
4
- module Luruju
5
-
6
- JUDEAPI_PHEAD = 'com.change_vision.jude.api.inf'
7
-
8
- class JudeApiLoader
9
-
10
- include_class("#{JUDEAPI_PHEAD}.project.ProjectAccessorFactory")
11
-
12
- def self.load(jude_file)
13
- project_accessor = ProjectAccessorFactory.getProjectAccessor
14
- begin
15
- project_accessor.open(jude_file)
16
- getter = project_accessor.getClass.getDeclaredMethod("getProject", nil)
17
- return JudeApiBuilder.new.build(project_accessor, getter)
18
- ensure
19
- project_accessor.close
20
- end
21
- end
22
- end
23
-
24
- class JudeApiBuilder
25
-
26
- CLASS_DEFAULT_METHODS = Class.methods.clone
27
-
28
- def initialize
29
- @already_builded = Hash.new
30
- end
31
-
32
- def build(java_parent, java_getter)
33
- begin
34
- java_obj = java_parent.send(java_getter.getName)
35
- rescue NativeException => e
36
- # p "Warning(#{__FILE__},#{__LINE__}) " + java_getter.getName
37
- end
38
-
39
- return nil if java_obj == nil
40
-
41
- java_return_class = java_getter.getReturnType
42
-
43
- if is_jude_class?(java_return_class)
44
- return build_judeapi(java_obj, java_return_class)
45
- elsif java_return_class.isArray
46
- return build_array(java_obj, java_getter)
47
- else
48
- return java_obj
49
- end
50
- end
51
-
52
- def build_array(java_obj, java_getter)
53
-
54
- comp_type = java_getter.getReturnType.getComponentType
55
-
56
- if is_jude_class?(comp_type)
57
- jude_objects = Array.new
58
- java_obj.each {|i| jude_objects << build_judeapi(i, comp_type) }
59
- return jude_objects
60
- else
61
- return java_obj.to_a
62
- end
63
- end
64
-
65
- def build_judeapi(jude_obj, jude_class)
66
-
67
- if is_jude_named_element?(jude_obj) and @already_builded.key?(jude_obj.getId)
68
- return @already_builded[jude_obj.getId]
69
- end
70
-
71
- raise "UnExpected." + jude_obj.getClass if jude_obj.getClass.getInterfaces.length > 1
72
-
73
- interface = jude_obj.getClass.getInterfaces[0]
74
- judeapi_class = define_judeapi_class(interface)
75
- judeapi_obj = judeapi_class.new
76
-
77
- @already_builded[jude_obj.getId] = judeapi_obj if is_jude_named_element?(jude_obj)
78
-
79
- interface.getMethods.each { |java_method|
80
- setter_name = define_judeapi_method(judeapi_class, java_method)
81
- judeapi_obj.send(setter_name, build(jude_obj, java_method))
82
- }
83
- return judeapi_obj
84
- end
85
-
86
- def define_judeapi_method(judeapi_class, java_method)
87
-
88
- java_method_name = java_method.getName
89
- attr_name =java_method_name.sub(/^(get)/,'')
90
- attr_name = Inflector.underscore(attr_name)
91
- getter_name = attr_name.clone
92
- getter_name << "?" if java_method_name.match(/^is/)
93
- setter_name = attr_name + "="
94
- return setter_name if judeapi_class.method_defined?(setter_name)
95
-
96
- statement = String.new
97
- statement << "def #{getter_name}() @#{attr_name} end\n"
98
- statement << "def #{setter_name}(#{attr_name}) @#{attr_name}=#{attr_name} end\n"
99
- judeapi_class.class_eval(statement)
100
- return setter_name
101
-
102
- end
103
-
104
- def is_jude_class?(java_class)
105
- java_class.getName.index(JUDEAPI_PHEAD) == 0
106
- end
107
-
108
- def is_jude_named_element?(jude_obj)
109
- jude_obj.getClass.getMethod("getId", nil)
110
- return true
111
- rescue java.lang.NoSuchMethodException =>e
112
- return false
113
- end
114
-
115
- def define_judeapi_class(java_class)
116
- java_class_name = java_class.getSimpleName
117
- judeapi_class_name = "Jude" + java_class_name.sub(/^I/,'')
118
- if JudeApi.const_defined?(judeapi_class_name)
119
- return JudeApi.module_eval(judeapi_class_name)
120
- end
121
-
122
- JudeApi.module_eval("class #{judeapi_class_name} < JudeBase ; end")
123
- judeapi_class = JudeApi.module_eval(judeapi_class_name)
124
- java_class.getDeclaredFields.each do |p|
125
- const_name = p.getName
126
- const_value = p.get(nil)
127
- judeapi_class.class_eval("#{const_name} = #{const_value}")
128
- end
129
- return judeapi_class
130
- end
131
-
132
- end
133
-
134
- end
Binary file