ontomde-java 2.0.0

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 (157) hide show
  1. data/History.txt +10 -0
  2. data/Manifest.txt +156 -0
  3. data/README.txt +98 -0
  4. data/Rakefile +21 -0
  5. data/bin/ontomde-java +5 -0
  6. data/generateRdocFile.sh +16 -0
  7. data/lib/ontomde-java.rb +45 -0
  8. data/lib/ontomde-java/crank.rb +13 -0
  9. data/lib/ontomde-java/crank/context.rb +384 -0
  10. data/lib/ontomde-java/crank/crankJpa.rb +103 -0
  11. data/lib/ontomde-java/crank/equals.rb +83 -0
  12. data/lib/ontomde-java/crank/facelets.rb +243 -0
  13. data/lib/ontomde-java/crank/facesconfig.rb +113 -0
  14. data/lib/ontomde-java/crank/helper.rb +46 -0
  15. data/lib/ontomde-java/crank/main.rb +51 -0
  16. data/lib/ontomde-java/crank/menu.rb +39 -0
  17. data/lib/ontomde-java/crank/menu2.rb +78 -0
  18. data/lib/ontomde-java/crank/validation.rb +34 -0
  19. data/lib/ontomde-java/ejb2.rb +3 -0
  20. data/lib/ontomde-java/ejb2/main-ejb2.rb +194 -0
  21. data/lib/ontomde-java/flex.rb +7 -0
  22. data/lib/ontomde-java/flex/Editor.mxml.as.rb +184 -0
  23. data/lib/ontomde-java/flex/Editor.mxml.rb +701 -0
  24. data/lib/ontomde-java/flex/ImportationAS.rb +40 -0
  25. data/lib/ontomde-java/flex/ValueObjectAS.rb +338 -0
  26. data/lib/ontomde-java/flex/fileTypes.rb +19 -0
  27. data/lib/ontomde-java/flex/main.rb +347 -0
  28. data/lib/ontomde-java/frontend/command.rb +324 -0
  29. data/lib/ontomde-java/frontend/command.rdoc +583 -0
  30. data/lib/ontomde-java/frontend/defaultOptions.rb +124 -0
  31. data/lib/ontomde-java/frontend/options.rb +555 -0
  32. data/lib/ontomde-java/frontend/steps.rb +287 -0
  33. data/lib/ontomde-java/java/accessorCode.rb +528 -0
  34. data/lib/ontomde-java/java/accessorSignature.rb +347 -0
  35. data/lib/ontomde-java/java/annotationOntoMDE.rb +88 -0
  36. data/lib/ontomde-java/java/apache.rb +34 -0
  37. data/lib/ontomde-java/java/build.rb +80 -0
  38. data/lib/ontomde-java/java/collectionMapping.rb +112 -0
  39. data/lib/ontomde-java/java/component.rb +446 -0
  40. data/lib/ontomde-java/java/contextualize.rb +43 -0
  41. data/lib/ontomde-java/java/enumAssignable.rb +75 -0
  42. data/lib/ontomde-java/java/enumCompatibilityLayer.rb +195 -0
  43. data/lib/ontomde-java/java/equals.rb +91 -0
  44. data/lib/ontomde-java/java/groovy.rb +95 -0
  45. data/lib/ontomde-java/java/java.rb +1329 -0
  46. data/lib/ontomde-java/java/java.rdoc +78 -0
  47. data/lib/ontomde-java/java/javaDatatypeMapping.rb +156 -0
  48. data/lib/ontomde-java/java/javaHelper.rb +25 -0
  49. data/lib/ontomde-java/java/java_todo.rdoc +3 -0
  50. data/lib/ontomde-java/java/javadoc.rb +254 -0
  51. data/lib/ontomde-java/java/meta.rb +28 -0
  52. data/lib/ontomde-java/java/operationAsClass.rb +144 -0
  53. data/lib/ontomde-java/java/security.rb +260 -0
  54. data/lib/ontomde-java/java/stateMachine.rb +415 -0
  55. data/lib/ontomde-java/java/tenant.rb +65 -0
  56. data/lib/ontomde-java/java/xsd.rb +1363 -0
  57. data/lib/ontomde-java/java/xsdCollectionMapping.rb +112 -0
  58. data/lib/ontomde-java/java/xsdDatatypeMapping.rb +103 -0
  59. data/lib/ontomde-java/jpa.rb +17 -0
  60. data/lib/ontomde-java/jpa/configuration.rb +176 -0
  61. data/lib/ontomde-java/jpa/finder.rb +102 -0
  62. data/lib/ontomde-java/jpa/jpa.rb +531 -0
  63. data/lib/ontomde-java/jpa/jpa.rdoc +20 -0
  64. data/lib/ontomde-java/jpa/locking.rb +18 -0
  65. data/lib/ontomde-java/jpa/mapping.rb +314 -0
  66. data/lib/ontomde-java/jpa/redefined.rb +77 -0
  67. data/lib/ontomde-java/jpa/simulationAutoImplement.rb +54 -0
  68. data/lib/ontomde-java/jpdl.rb +9 -0
  69. data/lib/ontomde-java/jpdl/bpm.pprj +1745 -0
  70. data/lib/ontomde-java/jpdl/bpm.rdf +140 -0
  71. data/lib/ontomde-java/jpdl/bpm.rdfs +231 -0
  72. data/lib/ontomde-java/jpdl/constant.rb +5 -0
  73. data/lib/ontomde-java/jpdl/graphic.rb +52 -0
  74. data/lib/ontomde-java/jpdl/jpdl.rb +281 -0
  75. data/lib/ontomde-java/jpdl/jpdl_deploy.rb +114 -0
  76. data/lib/ontomde-java/jpdl/main.rb +348 -0
  77. data/lib/ontomde-java/jpdl/main.rdoc +2 -0
  78. data/lib/ontomde-java/jpdl/processOperationToClass.rb +316 -0
  79. data/lib/ontomde-java/kbjava.rb +6 -0
  80. data/lib/ontomde-java/kbjava/rdfToJava.rb +407 -0
  81. data/lib/ontomde-java/struts.rb +27 -0
  82. data/lib/ontomde-java/struts/MessageResources.rb +359 -0
  83. data/lib/ontomde-java/struts/action.rb +883 -0
  84. data/lib/ontomde-java/struts/blob.rb +11 -0
  85. data/lib/ontomde-java/struts/exceptionHandling.rb +167 -0
  86. data/lib/ontomde-java/struts/footer.rb +128 -0
  87. data/lib/ontomde-java/struts/form.rb +450 -0
  88. data/lib/ontomde-java/struts/header.rb +37 -0
  89. data/lib/ontomde-java/struts/header_link.rb +39 -0
  90. data/lib/ontomde-java/struts/jsp_edit.rb +870 -0
  91. data/lib/ontomde-java/struts/jsp_edit_field.rb +1 -0
  92. data/lib/ontomde-java/struts/jsp_edit_js.rb +124 -0
  93. data/lib/ontomde-java/struts/jsp_index.rb +136 -0
  94. data/lib/ontomde-java/struts/localeAction.rb +641 -0
  95. data/lib/ontomde-java/struts/main.rb +41 -0
  96. data/lib/ontomde-java/struts/mappingForBean.rb +132 -0
  97. data/lib/ontomde-java/struts/mappingForJsp.rb +272 -0
  98. data/lib/ontomde-java/struts/mappingToJavaHierarchy.rb +87 -0
  99. data/lib/ontomde-java/struts/reloadAction.rb +33 -0
  100. data/lib/ontomde-java/struts/spring.rb +89 -0
  101. data/lib/ontomde-java/struts/struts-config.rb +232 -0
  102. data/lib/ontomde-java/struts/validation.rb +116 -0
  103. data/lib/ontomde-java/struts/validator.rb +341 -0
  104. data/lib/ontomde-java/struts/webXml.rb +195 -0
  105. data/lib/ontomde-java/struts/xmlForm.rb +308 -0
  106. data/lib/ontomde-java/version.rb +5 -0
  107. data/profiling.xls +0 -0
  108. data/test/.classpath +14 -0
  109. data/test/.project +17 -0
  110. data/test/.settings/org.eclipse.jdt.core.prefs +23 -0
  111. data/test/Rakefile +71 -0
  112. data/test/build.xml +34 -0
  113. data/test/classpath.rb +15 -0
  114. data/test/lib/junit-4.1.jar +0 -0
  115. data/test/load1.rb +3 -0
  116. data/test/load2.rb +3 -0
  117. data/test/log4j.properties +46 -0
  118. data/test/model/.project +11 -0
  119. data/test/model/BigProject.mdzip +0 -0
  120. data/test/model/BigProject.mdzip.nt +102866 -0
  121. data/test/model/ClassDiagram.EntArch.gif +0 -0
  122. data/test/model/ClassDiagram.emx.gif +0 -0
  123. data/test/model/ClassDiagram.mdzip.gif +0 -0
  124. data/test/model/model_ea71.bis.ea.xmi +149 -0
  125. data/test/model/model_ea71.ea.xmi +4470 -0
  126. data/test/model/model_ea71.eap +0 -0
  127. data/test/model/model_ea71_README.txt +8 -0
  128. data/test/model/multipleInheritance.emx +466 -0
  129. data/test/model/multipleInheritance.emx.nt +2428 -0
  130. data/test/model/simple1-530.ofp +0 -0
  131. data/test/model/simple1-includedAsReference.emx +169 -0
  132. data/test/model/simple1.emx +3729 -0
  133. data/test/model/simple1.emx.fragments.nt +81 -0
  134. data/test/model/simple1.emx.nt +5760 -0
  135. data/test/model/simple1.mdzip +0 -0
  136. data/test/model/simple1.mdzip.nt +11500 -0
  137. data/test/model/simple1.oe530.nt +1986 -0
  138. data/test/model/simple1.oe600.nt +1627 -0
  139. data/test/src/RuntimeTest.java +656 -0
  140. data/test/src/testsLevel1.java +174 -0
  141. data/test/src/testsLevel2.java +29 -0
  142. data/test/src/testsLevel3.java +40 -0
  143. data/test/test-ea7.sh +15 -0
  144. data/test/test-magicDraw.sh +10 -0
  145. data/test/test-mi.sh +9 -0
  146. data/test/test-oe530.sh +10 -0
  147. data/test/test-oe600.sh +11 -0
  148. data/test/test-rsm.sh +11 -0
  149. data/test/test_export_ea71.rb +5 -0
  150. data/test/test_export_oe530.rb +4 -0
  151. data/test/test_export_oe600.rb +4 -0
  152. data/test/test_export_rsm60.rb +4 -0
  153. data/test/trace +419 -0
  154. data/test/uml_test.rb +1434 -0
  155. data/test/uml_test.xls +0 -0
  156. data/test/unit_test.rb +6 -0
  157. metadata +224 -0
@@ -0,0 +1,41 @@
1
+
2
+ module Mrdf_Repository
3
+
4
+ # returns a list of classifier which are "viewable"
5
+ # (for which a GUI should be created)
6
+ def struts_viewableClassifier(ignoreAbstract=true)
7
+ ret=Array.new
8
+ uml_Class_all.each { |c|
9
+ next unless (c.kind_of?(Muml_Class) && c.umlx_isReallyAClass?) #TODO: for jdo || c.kind_of?(Muml_Interface)
10
+ next if c.java_ignoreMe?
11
+ next if c.struts_isForm?
12
+ #next if c.java_isATestFile?
13
+
14
+ #TODO: Hack for human task (bug if MPC in name)!
15
+ if context[:db_useStereotypeMarker] && !"#{c.uml_name}".include?("MPC")
16
+ next if c.db_isTransient?
17
+ end
18
+
19
+ next if c.umlx_hasStereotype?('DTO')
20
+
21
+ next if c.db_isDAO?
22
+ next unless c.umlx_businessMethod?
23
+ #no struts for abstract classes
24
+ next if c.uml_isAbstract? && ignoreAbstract
25
+ ret<< c
26
+ }
27
+ return ret
28
+ end
29
+
30
+ # adds struts forms and struts action classes for each #struts_viewableClassifier.
31
+ def struts_addPerClassElement!
32
+ struts_viewableClassifier.each { |c|
33
+ c.struts_addActionForm!
34
+ }
35
+ struts_viewableClassifier.each { |c|
36
+ next if c.struts_actionForm_one0.nil?
37
+ c.struts_addAction!
38
+ }
39
+ end
40
+
41
+ end
@@ -0,0 +1,132 @@
1
+ #defines mapping between struts bean types (string,boolean,...) and strings
2
+
3
+
4
+ class DatatypeMapping
5
+ #returns code to be inserted in struts form copyTo
6
+ #def getFormCopyTo(field)
7
+ # # inheriting class should redefine this method
8
+ # log.error %{getFormCopyTo not implemented for #{self.class}}
9
+ # return %{/* TODO: implement ruby getFormCopyTo for #{self.class}*/}
10
+ #end
11
+ #returns code to be inserted in struts form initFrom
12
+ #def getFormInitFrom(field)
13
+ # # inheriting class should redefine this method
14
+ # log.error %{getFormInitFrom not implemented for #{self.class}}
15
+ # return %{/* TODO: implement ruby getFormInitFrom for #{self.class}*/}
16
+ #end
17
+ def getFormCopyTo(field)
18
+ return %{_to.set#{field.java_NameBean}(#{java_getJavaParse(%{this.get#{field.java_NameBean}()})});\n}
19
+ end
20
+ def getFormInitFrom(field)
21
+ return %{this.set#{field.java_NameBean}(#{java_getJavaToString(%{_from.get#{field.java_NameBean}()})});\n}
22
+ end
23
+ def getFormType(field)
24
+ return field.umlx_dataType_string
25
+ end
26
+ end
27
+
28
+
29
+ class DatatypeMappingText < DatatypeMapping
30
+ def java_getJavaToString(jsrc)
31
+ return jsrc
32
+ end
33
+ def java_getJavaParse(jsrc)
34
+ return jsrc
35
+ end
36
+ end
37
+
38
+ class DatatypeMappingInteger < DatatypeMappingOrdinal
39
+ def java_getJavaToString(jsrc)
40
+ return "Integer.toString(#{jsrc})"
41
+ end
42
+ def java_getJavaParse(jsrc)
43
+ return "Integer.parseInt(#{jsrc})"
44
+ end
45
+ end
46
+
47
+ class DatatypeMappingLong < DatatypeMappingOrdinal
48
+ def java_getJavaToString(jsrc)
49
+ return "Long.toString(#{jsrc})"
50
+ end
51
+ def java_getJavaParse(jsrc)
52
+ return "Long.parseLong(#{jsrc})"
53
+ end
54
+ end
55
+
56
+ class DatatypeMappingLongObject < DatatypeMappingOrdinal
57
+ def java_getJavaToString(jsrc)
58
+ # cast is to make sure we have a Long and avoid difficult debugging
59
+ return "((Long)#{jsrc}).toString()"
60
+ end
61
+ def java_getJavaParse(jsrc)
62
+ return "((Long)Long.parseLong(#{jsrc}))"
63
+ end
64
+ end
65
+
66
+ class DatatypeMappingFile < DatatypeMapping
67
+ def getFormCopyTo(field)
68
+ "/* not implemented #{field} */\n"
69
+ #super # TODO
70
+ # /*TPL:9004*/"
71
+ end
72
+ def getFormInitFrom(field)
73
+ "/* not implemented #{field} */\n"
74
+ #super # TODO
75
+ # /*TPL:9004*/"
76
+ end
77
+ end
78
+
79
+ class DatatypeMappingBoolean < DatatypeMapping
80
+ def java_getJavaToString(jsrc)
81
+ return %{((#{jsrc}) ? "true" : "false")}
82
+ end
83
+ def java_getJavaParse(jsrc)
84
+ return %{((#{jsrc}).compareTo("true")==0)}
85
+ end
86
+ end
87
+
88
+ class DatatypeMappingTimeStamp < DatatypeMapping
89
+ def getFormCopyTo(field)
90
+ return %{
91
+ if(get#{field.java_NameBean}().length()>0) { try {
92
+ java.util.Date local=#{::Muml_Classifier::STRUTS_TIMESTAMP_FORMATER_INSTANCE}.parse(get#{field.java_NameBean}());
93
+ java.util.Date gmt = xmda.struts.FormHelper.transformFromCurrentTZToGMT(currentTimeZone, local);
94
+ // the date is saved in the GMT timeZone
95
+ _to.set#{field.java_NameBean}(gmt);
96
+ } catch(java.text.ParseException e) { log.error(e);}\n
97
+ }}
98
+ end
99
+
100
+ def getFormInitFrom(field)
101
+ return "this.set#{field.java_NameBean}(_from.get#{field.java_NameBean}()==null?null:#{::Muml_Classifier::STRUTS_TIMESTAMP_FORMATER_INSTANCE}.format(xmda.struts.FormHelper.transformFromGMTToCurrentTZ(currentTimeZone,_from.get#{field.java_NameBean}())));\n"
102
+ end
103
+ end
104
+
105
+ class DatatypeMappingCalendar < DatatypeMapping
106
+ def getFormCopyTo(field)
107
+ return "if(get#{field.java_NameBean}().length()>0){try {_to.set#{field.java_NameBean}(#{::Muml_Classifier::STRUTS_DATE_FORMATER_INSTANCE}.parse(get#{field.java_NameBean}()));\n} catch(java.text.ParseException e) {log.error(e);}}\n"
108
+ end
109
+
110
+ def getFormInitFrom(field)
111
+ return "this.set#{field.java_NameBean}(_from.get#{field.java_NameBean}()==null?null:#{::Muml_Classifier::STRUTS_DATE_FORMATER_INSTANCE}.format(_from.get#{field.java_NameBean}()));\n"
112
+ end
113
+ end
114
+
115
+ class DatatypeMappingBLOB < DatatypeMapping
116
+ def getFormType(field)
117
+ return field.umlx_getOrCreateClass("org.apache.struts.upload.FormFile")
118
+ end
119
+ def getFormCopyTo(field)
120
+ return "try {_to.set#{field.java_NameBean}(get#{field.java_NameBean}().getFileData());\n} catch(java.io.FileNotFoundException e) {log.error(e);} catch(java.io.IOException e2){log.error(e2);}\n"
121
+ end
122
+
123
+ def getFormInitFrom(field)
124
+ return ""
125
+ #return "this.set#{field.java_NameBean}(_from.get#{field.java_NameBean}()==null?null:#{::Muml_Classifier::STRUTS_DATE_FORMATER_INSTANCE}.format(_from.get#{field.java_NameBean}()));\n"
126
+ end
127
+ end
128
+
129
+ class DatatypeMappingGRAPHVIZ < DatatypeMappingLargeText
130
+ end
131
+
132
+
@@ -0,0 +1,272 @@
1
+ # JSP mapping for data types, enums and classes
2
+
3
+
4
+ class DatatypeMapping
5
+ #returns true if this templates applies to datatype
6
+ def getJSP(datatype,field,owner)
7
+ # inheriting class should redefine this method
8
+ log.error %{getJSP not implemented for #{self.class}}
9
+ return %{<!-- TODO: implement ruby getJSP for #{self.class} --!>}
10
+ end
11
+
12
+ #adds special action for this type
13
+ def addActionFieldMethod!(field,action,form)
14
+ end
15
+
16
+ end
17
+
18
+
19
+ class DatatypeMappingText < DatatypeMapping
20
+ def getJSP(datatype,field,owner)
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}/>}
23
+ end
24
+ end
25
+
26
+ class DatatypeMappingLargeText < DatatypeMappingText
27
+ def getJSP(datatype,field,owner)
28
+ n=datatype.java_Name.downcase #TODO
29
+ #maxlength not supported by textarea
30
+ return %{<html:textarea property="#{field.java_Name}" styleId="#{n}" #{::Muml_DataType::STRUTS_ERROR_STYLE}/>}
31
+ end
32
+ end
33
+
34
+ class DatatypeMappingURL < DatatypeMappingText
35
+ def getJSP(datatype,field,owner)
36
+ # cf: http://www.osix.net/modules/article/?id=586
37
+ n=datatype.java_Name.downcase #TODO
38
+ return <<END
39
+ <html:text property="#{field.java_Name}" size="20%" maxlength="#{self.maxStringLength}" styleId="#{n}" #{::Muml_DataType::STRUTS_ERROR_STYLE} disabled="true"/>
40
+
41
+ <a onclick="javascript:document.getElementById('#{n}').disabled=false;document.getElementById('#{n}').value='';;">
42
+ <img src="res//orange/image/edit.gif" />
43
+ </a>&nbsp;<a onclick="javascript:window.open(document.forms[0].#{field.java_Name}.value);return false">
44
+ <img src="res//orange/image/go.gif" />
45
+ </a>
46
+ END
47
+ end
48
+ end
49
+
50
+
51
+ class DatatypeMappingInteger < DatatypeMappingOrdinal
52
+ def getJSP(datatype,field,owner)
53
+ super
54
+ end
55
+ end
56
+
57
+ class DatatypeMappingLong < DatatypeMappingOrdinal
58
+ def getJSP(datatype,field,owner)
59
+ super
60
+ end
61
+ end
62
+
63
+ class DatatypeMappingFile < DatatypeMapping
64
+ def getJSP(datatype,field,owner)
65
+ n=datatype.java_Name.downcase #TODO
66
+ return %{<html:file property="#{field.java_Name}" size="20%" maxlength="30" styleId="#{n}" #{::Muml_DataType::STRUTS_ERROR_STYLE}/>}
67
+ end
68
+ end
69
+
70
+ class DatatypeMappingBoolean < DatatypeMapping
71
+ def getJSP(datatype,field,owner)
72
+ if field.context[:jspUseXmdaTaglib]
73
+ return %{<xmda:checkbox property="#{field.java_Name}"/>\n}
74
+ else
75
+ return %{
76
+ <html:hidden property="#{field.java_Name}" />
77
+ <logic:equal value="true" property="#{field.java_Name}" name="#{STRUTS_BEAN_KEY}" >
78
+ <input type="checkbox" name="#{field.java_Name}_tmp" onClick='document.forms[0].#{field.java_Name}.value=this.checked;' checked />
79
+ </logic:equal>
80
+ <logic:notEqual value="true" property="#{field.java_Name}" name="#{STRUTS_BEAN_KEY}" >
81
+ <input type="checkbox" name="#{field.java_Name}_tmp" onClick='document.forms[0].#{field.java_Name}.value=this.checked;' />
82
+ </logic:notEqual>
83
+ }
84
+ end
85
+ end
86
+ end
87
+
88
+ class DatatypeMappingTimeStamp < DatatypeMapping
89
+ def getJSP(datatype,field,owner)
90
+ n="string"
91
+ #TODO: provide nicer html template
92
+ #xmda:dateText isCalendar defaults to "false"
93
+ return <<END
94
+ <xmda:dateText property="#{field.java_Name}" size="20%" maxlength="30" styleId="#{field.java_Name}Id" #{::Muml_DataType::STRUTS_ERROR_STYLE}/>
95
+ <script type="text/javascript">
96
+ function formatDate(cal) {
97
+ var date = cal.date;
98
+ var field = document.getElementById("#{field.java_Name}");
99
+ var locale = document.getElementById("#{field.java_Name}Locale").value;
100
+ field.value = transformToServerFormat(date, field, locale);
101
+
102
+ }
103
+ Calendar.setup(\{
104
+ inputField : "#{field.java_Name}Id", // id of the input field
105
+ localeField : "#{field.java_Name}Locale", //field containing locale (hidden)
106
+ showsTime : true,
107
+ timeFormat : "24",
108
+ onUpdate : formatDate
109
+ \});
110
+ </script>
111
+ END
112
+
113
+ end
114
+ end
115
+
116
+ class DatatypeMappingCalendar < DatatypeMapping
117
+ def getJSP(datatype,field,owner)
118
+ n="string"
119
+ #TODO: provide nicer html template
120
+ #isCalendar="true"
121
+ return <<END
122
+ <xmda:dateText isCalendar="true" property="#{field.java_Name}" size="20%" maxlength="#{self.maxStringLength}" styleId="#{field.java_Name}Id" #{::Muml_DataType::STRUTS_ERROR_STYLE}/>
123
+ <script type="text/javascript">
124
+ function formatDate(cal) {
125
+ var date = cal.date;
126
+ var field = document.getElementById("#{field.java_Name}");
127
+ var locale = document.getElementById("#{field.java_Name}Locale").value;
128
+ field.value = transformToServerFormat(date, field, locale);
129
+ }
130
+ Calendar.setup(\{
131
+ inputField : "#{field.java_Name}Id", // id of the input field
132
+ localeField : "#{field.java_Name}Locale", //field containing locale (hidden)
133
+ onUpdate : formatDate
134
+ \});
135
+ </script>
136
+ END
137
+ end
138
+ end
139
+
140
+ #Template used when no correct was found.
141
+ class DatatypeMappingerror # <
142
+ include Singleton
143
+ def getJSP(datatype,field,owner)
144
+ return %{<!-- TODO: fallback template used for datatype #{datatype} -->}
145
+ end
146
+ end
147
+
148
+ class DatatypeMappingGenericClass < DatatypeMapping
149
+ def getJSP(datatype,field,owner)
150
+ return "<!-- TODO:JSP #{self.class.name} -->"
151
+ end
152
+ end
153
+
154
+ class DatatypeMappingGenericEnum < DatatypeMapping
155
+ def getJSP(datatype,field,owner)
156
+ if field.context[:jspUseXmdaTaglib]
157
+ return getJSP_XmdaTagLib(datatype,field,owner)
158
+ else
159
+ return getJSP_StrutsOnly(datatype,field,owner)
160
+ end
161
+ end
162
+
163
+ def getJSP_XmdaTagLib(datatype,field,owner)
164
+ return %{
165
+ <html:select property="#{field.java_Name}" >
166
+ <xmda:i18noptionsCollection name="#{owner.java_Name}StrutsForm" property="#{field.java_Name}Sug" label="label" value="value"/>
167
+ </html:select>
168
+ }
169
+ end
170
+
171
+ def getJSP_StrutsOnly(datatype,field,owner)
172
+ return <<END
173
+ <html:select property="#{field.java_Name}" >
174
+ <logic:iterate id="_#{field.java_Name}" name="#{owner.java_Name}StrutsForm" property="#{field.java_Name}Sug" >
175
+ <option value="<bean:write name="_#{field.java_Name}" property="value" />" >
176
+ <bean:define id="_id">
177
+ <bean:write name="_#{field.java_Name}" property="label" />
178
+ </bean:define>
179
+ <%-- TODO: eviter entrelacement balises XML --%>
180
+ <bean:message key="<%= _id %>"/>
181
+ </option>
182
+ </logic:iterate>
183
+ </html:select>
184
+ <SCRIPT> <%-- TODO : supprimer javascript --%>
185
+ document.forms[0].#{field.java_Name}.value="<bean:write name="#{owner.java_Name}StrutsForm" property="#{field.java_Name}" />";
186
+ </SCRIPT>
187
+ END
188
+ end
189
+ end
190
+
191
+
192
+ class DatatypeMappingBLOB < DatatypeMapping
193
+ def getJSP(datatype,field,owner)
194
+ n=datatype.java_Name.downcase #TODO
195
+ return %{<html:file property="#{field.java_Name}" size="20%" maxlength="30" styleId="#{n}" #{::Muml_DataType::STRUTS_ERROR_STYLE}/>}
196
+ end
197
+ end
198
+ class DatatypeMappingIMG < DatatypeMappingBLOB
199
+ def getJSP(datatype,field,owner)
200
+ n=datatype.java_Name.downcase #TODO
201
+ return %{
202
+ #{super}
203
+ <br/>
204
+ <html:img action="#{owner.context[:strutsActionName]}?#{Muml_Classifier::STRUTS_DISPATCH_FIELD_NAME}=#{actionMethName(field)}" /> &nbsp;
205
+ }
206
+
207
+ end
208
+
209
+ def actionMethName(field)
210
+ return "#{field.java_Name}_img"
211
+ end
212
+
213
+
214
+ #adds special action for this type
215
+ def addActionFieldMethod!(field,action,form)
216
+ # generate method returning gif image
217
+ m=action.struts_createAndAddExecuteOperation(actionMethName(field))
218
+ m.java_code=<<END
219
+ #{action.struts_formCastJavaCode(form)}
220
+ return #{action.struts_getActionHelper.java_qualifiedName}.writeGif(mapping,response, form.getReference().get#{field.java_NameBean}());
221
+ END
222
+
223
+
224
+ end
225
+ end
226
+
227
+ class DatatypeMappingGRAPHVIZ < DatatypeMappingLargeText
228
+ def actionMethName(field)
229
+ return "#{field.java_Name}_img"
230
+ end
231
+ def actionMapMethName(field)
232
+ return "#{field.java_Name}_map"
233
+ end
234
+ def actionMapUrl(datatype,field,owner)
235
+ return "/webapp/GraphVizDemoall-submit.do?#{Muml_Classifier::STRUTS_DISPATCH_FIELD_NAME}=#{actionMapMethName(field)}#myMap"
236
+ end
237
+ def getJSP(datatype,field,owner)
238
+ s=field.uml_isReadOnly? ? "" : super(datatype,field,owner)
239
+
240
+ return %{#{s}#{s.empty? ? "" : "<br>" }<html:img action="#{owner.context[:strutsActionName]}?#{Muml_Classifier::STRUTS_DISPATCH_FIELD_NAME}=#{actionMethName(field)}" usemap="#{actionMapUrl(datatype,field,owner)}"/>}
241
+ end
242
+
243
+ #adds special action for this type
244
+ def addActionFieldMethod!(field,action,form)
245
+ m=action.struts_createAndAddExecuteOperation(actionMethName(field))
246
+ m.java_code=<<END
247
+ #{action.struts_formCastJavaCode(form)}
248
+ return #{action.struts_getActionHelper.java_qualifiedName}.writeGraphviz(mapping,response, form.getReference().get#{field.java_NameBean}());
249
+ END
250
+
251
+ # generate method returning map (clickable zones)
252
+ m2=action.struts_createAndAddExecuteOperation(actionMapMethName(field))
253
+ m2.java_code=<<END
254
+ #{action.struts_formCastJavaCode(form)}
255
+ return #{action.struts_getActionHelper.java_qualifiedName}.writeGraphvizMap(mapping,response, form.getReference().get#{field.java_NameBean}());
256
+ END
257
+ end
258
+
259
+ end
260
+ class DatatypeMappingEmailAddress < DatatypeMappingText
261
+ end
262
+
263
+ class DatatypeMappingPassword < DatatypeMappingText
264
+ def getJSP(datatype,field,owner)
265
+ n=datatype.java_Name.downcase #TODO
266
+ return %{<html:password property="#{field.java_Name}" size="20%" maxlength="#{self.maxStringLength}" styleId="#{n}" #{::Muml_DataType::STRUTS_ERROR_STYLE}/>}
267
+ end
268
+ end
269
+
270
+
271
+
272
+
@@ -0,0 +1,87 @@
1
+
2
+
3
+ module Mrdf_Repository
4
+ def struts_createDataTypeHelpers!
5
+ DatatypeMapping.instance.getMappings.each { |m|
6
+ m.struts_generateHelper(self)
7
+ }
8
+ end
9
+ end
10
+
11
+ class DatatypeMapping
12
+ def java_Name
13
+ return self.class.name
14
+ end
15
+ def java_qualifiedName
16
+ return rdf_uri
17
+ end
18
+ def rdf_uri
19
+ return "xmda.datatypes.#{java_Name}"
20
+ end
21
+ def struts_generateHelper(model)
22
+ return unless self.respond_to?("java_getType")
23
+ c=model.umlx_reserved_model.umlx_getOrCreateClass(java_qualifiedName)
24
+ return c unless c.umlx_external?
25
+ c.umlx_external=RDF_FALSE
26
+ c.db_isTransient=RDF_TRUE
27
+ c.struts_isForm=RDF_FALSE
28
+ c.umlx_businessMethod=RDF_FALSE
29
+
30
+ c.umlx_createAndAddGeneralization(self.class.superclass.instance.struts_generateHelper(model)) if self.class.superclass.respond_to?("instance")
31
+ c.java_customCode=java_helper_customCode
32
+ java_helper_addMethods!(c)
33
+ return c
34
+ end
35
+ def java_helper_customCode
36
+ return if self.class==DatatypeMapping
37
+ return <<END
38
+ protected #{java_Name}() {};
39
+ private static #{java_Name} instance=new #{java_Name}();
40
+ public #{java_Name} getInstance() {
41
+ return instance;
42
+ }
43
+
44
+ public #{java_getType} parse(final String str,final #{java_getType} nullCast ) {
45
+ #{if respond_to?(:java_getJavaParse)
46
+ "return #{java_getJavaParse("str")};"
47
+ else
48
+ %{throw new java.lang.RuntimeException("Method not implemented");}
49
+ end
50
+ }
51
+ }
52
+
53
+ public String toString(final #{java_getType} elt) {
54
+ #{if respond_to?(:java_getJavaToString)
55
+ "return #{java_getJavaToString("elt")};"
56
+ else
57
+ %{throw new java.lang.RuntimeException("Method not implemented");}
58
+ end
59
+ }
60
+ }
61
+
62
+ END
63
+ end
64
+
65
+ def java_helper_addMethods!(c)
66
+ return
67
+ m=c.umlx_createAndAddOperation(self.rdf_uri+"_parse","parse")
68
+ r=m.umlx_createAndAddReturnParameter(m.rdf_uri+"ret")
69
+ r.uml_type=c.umlx_getOrCreateClass("java.lang.Object") #TODO
70
+
71
+ r=m.umlx_createAndAddParameter(m.rdf_uri+"tr","tr")
72
+ r.uml_type=c.umlx_dataType_string
73
+
74
+ m=c.umlx_createAndAddOperation(self.rdf_uri+"_parse","to_s")
75
+ r=m.umlx_createAndAddReturnParameter(m.rdf_uri+"ret")
76
+ r.uml_type=c.umlx_getOrCreateClass("java.lang.Object") #TODO
77
+
78
+ r=m.umlx_createAndAddParameter(m.rdf_uri+"elt","elt")
79
+ r.uml_type=c.umlx_dataType_string
80
+
81
+ end
82
+
83
+ end
84
+
85
+ class DatatypeMapping
86
+ end
87
+