ontomde-java 2.0.0 → 2.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +11 -0
- data/Manifest.txt +1 -51
- data/lib/ontomde-java.rb +2 -0
- data/lib/ontomde-java/crank.rb +8 -8
- data/lib/ontomde-java/crank/crankJpa.rb +58 -8
- data/lib/ontomde-java/crank/main.rb +38 -21
- data/lib/ontomde-java/frontend/command.rb +7 -7
- data/lib/ontomde-java/frontend/command.rdoc +0 -583
- data/lib/ontomde-java/frontend/defaultOptions.rb +12 -7
- data/lib/ontomde-java/frontend/options.rb +19 -2
- data/lib/ontomde-java/frontend/steps.rb +36 -5
- data/lib/ontomde-java/java/accessorCode.rb +250 -94
- data/lib/ontomde-java/java/accessorSignature.rb +50 -4
- data/lib/ontomde-java/java/annotationOntoMDE.rb +38 -27
- data/lib/ontomde-java/java/component.rb +141 -68
- data/lib/ontomde-java/java/enumAssignable.rb +46 -5
- data/lib/ontomde-java/java/java.rb +111 -40
- data/lib/ontomde-java/java/javaDatatypeMapping.rb +35 -1
- data/lib/ontomde-java/java/javadoc.rb +35 -22
- data/lib/ontomde-java/java/operationAsClass.rb +13 -0
- data/lib/ontomde-java/java/security.rb +10 -2
- data/lib/ontomde-java/java/stateMachine.rb +137 -74
- data/lib/ontomde-java/java/tenant.rb +1 -0
- data/lib/ontomde-java/java/xsd.rb +1 -1
- data/lib/ontomde-java/jpa/configuration.rb +25 -1
- data/lib/ontomde-java/jpa/finder.rb +48 -13
- data/lib/ontomde-java/jpa/jpa.rb +30 -14
- data/lib/ontomde-java/jpa/mapping.rb +114 -60
- data/lib/ontomde-java/jpa/redefined.rb +21 -5
- data/lib/ontomde-java/jpa/simulationAutoImplement.rb +1 -1
- data/lib/ontomde-java/jpdl/processOperationToClass.rb +1 -2
- data/lib/ontomde-java/kbjava/rdfToJava.rb +25 -16
- data/lib/ontomde-java/struts.rb +1 -1
- data/lib/ontomde-java/struts/MessageResources.rb +15 -6
- data/lib/ontomde-java/struts/action.rb +37 -13
- data/lib/ontomde-java/struts/form.rb +97 -7
- data/lib/ontomde-java/struts/header.rb +7 -3
- data/lib/ontomde-java/struts/jsp_edit.rb +54 -24
- data/lib/ontomde-java/struts/jsp_edit_js.rb +1 -1
- data/lib/ontomde-java/struts/jsp_index.rb +6 -4
- data/lib/ontomde-java/struts/mappingForJsp.rb +11 -7
- data/lib/ontomde-java/struts/mappingToJavaHierarchy.rb +16 -2
- data/lib/ontomde-java/version.rb +1 -1
- data/lib/ontomde-java/vmware/vso.rb +329 -0
- data/test/test_export_ea7_1_829.rb +5 -0
- data/test/test_export_ea7_1_833.rb +5 -0
- data/test/test_export_ea7_5_843.rb +5 -0
- data/test/test_export_magicDraw.rb +4 -0
- data/test/test_export_oe530.rb +1 -1
- data/test/test_export_oe600.rb +1 -1
- data/test/test_export_rsm60.rb +1 -1
- data/test/{uml_test.rb → test_export_unitTests.rb} +6 -1
- metadata +9 -56
- data/generateRdocFile.sh +0 -16
- data/profiling.xls +0 -0
- data/test/.classpath +0 -14
- data/test/.project +0 -17
- data/test/.settings/org.eclipse.jdt.core.prefs +0 -23
- data/test/Rakefile +0 -71
- data/test/build.xml +0 -34
- data/test/classpath.rb +0 -15
- data/test/lib/junit-4.1.jar +0 -0
- data/test/load1.rb +0 -3
- data/test/load2.rb +0 -3
- data/test/log4j.properties +0 -46
- data/test/model/.project +0 -11
- data/test/model/BigProject.mdzip +0 -0
- data/test/model/BigProject.mdzip.nt +0 -102866
- data/test/model/ClassDiagram.EntArch.gif +0 -0
- data/test/model/ClassDiagram.emx.gif +0 -0
- data/test/model/ClassDiagram.mdzip.gif +0 -0
- data/test/model/model_ea71.bis.ea.xmi +0 -149
- data/test/model/model_ea71.ea.xmi +0 -4470
- data/test/model/model_ea71.eap +0 -0
- data/test/model/model_ea71_README.txt +0 -8
- data/test/model/multipleInheritance.emx +0 -466
- data/test/model/multipleInheritance.emx.nt +0 -2428
- data/test/model/simple1-530.ofp +0 -0
- data/test/model/simple1-includedAsReference.emx +0 -169
- data/test/model/simple1.emx +0 -3729
- data/test/model/simple1.emx.fragments.nt +0 -81
- data/test/model/simple1.emx.nt +0 -5760
- data/test/model/simple1.mdzip +0 -0
- data/test/model/simple1.mdzip.nt +0 -11500
- data/test/model/simple1.oe530.nt +0 -1986
- data/test/model/simple1.oe600.nt +0 -1627
- data/test/src/RuntimeTest.java +0 -656
- data/test/src/testsLevel1.java +0 -174
- data/test/src/testsLevel2.java +0 -29
- data/test/src/testsLevel3.java +0 -40
- data/test/test-ea7.sh +0 -15
- data/test/test-magicDraw.sh +0 -10
- data/test/test-mi.sh +0 -9
- data/test/test-oe530.sh +0 -10
- data/test/test-oe600.sh +0 -11
- data/test/test-rsm.sh +0 -11
- data/test/test_export_ea71.rb +0 -5
- data/test/trace +0 -419
- data/test/uml_test.xls +0 -0
- data/test/unit_test.rb +0 -6
@@ -33,9 +33,9 @@ module Muml_Class
|
|
33
33
|
param=context[:db_useExtraTypeParameterForFindAll] ? "(#{self.java_qualifiedName})null" : ""
|
34
34
|
tenantClause=''
|
35
35
|
if context[:multiTenant]
|
36
|
-
tenantClause="#{
|
36
|
+
tenantClause="get#{TENANT_FIELD_BEAN_NAME}(),"
|
37
37
|
end
|
38
|
-
return "#{java_DAOClass_one.java_qualifiedName}.findAll(#{tenantClause}#{param})"
|
38
|
+
return "#{java_DAOClass_one.java_qualifiedName}.findAll(#{tenantClause}#{param},0,-1)"
|
39
39
|
end
|
40
40
|
|
41
41
|
#Method redefined from ontomde-java
|
@@ -46,7 +46,13 @@ module Muml_Class
|
|
46
46
|
#TODO: recherche du composite commun
|
47
47
|
#TODO: transient object do not have a valid uniq id
|
48
48
|
|
49
|
-
#
|
49
|
+
# When otherSide has cardinality 1, we do not
|
50
|
+
# suggest an element if it is already assigned.
|
51
|
+
# Feature is only available when other side is navigable
|
52
|
+
# because we don't want a big overhead.
|
53
|
+
oe=oa.umlx_otherEnd
|
54
|
+
filterOut=!oe.nil? && oe.umlx_isNavigable? && oe.umlx_oneSide?
|
55
|
+
|
50
56
|
if !oa.umlx_manySide?
|
51
57
|
write( %{
|
52
58
|
java.util.List<#{oa.uml_type_one.java_qualifiedName}> ret=#{oa.uml_type_one.db_getFindAllCall};
|
@@ -54,7 +60,17 @@ java.util.List<#{oa.uml_type_one.java_qualifiedName}> ret=#{oa.uml_type_one.db_g
|
|
54
60
|
if(elt!=null && !ret.contains(elt)) {
|
55
61
|
ret.add(elt);
|
56
62
|
}
|
57
|
-
|
63
|
+
#{%{java.util.Iterator<?> iter=ret.iterator();
|
64
|
+
#{oa.uml_type_one.java_qualifiedName} item=null;
|
65
|
+
while(iter.hasNext()){
|
66
|
+
item=(#{oa.uml_type_one.java_qualifiedName}) iter.next();
|
67
|
+
if(item.get#{oe.java_NameBean}()!=null && item.get#{oe.java_NameBean}()!=this) {
|
68
|
+
iter.remove();
|
69
|
+
}
|
70
|
+
}} if filterOut}
|
71
|
+
|
72
|
+
|
73
|
+
return ret;\n})
|
58
74
|
else
|
59
75
|
write( %{
|
60
76
|
java.util.List<#{oa.uml_type_one.java_qualifiedName}> ret=#{oa.uml_type_one.db_getFindAllCall};
|
@@ -63,7 +79,7 @@ java.util.List<#{oa.uml_type_one.java_qualifiedName}> ret=#{oa.uml_type_one.db_g
|
|
63
79
|
java.util.Iterator<?> iter=get#{oa.java_NameBean}().iterator();
|
64
80
|
while(iter.hasNext()){
|
65
81
|
item=(#{oa.uml_type_one.java_qualifiedName}) iter.next();
|
66
|
-
if(!ret.contains(item)) {
|
82
|
+
if(!ret.contains(item) #{"&& (item.get#{oe.java_NameBean}()==null || item.get#{oe.java_NameBean}()==this)" if filterOut} ) {
|
67
83
|
ret.add(item);
|
68
84
|
}
|
69
85
|
}
|
@@ -40,7 +40,7 @@ module Muml_Operation
|
|
40
40
|
#not a persistent class
|
41
41
|
return
|
42
42
|
elsif fp.umlx_oneSide?
|
43
|
-
self.java_code=%{#{JPA_TEST_CODE_TOP}\nreturn #{fp.uml_type_one.db_getFindAllCall}.get(0);}
|
43
|
+
self.java_code=%{#{JPA_TEST_CODE_TOP}\nreturn #{fp.uml_type_one.db_getFindAllCall}.isEmpty() ? null : #{fp.uml_type_one.db_getFindAllCall}.get(0);}
|
44
44
|
elsif fp.uml_isOrdered?
|
45
45
|
self.java_code=%{#{JPA_TEST_CODE_TOP}\nreturn #{fp.uml_type_one.db_getFindAllCall};}
|
46
46
|
else
|
@@ -133,8 +133,7 @@ module Muml_Class
|
|
133
133
|
#m.uml_isStatic=RDF_TRUE
|
134
134
|
|
135
135
|
param=m.umlx_createAndAddParameter(m.rdf_uri+"_this","_this")
|
136
|
-
i=c.
|
137
|
-
i.java_isGeneric=RDF_TRUE
|
136
|
+
i=c.umlx_getOrCreateGeneric(DB::EntityInterface,DB::EntityGenericParameter)
|
138
137
|
param.uml_type=i
|
139
138
|
param.uml_direction=Cuml_ParameterDirectionKind::In
|
140
139
|
param.uml_upperValue=umlx_literal(1)
|
@@ -91,20 +91,20 @@ END
|
|
91
91
|
#also avoid org.junit.* import notused warning in Eclipse
|
92
92
|
n.java_customCode="@Test\npublic void replaceWithMeaningfulTest(){}\n"
|
93
93
|
|
94
|
-
|
95
|
-
#TODO merge referenced items
|
96
|
-
m.java_code="return this;"
|
97
|
-
p=m.umlx_createAndAddReturnParameter(m.rdf_uri+'_ret',"return")
|
98
|
-
p.uml_type=n
|
99
|
-
m.umlx_businessMethod=RDF_FALSE
|
94
|
+
return if uml_type.context[:rel_mapping] == 'none'
|
100
95
|
|
96
|
+
m=n.umlx_createAndAddOperation(n.rdf_uri+"merge","merge");
|
97
|
+
#TODO merge referenced items
|
98
|
+
m.java_code="return this;"
|
99
|
+
p=m.umlx_createAndAddReturnParameter(m.rdf_uri+'_ret',"return")
|
100
|
+
p.uml_type=n
|
101
|
+
m.umlx_businessMethod=RDF_FALSE
|
101
102
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
103
|
+
persist=n.umlx_createAndAddOperation(n.rdf_uri+"persist","persist");
|
104
|
+
persist.java_code="" # #{java_debug(%{log.debug("persisting referenced persistent elements");}\n}"
|
105
|
+
p=persist.umlx_createAndAddReturnParameter(persist.rdf_uri+'_ret',"return")
|
106
|
+
p.uml_type=n
|
107
|
+
persist.umlx_businessMethod=RDF_FALSE
|
108
108
|
|
109
109
|
#v=n.umlx_createAndAddProperty(n.rdf_uri+"__source","source");
|
110
110
|
|
@@ -128,7 +128,7 @@ END
|
|
128
128
|
u=d.rdf_type.kbjava_uml_model_element(@kbjava_umlSourceModel)
|
129
129
|
p=n.umlx_createAndAddProperty(n.rdf_uri+d.rdf_uri,"#{d.kb_UML_INSTANCE_ALIAS}");
|
130
130
|
p.uml_type=u
|
131
|
-
p.uml_isReadOnly=
|
131
|
+
p.uml_isReadOnly=RDF_FALSE
|
132
132
|
p.java_code="null"
|
133
133
|
|
134
134
|
j="#{j}\n set#{p.java_NameBean}(source.get#{p.java_NameBean}());"
|
@@ -138,7 +138,7 @@ END
|
|
138
138
|
m=n.umlx_createAndAddOperation(n.rdf_uri+"initData","initData")
|
139
139
|
m.umlx_businessMethod=RDF_FALSE
|
140
140
|
m.java_code="#{j} return this;"
|
141
|
-
m.java_annotation_add(%{@SuppressWarnings("unused")})
|
141
|
+
#m.java_annotation_add(%{@SuppressWarnings("unused")})
|
142
142
|
p=m.umlx_createAndAddReturnParameter(m.rdf_uri+'_ret',"return")
|
143
143
|
p.uml_type=n
|
144
144
|
|
@@ -188,6 +188,7 @@ class ::Crdfs_Class
|
|
188
188
|
# Create attributes and every init methods (body expected)
|
189
189
|
uml_type.kb_coverage_add(self)
|
190
190
|
p=umlDataClass.umlx_createAndAddProperty(umlDataClass.rdf_uri+kbjava_varName,kbjava_varName.to_s)
|
191
|
+
p.uml_isReadOnly=RDF_TRUE
|
191
192
|
p.uml_type=uml_type
|
192
193
|
p.uml_visibility= Cuml_VisibilityKind::Private
|
193
194
|
#p.java_noAccessors=RDF_TRUE
|
@@ -212,8 +213,8 @@ class ::Crdfs_Class
|
|
212
213
|
#p=self.kbjava_property_one
|
213
214
|
i.java_code= <<ENDinit
|
214
215
|
if(#{p.java_Name}==null){
|
215
|
-
#{p.
|
216
|
-
#{p.
|
216
|
+
#{p.uml_type_one.java_qualifiedName} elt= new #{uml_type.java_qualifiedName}();
|
217
|
+
#{p.java_Name}=elt;
|
217
218
|
#{mtk_stss{kbjava_writeJavaObjectSetters(dataSource)}}
|
218
219
|
}
|
219
220
|
return #{p.java_Name};
|
@@ -359,6 +360,14 @@ class DatatypeMappingLong < DatatypeMappingOrdinal
|
|
359
360
|
return valitem.gsub(/^0*([0-9])/,'\1')
|
360
361
|
end
|
361
362
|
end
|
363
|
+
class DatatypeMappingLongObject < DatatypeMappingOrdinal
|
364
|
+
# Protege string to Java code conversions
|
365
|
+
def prot_convertToJava(umlprop,valitem)
|
366
|
+
#Remove leading 0 (octal)
|
367
|
+
return %{new Long("#{valitem.gsub(/^0*([0-9])/,'\1')}")}
|
368
|
+
end
|
369
|
+
end
|
370
|
+
|
362
371
|
class DatatypeMappingFile < DatatypeMapping
|
363
372
|
# Protege string to Java code conversions
|
364
373
|
def prot_convertToJava(umlprop,valitem)
|
data/lib/ontomde-java/struts.rb
CHANGED
@@ -20,8 +20,8 @@ require 'ontomde-java/struts/blob.rb'
|
|
20
20
|
require 'ontomde-java/struts/reloadAction.rb'
|
21
21
|
require 'ontomde-java/struts/xmlForm.rb'
|
22
22
|
require 'ontomde-java/struts/spring.rb'
|
23
|
-
require 'ontomde-java/struts/mappingForBean.rb'
|
24
23
|
require 'ontomde-java/struts/mappingForJsp.rb'
|
25
24
|
require 'ontomde-java/struts/mappingToJavaHierarchy.rb'
|
26
25
|
require 'ontomde-java/struts/exceptionHandling.rb'
|
26
|
+
require 'ontomde-java/struts/mappingForBean.rb'
|
27
27
|
|
@@ -87,13 +87,14 @@ def writeMessagesFromModel(locale,fillFromModel=false,test=false)
|
|
87
87
|
write "# Enumerations\n"
|
88
88
|
write "# *********************\n"
|
89
89
|
uml_Class_all.each {|c|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
90
|
+
if c.kind_of?(Muml_Enumeration)
|
91
|
+
java_genEnumMsgRes(c,fillFromModel,locale)
|
92
|
+
else
|
93
|
+
c.uml_nestedClassifier.each { |nc|
|
94
|
+
next unless nc.kind_of?(Muml_Enumeration)
|
95
|
+
java_genEnumMsgRes(nc,fillFromModel,locale)
|
96
96
|
}
|
97
|
+
end
|
97
98
|
}
|
98
99
|
|
99
100
|
write "# *********************\n"
|
@@ -101,6 +102,14 @@ def writeMessagesFromModel(locale,fillFromModel=false,test=false)
|
|
101
102
|
write "# *********************\n"
|
102
103
|
|
103
104
|
end
|
105
|
+
def java_genEnumMsgRes(c,fillFromModel,locale)
|
106
|
+
msg=c.java_enumAssignableDataType_inv.empty? ? "-- --" : "create and add"
|
107
|
+
struts_writeMsgRes("#{c.java_qualifiedName}.#{::Muml_Property::NIL_LVB_RES_KEY}",msg,!fillFromModel,locale)
|
108
|
+
|
109
|
+
c.uml_ownedLiteral.each {|ol|
|
110
|
+
struts_writeMsgRes("#{c.java_qualifiedName}.#{ol.java_Name}",ol.to_s,!fillFromModel,locale)
|
111
|
+
}
|
112
|
+
end
|
104
113
|
|
105
114
|
MESSAGE_RES_EN=<<ENDEN
|
106
115
|
java.lang.Boolean.true=true
|
@@ -14,7 +14,7 @@ module Muml_Classifier
|
|
14
14
|
#terminate local treatment and return control to calling controller.
|
15
15
|
STRUTS_RETURN_ACTION="returnTo"
|
16
16
|
#Resume local treatment avect geting control back from another controler.
|
17
|
-
STRUTS_RESUME_ACTION="
|
17
|
+
STRUTS_RESUME_ACTION="resumeAct"
|
18
18
|
|
19
19
|
STRUTS_REFRESH_ACTION="executeRefresh"
|
20
20
|
STRUTS_SGBD_STATE="sgbd_state"
|
@@ -75,7 +75,7 @@ ENDMETH
|
|
75
75
|
|
76
76
|
def struts_addActionBiz!
|
77
77
|
action=struts_createAndAddActionBase!
|
78
|
-
|
78
|
+
struts_addStartEditActionBiz!(action)
|
79
79
|
|
80
80
|
struts_addsetTimeZoneAction!(action)
|
81
81
|
struts_addsetSkinAction!(action)
|
@@ -114,6 +114,14 @@ ENDMETH
|
|
114
114
|
end
|
115
115
|
|
116
116
|
def struts_addProceedBizAction!(action)
|
117
|
+
# form contains a parameter generated from an operation return parameter
|
118
|
+
# if true, proceed has no return to display. Thus, return screen is skipped
|
119
|
+
hasMethodToClassReturn=false;
|
120
|
+
struts_formAttribute.each { |a|
|
121
|
+
hasMethodToClassReturn=a.java_isMethodToClassReturn?
|
122
|
+
break if hasMethodToClassReturn
|
123
|
+
}
|
124
|
+
|
117
125
|
proceed=action.struts_createAndAddExecuteOperation(STRUTS_PROCEED_ACTION)
|
118
126
|
proceed.java_code=<<ENDMETH
|
119
127
|
#{struts_formCastJavaCode}
|
@@ -121,13 +129,28 @@ ENDMETH
|
|
121
129
|
form.getReference().proceed();
|
122
130
|
form.initFromReference();
|
123
131
|
form.set#{STRUTS_DISPATCH_FIELD_METH}("#{STRUTS_CREATE_ACTION}");
|
124
|
-
|
132
|
+
#{!hasMethodToClassReturn ? "return returnTo(mapping, abstractForm, request, response);": %{return new org.apache.struts.action.ActionForward("/pages/#{java_InternalFilePath}form/#{java_Name}#{STRUTS_RESULTS_FWD}.jsp",false);}}
|
125
133
|
ENDMETH
|
126
134
|
end
|
127
135
|
|
128
136
|
STRUTS_SESSION_KEY_EditAction="objToEdit"
|
137
|
+
JUMP_TO_PROCEED=<<ENDSKIP
|
138
|
+
if (form.getReference().get#{STRUTS_APPLY_TO_PROP}()!=null) {
|
139
|
+
//form contains only #{STRUTS_APPLY_TO_PROP} field and it is not null
|
140
|
+
//skip input screen and jump to #{STRUTS_PROCEED_ACTION}
|
141
|
+
return #{STRUTS_PROCEED_ACTION}(mapping, abstractForm, request, response);
|
142
|
+
}
|
143
|
+
ENDSKIP
|
129
144
|
|
130
|
-
def
|
145
|
+
def struts_addStartEditActionBiz!(action)
|
146
|
+
#puts "############# #{uml_name} #{struts_formAttribute.length}"
|
147
|
+
# add code to skip input screen when no user input is necessary
|
148
|
+
# (first attribute is applyTo)
|
149
|
+
optCode= struts_formAttribute(false,true).length > 0 ? '' : JUMP_TO_PROCEED
|
150
|
+
return struts_addStartEditAction!(action,optCode)
|
151
|
+
end
|
152
|
+
|
153
|
+
def struts_addStartEditAction!(action,optCode="")
|
131
154
|
edit=action.struts_createAndAddExecuteOperation(STRUTS_ACTION_STARTEDIT)
|
132
155
|
edit.java_code= <<ENDCODE
|
133
156
|
#{struts_formCastJavaCode}
|
@@ -136,7 +159,7 @@ ENDMETH
|
|
136
159
|
session.removeAttribute("#{STRUTS_SESSION_KEY_EditAction}");
|
137
160
|
form.setReference(obj);
|
138
161
|
form.initFromReference();
|
139
|
-
form.setSgbd_state("#{STRUTS_UPDATE_ACTION}");
|
162
|
+
form.setSgbd_state("#{STRUTS_UPDATE_ACTION}"); #{optCode}
|
140
163
|
return mapping.findForward("#{STRUTS_INPUT_FWD}");
|
141
164
|
ENDCODE
|
142
165
|
end
|
@@ -250,6 +273,14 @@ ENDCODE
|
|
250
273
|
end
|
251
274
|
|
252
275
|
|
276
|
+
PROCEED_ACTION_CODE=<<ENDTPL
|
277
|
+
String msg="unexpected value for #{STRUTS_SGBD_STATE_PROP} in #{STRUTS_PROCEED_ACTION}";
|
278
|
+
log.error(msg);
|
279
|
+
org.apache.struts.action.ActionErrors ae=new org.apache.struts.action.ActionErrors();
|
280
|
+
ae.add("Error processing request",new org.apache.struts.action.ActionMessage("errors.ioException",msg));
|
281
|
+
saveErrors(request, ae);
|
282
|
+
return mapping.findForward("#{STRUTS_INPUT_FWD}");
|
283
|
+
ENDTPL
|
253
284
|
|
254
285
|
def struts_addProceedAction!(action)
|
255
286
|
proca=action.struts_createAndAddExecuteOperation(STRUTS_PROCEED_ACTION)
|
@@ -261,14 +292,7 @@ String s=form.get#{STRUTS_SGBD_STATE_PROP}();
|
|
261
292
|
[STRUTS_NEW_ACTION,STRUTS_CREATE_ACTION,STRUTS_UPDATE_ACTION,STRUTS_READ_ACTION,STRUTS_DELETE_ACTION].each {|m|
|
262
293
|
j=j+%{if(s.compareTo("#{m}")==0) { return #{m}(mapping,form,request,response); }\n}
|
263
294
|
}
|
264
|
-
j=j
|
265
|
-
String msg="unexpected value for #{STRUTS_SGBD_STATE_PROP} in #{STRUTS_PROCEED_ACTION}";
|
266
|
-
log.error(msg);
|
267
|
-
org.apache.struts.action.ActionErrors ae=new org.apache.struts.action.ActionErrors();
|
268
|
-
ae.add("Error processing request",new org.apache.struts.action.ActionMessage("errors.ioException",msg));
|
269
|
-
saveErrors(request, ae);
|
270
|
-
return mapping.findForward("#{STRUTS_INPUT_FWD}");
|
271
|
-
}
|
295
|
+
j=j+PROCEED_ACTION_CODE
|
272
296
|
proca.java_code=j
|
273
297
|
end
|
274
298
|
|
@@ -46,7 +46,7 @@ module Muml_Classifier
|
|
46
46
|
}
|
47
47
|
end
|
48
48
|
#every attribute meant to appear in the form.
|
49
|
-
def struts_formAttribute(ignoreDbId=false)
|
49
|
+
def struts_formAttribute(ignoreDbId=false,ignoreApplyToOrReturn=false)
|
50
50
|
#tab=context[:struts_tab,nil]
|
51
51
|
|
52
52
|
ret=Array.new
|
@@ -55,6 +55,7 @@ module Muml_Classifier
|
|
55
55
|
cgi.each { |c|
|
56
56
|
c.uml_ownedAttribute.each { |a|
|
57
57
|
next if a.struts_ignoreInForm?(ignoreDbId)
|
58
|
+
next if ignoreApplyToOrReturn && a.java_isMethodToClassApplyToOrReturn?
|
58
59
|
ret << a
|
59
60
|
}
|
60
61
|
}
|
@@ -159,15 +160,20 @@ module Muml_Classifier
|
|
159
160
|
#log.debug{ "addCopyTo #{self}" }
|
160
161
|
form=struts_actionForm_one
|
161
162
|
cpt=form.umlx_createAndAddOperation(form.rdf_uri+"_copyTo","copyTo")
|
162
|
-
cpt.java_annotation_add(%{@SuppressWarnings("unused")})
|
163
|
+
#cpt.java_annotation_add(%{@SuppressWarnings("unused")})
|
163
164
|
pcpt=cpt.umlx_createAndAddParameter(cpt.rdf_uri+"_to","_to")
|
164
165
|
pcpt.uml_direction=Cuml_ParameterDirectionKind::Inout
|
165
166
|
pcpt.uml_type=self
|
166
167
|
code="java.util.TimeZone currentTimeZone = java.util.TimeZone.getTimeZone(get#{STRUTS_SETTIMEZONE_BEAN}());"
|
168
|
+
code=code+"if(currentTimeZone==null) {}\n" # quick hack to avoid unused/not unused warning
|
167
169
|
struts_formAttribute.each { |a|
|
168
|
-
|
169
|
-
|
170
|
-
|
170
|
+
if(a.uml_isReadOnly?)
|
171
|
+
code=code+"\t\/\/ a.java_NameBean (read-only)\n"
|
172
|
+
else
|
173
|
+
code=code+"if(this.get#{a.java_NameBean}()!=null) {\n " if(STRUTS_ACCEPT_NULL_FIELD_IN_FORMS)
|
174
|
+
code=code+"#{DatatypeMapping.instance.getMapping(a.uml_type_one).getFormCopyTo(a)}"
|
175
|
+
code=code+" }//test !=null\n" if(STRUTS_ACCEPT_NULL_FIELD_IN_FORMS)
|
176
|
+
end
|
171
177
|
}
|
172
178
|
|
173
179
|
cpt.java_code=code
|
@@ -194,7 +200,7 @@ module Muml_Classifier
|
|
194
200
|
def struts_addInitFrom!
|
195
201
|
form=struts_actionForm_one
|
196
202
|
inf=form.umlx_createAndAddOperation(form.rdf_uri+"_initFrom","initFrom")
|
197
|
-
inf.java_annotation_add(%{@SuppressWarnings("unused")})
|
203
|
+
#inf.java_annotation_add(%{@SuppressWarnings("unused")})
|
198
204
|
pinf=inf.umlx_createAndAddParameter(inf.rdf_uri+"_from","_from")
|
199
205
|
pinf.uml_type=self
|
200
206
|
pinf.uml_direction=Cuml_ParameterDirectionKind::In
|
@@ -277,9 +283,14 @@ module Muml_Property
|
|
277
283
|
struts_addActionFormAttributeEnumeration!(form)
|
278
284
|
elsif uml_type_one.kind_of?(Muml_DataType)
|
279
285
|
a2=struts_copyAsFormField!(form)
|
280
|
-
|
286
|
+
|
287
|
+
#Force cardinality to one (array of primitive is handeld has multi-line text)
|
288
|
+
a2.uml_upperValue=form.umlx_literal(1)
|
289
|
+
|
281
290
|
tpl=DatatypeMapping.instance.getMapping(uml_type_one)
|
282
291
|
a2.uml_type=tpl.getFormType(form)
|
292
|
+
|
293
|
+
|
283
294
|
else
|
284
295
|
struts_addActionFormAttributeReference!(form)
|
285
296
|
|
@@ -431,6 +442,85 @@ public static java.util.List<#{STRUTS_LVB}> #{STRUTS_FORM_HELPER_ENUMTOLVB}(fina
|
|
431
442
|
throw(e);
|
432
443
|
}
|
433
444
|
}
|
445
|
+
@SuppressWarnings("unchecked")
|
446
|
+
public static <T> java.util.Set<T> toBean(T[] t, java.util.Set<T> nullCast) {
|
447
|
+
java.util.Set<T> ret = null;
|
448
|
+
if (t != null) {
|
449
|
+
ret = (java.util.Set<T>) new java.util.HashSet<T>();
|
450
|
+
for (int i = 0; i < t.length; i++) {
|
451
|
+
ret.add(t[i]);
|
452
|
+
}
|
453
|
+
}
|
454
|
+
return ret;
|
455
|
+
}
|
456
|
+
|
457
|
+
@SuppressWarnings("unchecked")
|
458
|
+
public static <T> java.util.List<T> toBean(T[] t, java.util.List<T> nullCast) {
|
459
|
+
java.util.List<T> ret = null;
|
460
|
+
if (t != null) {
|
461
|
+
// alternative: java.util.Arrays.asList
|
462
|
+
|
463
|
+
ret = (java.util.List<T>) new java.util.ArrayList<T>();
|
464
|
+
for (int i = 0; i < t.length; i++) {
|
465
|
+
ret.add(t[i]);
|
466
|
+
}
|
467
|
+
}
|
468
|
+
return ret;
|
469
|
+
}
|
470
|
+
|
471
|
+
public static boolean toBean(String t, boolean nullCast) {
|
472
|
+
return t.compareTo("true") == 0;
|
473
|
+
}
|
474
|
+
|
475
|
+
public static String toForm(boolean t) {
|
476
|
+
return t ? "true" : "false";
|
477
|
+
}
|
478
|
+
|
479
|
+
@SuppressWarnings("unchecked")
|
480
|
+
public static <T> T[] toForm(java.util.Set<T> t) {
|
481
|
+
return (T[]) t.toArray();
|
482
|
+
}
|
483
|
+
|
484
|
+
@SuppressWarnings("unchecked")
|
485
|
+
public static <T> T[] toForm(java.util.List<T> t) {
|
486
|
+
return (T[]) t.toArray();
|
487
|
+
}
|
488
|
+
|
489
|
+
/**
|
490
|
+
* Map an array of value to a multi-line text
|
491
|
+
* (meant for string[])
|
492
|
+
* @param <T>
|
493
|
+
* @param t
|
494
|
+
* @return
|
495
|
+
*/
|
496
|
+
@SuppressWarnings("unchecked")
|
497
|
+
public static <T> String toFormArrayAsStringLine(java.util.Collection<T> t) {
|
498
|
+
java.lang.StringBuffer sb=new java.lang.StringBuffer();
|
499
|
+
for (java.util.Iterator iterator = t.iterator(); iterator.hasNext();) {
|
500
|
+
T t2 = (T) iterator.next();
|
501
|
+
sb.append(t2.toString());
|
502
|
+
sb.append(ARRAY_SEPARATOR);
|
503
|
+
}
|
504
|
+
return sb.toString();
|
505
|
+
}
|
506
|
+
|
507
|
+
|
508
|
+
public static String ARRAY_SEPARATOR="\\n";
|
509
|
+
|
510
|
+
@SuppressWarnings("unchecked")
|
511
|
+
public static java.util.Set<String> toBean(String t, java.util.Set<String> nullCast) {
|
512
|
+
java.util.Set<String> ret = null;
|
513
|
+
if (t != null) {
|
514
|
+
String[] tline=t.split(ARRAY_SEPARATOR);
|
515
|
+
ret = (java.util.Set<String>) new java.util.HashSet<String>();
|
516
|
+
for (int i = 0; i < tline.length; i++) {
|
517
|
+
ret.add(tline[i]);
|
518
|
+
}
|
519
|
+
}
|
520
|
+
return ret;
|
521
|
+
}
|
522
|
+
|
523
|
+
|
434
524
|
ENDCODE
|
435
525
|
|
436
526
|
def struts_getFormHelper
|