ontomde-java 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
+