ontomde-java 2.0.0 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. data/History.txt +11 -0
  2. data/Manifest.txt +1 -51
  3. data/lib/ontomde-java.rb +2 -0
  4. data/lib/ontomde-java/crank.rb +8 -8
  5. data/lib/ontomde-java/crank/crankJpa.rb +58 -8
  6. data/lib/ontomde-java/crank/main.rb +38 -21
  7. data/lib/ontomde-java/frontend/command.rb +7 -7
  8. data/lib/ontomde-java/frontend/command.rdoc +0 -583
  9. data/lib/ontomde-java/frontend/defaultOptions.rb +12 -7
  10. data/lib/ontomde-java/frontend/options.rb +19 -2
  11. data/lib/ontomde-java/frontend/steps.rb +36 -5
  12. data/lib/ontomde-java/java/accessorCode.rb +250 -94
  13. data/lib/ontomde-java/java/accessorSignature.rb +50 -4
  14. data/lib/ontomde-java/java/annotationOntoMDE.rb +38 -27
  15. data/lib/ontomde-java/java/component.rb +141 -68
  16. data/lib/ontomde-java/java/enumAssignable.rb +46 -5
  17. data/lib/ontomde-java/java/java.rb +111 -40
  18. data/lib/ontomde-java/java/javaDatatypeMapping.rb +35 -1
  19. data/lib/ontomde-java/java/javadoc.rb +35 -22
  20. data/lib/ontomde-java/java/operationAsClass.rb +13 -0
  21. data/lib/ontomde-java/java/security.rb +10 -2
  22. data/lib/ontomde-java/java/stateMachine.rb +137 -74
  23. data/lib/ontomde-java/java/tenant.rb +1 -0
  24. data/lib/ontomde-java/java/xsd.rb +1 -1
  25. data/lib/ontomde-java/jpa/configuration.rb +25 -1
  26. data/lib/ontomde-java/jpa/finder.rb +48 -13
  27. data/lib/ontomde-java/jpa/jpa.rb +30 -14
  28. data/lib/ontomde-java/jpa/mapping.rb +114 -60
  29. data/lib/ontomde-java/jpa/redefined.rb +21 -5
  30. data/lib/ontomde-java/jpa/simulationAutoImplement.rb +1 -1
  31. data/lib/ontomde-java/jpdl/processOperationToClass.rb +1 -2
  32. data/lib/ontomde-java/kbjava/rdfToJava.rb +25 -16
  33. data/lib/ontomde-java/struts.rb +1 -1
  34. data/lib/ontomde-java/struts/MessageResources.rb +15 -6
  35. data/lib/ontomde-java/struts/action.rb +37 -13
  36. data/lib/ontomde-java/struts/form.rb +97 -7
  37. data/lib/ontomde-java/struts/header.rb +7 -3
  38. data/lib/ontomde-java/struts/jsp_edit.rb +54 -24
  39. data/lib/ontomde-java/struts/jsp_edit_js.rb +1 -1
  40. data/lib/ontomde-java/struts/jsp_index.rb +6 -4
  41. data/lib/ontomde-java/struts/mappingForJsp.rb +11 -7
  42. data/lib/ontomde-java/struts/mappingToJavaHierarchy.rb +16 -2
  43. data/lib/ontomde-java/version.rb +1 -1
  44. data/lib/ontomde-java/vmware/vso.rb +329 -0
  45. data/test/test_export_ea7_1_829.rb +5 -0
  46. data/test/test_export_ea7_1_833.rb +5 -0
  47. data/test/test_export_ea7_5_843.rb +5 -0
  48. data/test/test_export_magicDraw.rb +4 -0
  49. data/test/test_export_oe530.rb +1 -1
  50. data/test/test_export_oe600.rb +1 -1
  51. data/test/test_export_rsm60.rb +1 -1
  52. data/test/{uml_test.rb → test_export_unitTests.rb} +6 -1
  53. metadata +9 -56
  54. data/generateRdocFile.sh +0 -16
  55. data/profiling.xls +0 -0
  56. data/test/.classpath +0 -14
  57. data/test/.project +0 -17
  58. data/test/.settings/org.eclipse.jdt.core.prefs +0 -23
  59. data/test/Rakefile +0 -71
  60. data/test/build.xml +0 -34
  61. data/test/classpath.rb +0 -15
  62. data/test/lib/junit-4.1.jar +0 -0
  63. data/test/load1.rb +0 -3
  64. data/test/load2.rb +0 -3
  65. data/test/log4j.properties +0 -46
  66. data/test/model/.project +0 -11
  67. data/test/model/BigProject.mdzip +0 -0
  68. data/test/model/BigProject.mdzip.nt +0 -102866
  69. data/test/model/ClassDiagram.EntArch.gif +0 -0
  70. data/test/model/ClassDiagram.emx.gif +0 -0
  71. data/test/model/ClassDiagram.mdzip.gif +0 -0
  72. data/test/model/model_ea71.bis.ea.xmi +0 -149
  73. data/test/model/model_ea71.ea.xmi +0 -4470
  74. data/test/model/model_ea71.eap +0 -0
  75. data/test/model/model_ea71_README.txt +0 -8
  76. data/test/model/multipleInheritance.emx +0 -466
  77. data/test/model/multipleInheritance.emx.nt +0 -2428
  78. data/test/model/simple1-530.ofp +0 -0
  79. data/test/model/simple1-includedAsReference.emx +0 -169
  80. data/test/model/simple1.emx +0 -3729
  81. data/test/model/simple1.emx.fragments.nt +0 -81
  82. data/test/model/simple1.emx.nt +0 -5760
  83. data/test/model/simple1.mdzip +0 -0
  84. data/test/model/simple1.mdzip.nt +0 -11500
  85. data/test/model/simple1.oe530.nt +0 -1986
  86. data/test/model/simple1.oe600.nt +0 -1627
  87. data/test/src/RuntimeTest.java +0 -656
  88. data/test/src/testsLevel1.java +0 -174
  89. data/test/src/testsLevel2.java +0 -29
  90. data/test/src/testsLevel3.java +0 -40
  91. data/test/test-ea7.sh +0 -15
  92. data/test/test-magicDraw.sh +0 -10
  93. data/test/test-mi.sh +0 -9
  94. data/test/test-oe530.sh +0 -10
  95. data/test/test-oe600.sh +0 -11
  96. data/test/test-rsm.sh +0 -11
  97. data/test/test_export_ea71.rb +0 -5
  98. data/test/trace +0 -419
  99. data/test/uml_test.xls +0 -0
  100. data/test/unit_test.rb +0 -6
@@ -1,11 +1,11 @@
1
1
 
2
2
  module Mrdf_Repository
3
- def struts_header_generate
3
+ def struts_header_generate(element=nil)
4
4
  write <<END
5
5
  <%-- ******** ENTETE ****************** --%>
6
6
  <div class="cadre">
7
7
  <div class="AgLeft">
8
- <a href="https://rubyforge.org/">
8
+ <a href="http://ontomde.rubyforge.org/">
9
9
  <img src="#{css_path_model}/#{css_color_class}/image/logoMDE.gif" border="0" alt="Home"/>
10
10
  </a>
11
11
  </div>
@@ -22,6 +22,10 @@ module Mrdf_Repository
22
22
  <a href="#">
23
23
  <img src="#{css_path_model}/#{css_color_class}/image/btnHelp.gif" width="25" height="25" border="0" alt="Help"/>
24
24
  </a>
25
+
26
+ #{(element.nil? || context[:rsm6WebDocURI].empty?) ? "" :
27
+ %{<a target="rsm6doc" href="#{context[:rsm6WebDocURI]}/content/#{UriNamespace.instance.unalias(element.umlx_owner_one.rdf_uri).gsub(/http:\/\/kb#/,"")}-content.html"><img src="#{css_path_model}/#{css_color_class}/image/rsm6.gif" width="25" height="25" border="0" alt="Help"/></a>}
28
+ }
25
29
  </div>
26
30
  </div>
27
31
  <%-- ******** USER CONTEXT ************* --%>
@@ -31,7 +35,7 @@ end
31
35
 
32
36
  module Muml_Class
33
37
  def struts_header_generate
34
- self.rdf_Repository.struts_header_generate;
38
+ self.rdf_Repository.struts_header_generate(self);
35
39
  return
36
40
  end
37
41
  end
@@ -16,6 +16,14 @@
16
16
  # SPS (String Property Single)
17
17
  # TPS (Timestamp Property Single)
18
18
 
19
+ module Muml_Operation
20
+ # add _js to prevent javascript reserved name clash.
21
+ # example: "delete"
22
+ def js_Name
23
+ return "#{java_Name}_js"
24
+ end
25
+ end
26
+
19
27
  module Mrdf_Repository
20
28
  def struts_encloseWrite(before,after,&block)
21
29
  write(before)
@@ -143,6 +151,7 @@ module Muml_Class
143
151
  write("<%-- TPL:2 BEGIN --%>\n<tr>")
144
152
  struts_formAttribute.each { |a|
145
153
  next if a.uml_name_one=="id"
154
+ next if a.uml_name_one=="isLogicallyDeleted"
146
155
  write("<%-- UML PROPERTY: #{a.uml_name}--%>\n")
147
156
  write("<td>");
148
157
  write("</td>");
@@ -277,7 +286,7 @@ end
277
286
  def struts_jsp_writeTabBar
278
287
  return if struts_ownedTab.size <= 1
279
288
  write %{<div class="menu" id="menuDivId">\n}
280
- cmpt =1;
289
+ #cmpt =1;
281
290
  onglet_actif=context[:struts_tab]
282
291
  struts_ownedTab.each { |tab|
283
292
  id=tab.java_Name
@@ -291,17 +300,17 @@ def struts_jsp_writeTabBar
291
300
  \n}
292
301
 
293
302
  else
294
- if cmpt==1
295
- write %{\n<div class="menuOptn" id="menuOptDivId#{id}" style="display:none;">
296
- <div class="menuLink"><html:link onclick="#{STRUTS_REFRESH_ACTION}('#{id}');return false;" page="">#{struts_writeMsg(label)}</html:link></div>
297
- </div>}
298
- else
303
+ # if cmpt==1
304
+ # write %{\n<div class="menuOptn" id="menuOptDivId#{id}" style="display:none;">
305
+ #<div class="menuLink"><html:link onclick="#{STRUTS_REFRESH_ACTION}('#{id}');return false;" page="">#{struts_writeMsg(label)}</html:link></div>
306
+ #</div>}
307
+ # else
299
308
  write %{\n<div class="menuOptn" id="menuOptDivId#{id}">
300
309
  <div class="menuLink"><html:link onclick="#{STRUTS_REFRESH_ACTION}('#{id}');return false;" page="">#{struts_writeMsg(label)}</html:link></div>
301
310
  </div>}
302
- end
303
-
304
- cmpt=cmpt+1;
311
+ # end
312
+ #
313
+ # cmpt=cmpt+1;
305
314
  end
306
315
  }
307
316
  write %{</div>\n}
@@ -447,10 +456,10 @@ def struts_jspEdit_write_Operation
447
456
  # </a>
448
457
  # }
449
458
  if context[:statemachine] && biz.java_isFsmOperation
450
- write(%{<xmdafsm:FsmZoneTag methodName="#{biz.java_Name}" state="$\{#{self.struts_actionForm_one.java_Name}.persistedState\}">\n})
459
+ write(%{<xmdafsm:FsmZoneTag methodName="#{biz.java_Name}" state="$\{#{self.struts_actionForm_one.java_Name}.reference.persistedState\}">\n})
451
460
  end
452
461
  write %{
453
- <html:submit styleClass="boutonForm" onclick="#{biz.java_Name}();return false;">#{struts_writeMsg("#{biz.umlx_owner_one.java_qualifiedName}.#{biz.java_Name}")}</html:submit>
462
+ <html:submit styleClass="boutonForm" onclick="#{biz.js_Name}();return false;">#{struts_writeMsg("#{biz.umlx_owner_one.java_qualifiedName}.#{biz.java_Name}")}</html:submit>
454
463
  }
455
464
  if context[:statemachine] && biz.java_isFsmOperation
456
465
  write(%{</xmdafsm:FsmZoneTag>\n})
@@ -464,6 +473,7 @@ end
464
473
  def struts_edit_writeFields
465
474
  context[:struts_tab].struts_ownedAttribute.each { |a|
466
475
  next if a.uml_name_one=="id"
476
+ next if a.uml_name_one=="isLogicallyDeleted"
467
477
  a.struts_edit_writeFieldProp(self)
468
478
  }
469
479
  end
@@ -513,20 +523,28 @@ def struts_edit_writeFieldMany(field,owner)
513
523
  struts_edit_writeSelectAndAdd(field,owner)
514
524
  end
515
525
 
516
- #add label
517
- #use every property stereotpyed Label.
518
- #if none found, use every field
519
- def struts_editWriteSelectAndAddLabel(field,elt,withLabelOnly=true)
526
+ def struts_eachLabelField(field,withLabelOnly=true,&block)
520
527
  emptySelection=true
521
528
  field.uml_type_one.struts_formAttribute.each { |a|
522
529
  #next if a.uml_name_one=="id"
523
530
  next if a.uml_name_one=="owner"
531
+ next if a.uml_name_one=="isLogicallyDeleted"
524
532
  next if a.uml_type_one.kind_of?(Muml_Class)
525
533
  next if withLabelOnly && !(a.umlx_hasStereotype?("label"))
534
+ next if a.umlx_hasStereotype?("noLabel")
526
535
  emptySelection=false
527
- write %{<bean:write name="#{elt}" property="#{a.java_Name}"/>, }
536
+ yield(a)
528
537
  }
529
- struts_editWriteSelectAndAddLabel(field,elt,false) if emptySelection && withLabelOnly
538
+ struts_eachLabelField(field,false) { |a| yield(a) } if emptySelection && withLabelOnly
539
+ end
540
+
541
+ #add label
542
+ #use every property stereotpyed Label.
543
+ #if none found, use every field
544
+ def struts_editWriteSelectAndAddLabel(field,elt,withLabelOnly=true)
545
+ struts_eachLabelField(field,withLabelOnly) { |a|
546
+ write %{<bean:write name="#{elt}" property="#{a.java_Name}"/>, }
547
+ }
530
548
  end
531
549
 
532
550
  def struts_edit_writeSelectAndAdd(field,owner)
@@ -552,12 +570,18 @@ end
552
570
 
553
571
  def struts_edit_writeFieldGenericIsCompo(field,owner,isMany,isCompo)
554
572
  return unless isCompo
555
- before=""
556
- after=""
573
+ before=''
574
+ after=''
575
+ beforeIsEmpty=''
576
+ afterIsEmpty=''
577
+ b=%{<logic:empty name="#{owner.java_Name}StrutsForm" property="reference.#{field.java_Name}">\n}
578
+ a=%{</logic:empty>\n}
557
579
  if !isMany
558
580
  # only display creater if adding one more is ok.
559
- before=%{<logic:empty name="#{owner.java_Name}StrutsForm" property="reference.#{field.java_Name}">\n}
560
- after=%{</logic:empty>\n}
581
+ before,after=b,a
582
+ else
583
+ # display no element to display, only when collection is empty
584
+ beforeIsEmpty,afterIsEmpty=b,a
561
585
  end
562
586
 
563
587
  struts_encloseWrite( before,after) {
@@ -606,7 +630,8 @@ def struts_edit_writeFieldGenericIsCompo(field,owner,isMany,isCompo)
606
630
  <div style="color:#FF5400;background-color:#FAFCEB;" id='add#{field.java_NameBean}'>
607
631
  <a onClick="javascript:hide_sel('#{field.java_Name}_createAndAdd');document.getElementById('Popup#{field.java_NameBean}').style.display='block';document.getElementById('add#{field.java_NameBean}').style.display='none';" >
608
632
  <img src="res//orange/image/plus.gif" alt="Add" border="0" />
609
- </a>&nbsp;&nbsp;&nbsp;<bean:message key="label.helper.none"/>
633
+ </a>
634
+ #{beforeIsEmpty} &nbsp;&nbsp;&nbsp;<bean:message key="label.helper.none"/>#{afterIsEmpty}
610
635
  </div>
611
636
 
612
637
  END
@@ -653,6 +678,8 @@ def struts_edit_writeFieldGeneric_DisplayTable(field,owner,isMany,isCompo)
653
678
  }
654
679
  end
655
680
 
681
+ USE_PAGINATION=false
682
+
656
683
  def struts_edit_writeFieldGeneric_DisplayTable_displayTag(field,owner,isMany,isCompo)
657
684
  elt="elt_#{field.java_Name}"
658
685
  struts_encloseWrite(%{
@@ -674,10 +701,13 @@ def struts_edit_writeFieldGeneric_DisplayTable_displayTag(field,owner,isMany,isC
674
701
  </a>
675
702
  </display:column>
676
703
  },
677
- %{</display:table>\n </div>
704
+ %{</display:table>\n
705
+ #{%{<html:text property="#{field.java_Name}_strutsPage" size="40%" maxlength="2" />\n} if isMany && USE_PAGINATION}
706
+ </div>
678
707
 
679
708
  }) {
680
- field.uml_type_one.struts_formAttribute.each { |a|
709
+ struts_eachLabelField(field) { |a|
710
+ #field.uml_type_one.struts_formAttribute.each { |a|
681
711
  next if a.uml_name_one=="id"
682
712
  next if a.uml_name_one=="owner"
683
713
  t=a.uml_type_one
@@ -30,7 +30,7 @@ END
30
30
  next unless biz.umlx_businessMethod?
31
31
  f=biz.java_Name
32
32
  write(%{
33
- function #{f}() {
33
+ function #{biz.js_Name}() {
34
34
  document.forms[0].#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}.value="#{f}";
35
35
  document.forms[0].submit();
36
36
  }
@@ -24,8 +24,10 @@ module Mrdf_Repository
24
24
  <title>Index -- Generated with XMDA</title>
25
25
  </head>
26
26
  #{%{
27
- <%
28
- #{java_getTenantClass.java_qualifiedName} #{Muml_Classifier::TENANT_FIELD_NAME}=null;
27
+ <%!
28
+ public #{java_getTenantClass.java_qualifiedName} get#{Muml_Classifier::TENANT_FIELD_BEAN_NAME}() {
29
+ return null;
30
+ }
29
31
  %>} if context[:multiTenant] }
30
32
 
31
33
  <body >
@@ -75,12 +77,12 @@ END
75
77
  pkg[p] << c
76
78
  }
77
79
  write %{<table border="1" style="border-style: ; border: gray; border-spacing:0px">}
78
- write %{<tr bgcolor="#EEEEEE" width="10%"><td valign="center"><a name="index"/><h3>Package index</h3></td><td><ul>}
80
+ write %{<tr bgcolor="#EEEEEE"><td valign="center" width="10%"><a name="index"/><h3>Package index</h3></td><td><ul>}
79
81
  pkg.keys.sort {|a,b| a.java_qualifiedName.to_s <=> b.java_qualifiedName.to_s }.each { |p|
80
82
  write %{<li><a href="##{p.java_qualifiedName}">#{p.java_qualifiedName}</a></li> }
81
83
  }
82
84
  write "</ul></td></tr>"
83
- pkg.keys.sort {|a,b| a.uml_name.to_s <=> b.uml_name.to_s }.each { |p|
85
+ pkg.keys.sort {|a,b| a.java_qualifiedName.to_s <=> b.java_qualifiedName.to_s }.each { |p|
84
86
  write %{<tr><td valign="center"><h3><a name="#{p.java_qualifiedName}"/><a href="#index">#{p.java_qualifiedName.gsub(/\./," .")}</a></h3></td><td><ul>}
85
87
  pkg[p].sort { |a,b| a.uml_name.to_s <=> b.uml_name.to_s }.each {|c|
86
88
  write <<END
@@ -19,7 +19,11 @@ end
19
19
  class DatatypeMappingText < DatatypeMapping
20
20
  def getJSP(datatype,field,owner)
21
21
  n=datatype.java_Name.downcase #TODO
22
- return %{<html:text property="#{field.java_Name}" size="20%" maxlength="#{self.maxStringLength}" styleId="#{n}" #{::Muml_DataType::STRUTS_ERROR_STYLE}/>}
22
+ if field.umlx_oneSide?
23
+ return %{<html:text property="#{field.java_Name}" size="40%" maxlength="#{self.maxStringLength}" styleId="#{n}" #{::Muml_DataType::STRUTS_ERROR_STYLE}/>}
24
+ else
25
+ return %{<%-- one line per element in array --%><html:textarea cols="60" property="#{field.java_Name}" styleId="#{n}" #{::Muml_DataType::STRUTS_ERROR_STYLE}/>}
26
+ end
23
27
  end
24
28
  end
25
29
 
@@ -27,7 +31,7 @@ class DatatypeMappingLargeText < DatatypeMappingText
27
31
  def getJSP(datatype,field,owner)
28
32
  n=datatype.java_Name.downcase #TODO
29
33
  #maxlength not supported by textarea
30
- return %{<html:textarea property="#{field.java_Name}" styleId="#{n}" #{::Muml_DataType::STRUTS_ERROR_STYLE}/>}
34
+ return %{<html:textarea cols="60" property="#{field.java_Name}" styleId="#{n}" #{::Muml_DataType::STRUTS_ERROR_STYLE}/>}
31
35
  end
32
36
  end
33
37
 
@@ -36,7 +40,7 @@ class DatatypeMappingURL < DatatypeMappingText
36
40
  # cf: http://www.osix.net/modules/article/?id=586
37
41
  n=datatype.java_Name.downcase #TODO
38
42
  return <<END
39
- <html:text property="#{field.java_Name}" size="20%" maxlength="#{self.maxStringLength}" styleId="#{n}" #{::Muml_DataType::STRUTS_ERROR_STYLE} disabled="true"/>
43
+ <html:text property="#{field.java_Name}" size="40%" maxlength="#{self.maxStringLength}" styleId="#{n}" #{::Muml_DataType::STRUTS_ERROR_STYLE} disabled="true"/>
40
44
 
41
45
  <a onclick="javascript:document.getElementById('#{n}').disabled=false;document.getElementById('#{n}').value='';;">
42
46
  <img src="res//orange/image/edit.gif" />
@@ -93,7 +97,7 @@ class DatatypeMappingTimeStamp < DatatypeMapping
93
97
  return <<END
94
98
  <xmda:dateText property="#{field.java_Name}" size="20%" maxlength="30" styleId="#{field.java_Name}Id" #{::Muml_DataType::STRUTS_ERROR_STYLE}/>
95
99
  <script type="text/javascript">
96
- function formatDate(cal) {
100
+ function formatDate_#{field.java_Name}(cal) {
97
101
  var date = cal.date;
98
102
  var field = document.getElementById("#{field.java_Name}");
99
103
  var locale = document.getElementById("#{field.java_Name}Locale").value;
@@ -105,7 +109,7 @@ class DatatypeMappingTimeStamp < DatatypeMapping
105
109
  localeField : "#{field.java_Name}Locale", //field containing locale (hidden)
106
110
  showsTime : true,
107
111
  timeFormat : "24",
108
- onUpdate : formatDate
112
+ onUpdate : formatDate_#{field.java_Name}
109
113
  \});
110
114
  </script>
111
115
  END
@@ -121,7 +125,7 @@ class DatatypeMappingCalendar < DatatypeMapping
121
125
  return <<END
122
126
  <xmda:dateText isCalendar="true" property="#{field.java_Name}" size="20%" maxlength="#{self.maxStringLength}" styleId="#{field.java_Name}Id" #{::Muml_DataType::STRUTS_ERROR_STYLE}/>
123
127
  <script type="text/javascript">
124
- function formatDate(cal) {
128
+ function formatDate_#{field.java_Name}(cal) {
125
129
  var date = cal.date;
126
130
  var field = document.getElementById("#{field.java_Name}");
127
131
  var locale = document.getElementById("#{field.java_Name}Locale").value;
@@ -130,7 +134,7 @@ class DatatypeMappingCalendar < DatatypeMapping
130
134
  Calendar.setup(\{
131
135
  inputField : "#{field.java_Name}Id", // id of the input field
132
136
  localeField : "#{field.java_Name}Locale", //field containing locale (hidden)
133
- onUpdate : formatDate
137
+ onUpdate : formatDate_#{field.java_Name}
134
138
  \});
135
139
  </script>
136
140
  END
@@ -50,6 +50,17 @@ public #{java_getType} parse(final String str,final #{java_getType} nullCast ) {
50
50
  }
51
51
  }
52
52
 
53
+ public String getValidationRegexp() {
54
+ #{if !respond_to?(:getValidationRegexp)
55
+ %{throw new java.lang.RuntimeException("Method not implemented");}
56
+ elsif getValidationRegexp.nil?
57
+ %{return null;}
58
+ else
59
+ %{return "#{getValidationRegexp.source.java_stringEscape}";}
60
+ end
61
+ }
62
+ }
63
+
53
64
  public String toString(final #{java_getType} elt) {
54
65
  #{if respond_to?(:java_getJavaToString)
55
66
  "return #{java_getJavaToString("elt")};"
@@ -61,7 +72,6 @@ public String toString(final #{java_getType} elt) {
61
72
 
62
73
  END
63
74
  end
64
-
65
75
  def java_helper_addMethods!(c)
66
76
  return
67
77
  m=c.umlx_createAndAddOperation(self.rdf_uri+"_parse","parse")
@@ -84,4 +94,8 @@ end
84
94
 
85
95
  class DatatypeMapping
86
96
  end
87
-
97
+ class String
98
+ def java_stringEscape
99
+ return self.gsub(/\\/,'\\\\\\\\')
100
+ end
101
+ end
@@ -1,5 +1,5 @@
1
1
  module Ontomde
2
2
  module Java
3
- VERSION = '2.0.0'
3
+ VERSION = '2.0.4'
4
4
  end
5
5
  end
@@ -0,0 +1,329 @@
1
+ # vmware vso integration
2
+
3
+
4
+ module Mrdf_Repository
5
+ def vso_generateMapping
6
+ return if context[:vsoTargetFile,nil].nil?
7
+ mtk_context(:hideJavadocReverseTag => true,:reversedFiles=>[],:requireReverseExtensions=>[],:reverseGlobalMap=>{} ) {
8
+ mtk_writeSession(context[:vsoTargetFile]) {
9
+ vso_writeMapping
10
+ }}
11
+ end
12
+
13
+ def vso_writeMapping(tab="")
14
+ tab2=tab.tab
15
+ before=<<END
16
+ #{tab}<module
17
+ #{tab2}xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
18
+ #{tab2}xsi:noNamespaceSchemaLocation="http://vs-o.dunes.ch/plugin-3-2.xsd"
19
+ #{tab2}name="#{context[:vsoPluginName,%{undefinedPluginName}]}"
20
+ #{tab2}version="#{context[:vsoPluginVersion,%{0000}]}"
21
+ #{tab2}build-number="#{Time.new().to_i() / 60 / 60}"
22
+ #{tab2}image="training-logo-32x32.png">
23
+ #{tab2}<description>#{context[:vsoPluginDescription,%{no description available}]}\n(generated by ontomde v.#{Ontomde::Java::VERSION})</description>
24
+ END
25
+ after=<<END
26
+ #{tab}</module>
27
+ #{tab}<!-- end of file -->
28
+ END
29
+ encloseWrite(before,after) {
30
+ vso_writeFinderDataSources(tab2)
31
+ vso_writeInventory(tab2)
32
+ vso_writeFinders(tab2)
33
+ vso_writeScriptingObjects(tab2)
34
+ vso_writeEnumerations(tab2)
35
+ }
36
+
37
+ end
38
+
39
+ def vso_writeFinderDataSources(tab)
40
+ before="#{tab}<finder-datasources>\n"
41
+ after="#{tab}</finder-datasources>\n"
42
+ tab2=tab.tab
43
+ found=encloseWrite(before,after,true) {
44
+ vso_scriptingObjects.each { |so|
45
+ next unless so.umlx_hasStereotype?('TFINDER')
46
+ write(%{#{tab2}<finder-datasource name="#{so.vso_DataSourceName}" adaptor-class="#{so.java_qualifiedName}" debug="true"/>\n})
47
+ }
48
+ }
49
+ write("<!-- WARNING: no finder-datasources found in model (ie: stereotype TFINDER) -->\n") unless found
50
+ end
51
+
52
+ def vso_writeInventory(tab)
53
+ found=encloseWrite(%{#{tab}<inventory type="},%{"/>\n},true) {
54
+ vso_scriptingObjects.each { |so|
55
+ next unless so.umlx_hasStereotype?('TROOT')
56
+ write(so.java_Name)
57
+ }
58
+ }
59
+ write("<!-- WARNING: no inventory root found model (ie: stereotype TROOT) -->\n") unless found
60
+ end
61
+
62
+ def vso_writeFinders(tab)
63
+ before="#{tab}<finders>\n"
64
+ after="#{tab}</finders>\n"
65
+ tab2=tab.tab
66
+ encloseWrite(before,after) {
67
+ vso_scriptingObjects.sort { |a,b| a.java_qualifiedName.to_s <=> b.java_qualifiedName.to_s }.each { |so|
68
+ so.vso_writeFinder(tab2)
69
+ }
70
+ }
71
+ end
72
+
73
+ def vso_writeScriptingObjects(tab)
74
+ before="#{tab}<scripting-objects>\n"
75
+ after="#{tab}</scripting-objects>\n"
76
+ tab2=tab.tab
77
+ encloseWrite(before,after) {
78
+ vso_scriptingObjects.sort { |a,b| a.java_qualifiedName.to_s <=> b.java_qualifiedName.to_s }.each { |so|
79
+ so.vso_writeObjectMapping(tab2)
80
+ }
81
+ }
82
+ end
83
+
84
+ def vso_writeEnumerations(tab)
85
+ tab2=tab.tab
86
+ before="#{tab}<enumerations>\n"
87
+ after="#{tab}</enumerations>\n"
88
+ encloseWrite(before,after) {
89
+ write("#{tab2}<!-- dynamic enumeration(s) section -->\n")
90
+ write("#{tab2}<!-- static enumeration(s) section -->\n")
91
+ vso_enumerations.each { |so|
92
+ so.vso_writeEnumerationMapping(tab2)
93
+ }
94
+ }
95
+ end
96
+
97
+ #return a set of scripting objects
98
+ def vso_scriptingObjects
99
+ ret=Set.new
100
+ uml_Class_all.each { |c|
101
+ next unless c.kind_of?(Muml_Class)
102
+ next if c.kind_of?(Muml_DataType)
103
+ #next unless
104
+ ret.add(c)
105
+ }
106
+ return ret
107
+ end
108
+
109
+ #
110
+ def vso_enumerations
111
+ ret=Set.new
112
+ uml_Class_all.each { |c|
113
+ # inner enumeration ??
114
+ if c.kind_of?(Muml_Enumeration)
115
+ ret.add(c)
116
+ elsif c.kind_of?(Muml_Class)
117
+ c.uml_nestedClassifier.each { |c2|
118
+ if c2.kind_of?(Muml_Enumeration)
119
+ ret.add(c2)
120
+ end
121
+ }
122
+ end
123
+ #next unless
124
+ }
125
+ return ret
126
+ end
127
+
128
+ end
129
+ module Muml_Element
130
+ def vso_writeJavadoc(tab)
131
+ m=mtk_stss { java_writeJavadoc }
132
+
133
+ uml_raisedException.each { |exception|
134
+ m=m+"\nthrows:#{exception.java_qualifiedName}"
135
+ } if respond_to?(:uml_raisedException)
136
+
137
+ if (!m.nil? && !m.empty?)
138
+ m=m.gsub(/[ \t]*@.*$/,'').gsub(/^[\t *\/]*/,'').gsub(/\n\n*/,"\n").strip
139
+ end
140
+ if m.nil? || m.empty? || m=="\n"
141
+ write "#{tab}<description/>\n"
142
+ else
143
+ write "#{tab}<description>#{m}</description>\n"
144
+ end
145
+ end
146
+ def vso_writeObject(tab,params,&block)
147
+ write(%{#{tab}<object script-name="#{java_Name}" java-class="#{java_qualifiedName}"#{" " unless params.empty?}#{params}#{%{ create="false"} if uml_isAbstract?}>\n})
148
+ tab2=tab.tab
149
+ vso_writeJavadoc(tab2)
150
+ yield(tab2)
151
+ write(%{#{tab}</object>\n})
152
+ end
153
+ end
154
+ module Muml_Class
155
+ def vso_ownedOperation
156
+ s=Set.new
157
+ umlx_ownedOperationHierarchical.each { |op|
158
+ s.add(op)
159
+ }
160
+ return s
161
+ end
162
+
163
+ def vso_ownedAttribute
164
+ s=Set.new
165
+ umlx_ownedAttributeHierarchical.each { |op|
166
+ s.add(op)
167
+ }
168
+ return s
169
+ end
170
+
171
+ def vso_writeObjectMapping(tab)
172
+ vso_writeObject(tab,"") { |tab2|
173
+ vso_writeConstructors(tab2)
174
+ vso_writeMethods(tab2)
175
+ }
176
+ end
177
+ def vso_writeConstructors(tab)
178
+ found=false
179
+ java_ownedOperation.sort { |a,b| a.java_qualifiedName.to_s <=> b.java_qualifiedName.to_s }.each { |o|
180
+ next unless o.umlx_isConstructor?
181
+ found=true
182
+ }
183
+ return unless found
184
+ tab2=tab.tab
185
+ tab3=tab2.tab
186
+ before="#{tab}<constructors>\n"
187
+ after="#{tab}</constructors>\n"
188
+ encloseWrite(before,after) {
189
+ java_ownedOperation.sort { |a,b| a.java_qualifiedName.to_s <=> b.java_qualifiedName.to_s }.each { |o|
190
+ next unless o.umlx_isConstructor?
191
+ encloseWrite("#{tab2}<constructor>\n","#{tab2}</constructor>\n") {
192
+ o.vso_writeJavadoc(tab3)
193
+ o.vso_writeOperationParameters(tab3)
194
+ }
195
+ }
196
+ }
197
+ end
198
+ def vso_writeMethods(tab)
199
+ tab2=tab.tab
200
+ before="#{tab}<methods>\n"
201
+ after="#{tab}</methods>\n"
202
+ encloseWrite(before,after) {
203
+ java_ownedOperation.sort { |a,b| a.java_qualifiedName.to_s <=> b.java_qualifiedName.to_s }.each { |o|
204
+ next if o.umlx_isConstructor?
205
+ o.java_writeOperationMapping(tab2)
206
+ }
207
+ }
208
+ end
209
+ def vso_writeFinder(tab)
210
+ tab2=tab.tab
211
+ isInventoryRoot=umlx_hasStereotype?('TROOT')
212
+ before=%{#{tab}<finder type="#{java_Name}" image="images/#{java_Name}.png" datasource="#{vso_DataSourceName}" script-object="#{java_Name}" hidden="#{isInventoryRoot ? 'true' : 'false'}">\n}
213
+ after="#{tab}</finder>\n"
214
+ encloseWrite(before,after) {
215
+ write(%{#{tab2}<id accessor="getId()"/>\n}) unless isInventoryRoot
216
+ vso_writeFinderInventoryChildren(tab2)
217
+ vso_writeFinderRelations(tab2)
218
+ vso_writeFinderProperties(tab2)
219
+ }
220
+
221
+ end
222
+ def vso_writeFinderInventoryChildren(tab)
223
+ tab2=tab.tab
224
+ before=%{#{tab}<inventory-children>\n}
225
+ after=%{#{tab}</inventory-children>\n}
226
+ encloseWrite(before,after,true) {
227
+ vso_ownedAttribute.each {|p|
228
+ next unless p.umlx_hasStereotype?("TCHILD")
229
+ write(%{#{tab2}<relation-link name="#{p.java_Name}"/>\n})
230
+ }
231
+ }
232
+ end
233
+ def vso_writeFinderRelations(tab)
234
+ tab2=tab.tab
235
+ before=%{#{tab}<relations>\n}
236
+ after=%{#{tab}</relations>\n}
237
+ encloseWrite(before,after,true) {
238
+ vso_ownedAttribute.each {|p|
239
+ next unless p.umlx_hasStereotype?("TCHILD")
240
+ write(%{#{tab2}<relation name="#{p.java_Name}" type="#{p.uml_type_one.java_Name}"/>\n})
241
+ }
242
+ }
243
+ end
244
+ def vso_writeFinderProperties(tab)
245
+ tab2=tab.tab
246
+ before=%{#{tab}<properties>\n}
247
+ after=%{#{tab}</properties>\n}
248
+ encloseWrite(before,after,true) {
249
+ vso_ownedAttribute.each {|p|
250
+ next unless p.umlx_hasStereotype?("TLABEL")
251
+ write(%{#{tab2}<property name="#{p.java_Name}" display-name="#{p.uml_name}" bean-property="#{p.java_Name}"/>\n})
252
+ }
253
+ }
254
+ end
255
+ def vso_DataSourceName
256
+ return "DS-DRASS"
257
+ end
258
+ end
259
+
260
+ module Muml_TypedElement
261
+ def vso_TypeName
262
+ return %{#{"[" unless self.umlx_upperValueIsOne?}#{self.uml_type_one.java_Name}}
263
+ end
264
+ end
265
+
266
+ module Muml_Operation
267
+ def java_writeOperationMapping(tab)
268
+ tab2=tab.tab
269
+ params=""
270
+ rt=umlx_returnResult_one0
271
+ params=%{return-type="#{rt.vso_TypeName}"} unless rt.nil?
272
+ before=%{#{tab}<method script-name="#{java_Name}" java-name="#{java_Name}"#{" " unless params.empty?}#{params}#{%{ static="true"} if uml_isStatic?}>\n}
273
+ after=%{#{tab}</method>\n}
274
+ encloseWrite(before,after) {
275
+ vso_writeJavadoc(tab2)
276
+ vso_writeOperationParameters(tab2)
277
+ }
278
+
279
+ end
280
+ def vso_writeOperationParameters(tab)
281
+ tab2=tab.tab
282
+ before="#{tab}<parameters>\n"
283
+ after="#{tab}</parameters>\n"
284
+ notEmpty=encloseWrite(before,after,true) {
285
+ uml_ownedParameter.each { |p|
286
+ next if p.uml_direction_one.isReturn?
287
+ #array
288
+ write(%{#{tab2}<parameter type="#{p.vso_TypeName}" name="#{p.java_Name}"/>\n})
289
+ }
290
+ }
291
+ write("#{tab}<parameters/>\n") unless notEmpty
292
+ end
293
+ end
294
+
295
+ module Muml_Interface
296
+ def vso_writeObjectMapping(tab2)
297
+ vso_writeObject(tab,"") { |tab2|
298
+ vso_writeConstructors(tab2)
299
+ vso_writeMethods(tab2)
300
+ }
301
+ end
302
+ end
303
+ class String
304
+ def tab
305
+ return self+' '
306
+ end
307
+ end
308
+
309
+ module Muml_Enumeration
310
+ def vso_writeEnumerationMapping(tab)
311
+ tab2=tab.tab
312
+ tab3=tab2.tab
313
+ encloseWrite(
314
+ %{#{tab}<enumeration type="#{self.java_qualifiedName}">\n},
315
+ %{#{tab}</enumeration>\n}) {
316
+
317
+ vso_writeJavadoc(tab2)
318
+ #write(%#{tab2}<url></url>\n})
319
+ encloseWrite(%{#{tab2}<entries>\n},%{#{tab2}</entries>\n}) {
320
+ i=0
321
+ java_ownedLiteral.each {|e|
322
+ i=i+1
323
+ write(%{#{tab3}<entry id="#{i}" name="#{e.java_Name}"/>\n})
324
+ #TODO: comment ?
325
+ }
326
+ }
327
+ }
328
+ end
329
+ end