ontomde-uml2-struts 1.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.
- data/History.txt +5 -0
- data/Manifest.txt +31 -0
- data/README.txt +38 -0
- data/Rakefile +32 -0
- data/lib/ontomde-uml2-struts/MessageResources.rb +356 -0
- data/lib/ontomde-uml2-struts/action.rb +886 -0
- data/lib/ontomde-uml2-struts/blob.rb +11 -0
- data/lib/ontomde-uml2-struts/exceptionHandling.rb +167 -0
- data/lib/ontomde-uml2-struts/footer.rb +128 -0
- data/lib/ontomde-uml2-struts/form.rb +483 -0
- data/lib/ontomde-uml2-struts/header.rb +37 -0
- data/lib/ontomde-uml2-struts/header_link.rb +39 -0
- data/lib/ontomde-uml2-struts/jsp_edit.rb +866 -0
- data/lib/ontomde-uml2-struts/jsp_edit_field.rb +1 -0
- data/lib/ontomde-uml2-struts/jsp_edit_js.rb +124 -0
- data/lib/ontomde-uml2-struts/jsp_index.rb +131 -0
- data/lib/ontomde-uml2-struts/localeAction.rb +641 -0
- data/lib/ontomde-uml2-struts/main.rb +140 -0
- data/lib/ontomde-uml2-struts/mappingForBean.rb +132 -0
- data/lib/ontomde-uml2-struts/mappingForJsp.rb +272 -0
- data/lib/ontomde-uml2-struts/mappingToJavaHierarchy.rb +87 -0
- data/lib/ontomde-uml2-struts/reloadAction.rb +33 -0
- data/lib/ontomde-uml2-struts/spring.rb +89 -0
- data/lib/ontomde-uml2-struts/struts-config.rb +232 -0
- data/lib/ontomde-uml2-struts/validation.rb +116 -0
- data/lib/ontomde-uml2-struts/validator.rb +341 -0
- data/lib/ontomde-uml2-struts/version.rb +7 -0
- data/lib/ontomde-uml2-struts/webXml.rb +165 -0
- data/lib/ontomde-uml2-struts/xmlForm.rb +308 -0
- data/lib/ontomde-uml2-struts.rb +34 -0
- data/test/test_ontomde-uml2-struts.rb +0 -0
- metadata +112 -0
@@ -0,0 +1,483 @@
|
|
1
|
+
module Muml_Element
|
2
|
+
# Struts LabelValueBean class qualified name.
|
3
|
+
STRUTS_LVB='org.apache.struts.util.LabelValueBean'
|
4
|
+
|
5
|
+
# LVB used for null object
|
6
|
+
NIL_LVB_KEY="nil"
|
7
|
+
NIL_LVB_RES_KEY="obj_nil"
|
8
|
+
end
|
9
|
+
|
10
|
+
module Mstruts_tab
|
11
|
+
end
|
12
|
+
class Cstruts_tab < Crdf_Resource
|
13
|
+
include Mstruts_tab
|
14
|
+
rdf_safe_attr_reader_many :struts_ownedAttribute
|
15
|
+
rdf_safe_attr_reader_many :java_Name
|
16
|
+
end
|
17
|
+
|
18
|
+
module Muml_Classifier
|
19
|
+
rdf_safe_attr_reader_many :struts_ownedTab
|
20
|
+
end
|
21
|
+
|
22
|
+
module Muml_Operation
|
23
|
+
#Struts ActionForm associated to this operation
|
24
|
+
rdf_safe_attr_reader_many :struts_actionForm
|
25
|
+
end
|
26
|
+
|
27
|
+
module Muml_Classifier
|
28
|
+
STRUTS_REQUESTED_CREATION_TYPE_FIELD_NAME="reqType"
|
29
|
+
STRUTS_REQUESTED_CREATION_TYPE_FIELD_PROP="ReqType"
|
30
|
+
STRUTS_DISPATCH_FIELD_NAME="doWhat"
|
31
|
+
STRUTS_DISPATCH_FIELD_METH="DoWhat"
|
32
|
+
STRUTS_REQUESTED_TAB="reqtab"
|
33
|
+
STRUTS_FORM_INTERFACE="xmda.struts.Form"
|
34
|
+
|
35
|
+
rdf_safe_attr_reader_many :struts_isForm
|
36
|
+
|
37
|
+
#class from which this StrutsActionForm was generated.
|
38
|
+
rdf_safe_attr_reader_many :struts_actionFormSrc
|
39
|
+
|
40
|
+
#Struts ActionForm associated to this class
|
41
|
+
rdf_safe_attr_reader_many :struts_actionForm
|
42
|
+
|
43
|
+
def struts_eachFormAttribute_deprec()
|
44
|
+
struts_formAttribute.each { |a|
|
45
|
+
yield(a)
|
46
|
+
}
|
47
|
+
end
|
48
|
+
#every attribute meant to appear in the form.
|
49
|
+
def struts_formAttribute(ignoreDbId=false)
|
50
|
+
#tab=context[:struts_tab,nil]
|
51
|
+
|
52
|
+
ret=Array.new
|
53
|
+
cgi=umlx_classifier_generalization_indirect
|
54
|
+
cgi.add(self)
|
55
|
+
cgi.each { |c|
|
56
|
+
c.uml_ownedAttribute.each { |a|
|
57
|
+
next if a.struts_ignoreInForm?(ignoreDbId)
|
58
|
+
ret << a
|
59
|
+
}
|
60
|
+
}
|
61
|
+
return ret
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
#every method meant to appear in the form.
|
67
|
+
def struts_formOperation()
|
68
|
+
ret=Array.new
|
69
|
+
cgi=umlx_classifier_generalization_indirect
|
70
|
+
cgi.add(self)
|
71
|
+
cgi.each { |c|
|
72
|
+
c.uml_ownedOperation.each { |a|
|
73
|
+
#next if a.db_isTransient?
|
74
|
+
next if a.uml_isStatic?
|
75
|
+
#next if a.java_ignoreMe?
|
76
|
+
ret << a
|
77
|
+
}
|
78
|
+
}
|
79
|
+
return ret
|
80
|
+
end
|
81
|
+
|
82
|
+
def struts_getFormInterface
|
83
|
+
iform=umlx_getOrCreateInterface(STRUTS_FORM_INTERFACE)
|
84
|
+
if(iform.uml_ownedOperation.empty?)
|
85
|
+
iform.umlx_external=RDF_FALSE
|
86
|
+
iform.struts_addActionLocaleFormFields!
|
87
|
+
["initFromReference","copyToReference"].each {|m|
|
88
|
+
iform.umlx_createAndAddOperation(iform.rdf_uri+m,m);
|
89
|
+
}
|
90
|
+
iform.java_addAccessors! #ajouter getter/setter
|
91
|
+
end
|
92
|
+
return iform
|
93
|
+
end
|
94
|
+
|
95
|
+
def struts_addInitAndCopyToReference!
|
96
|
+
i=umlx_createAndAddOperation(rdf_uri+"initFromReference","initFromReference");
|
97
|
+
i.java_code="initFrom(getReference());"
|
98
|
+
|
99
|
+
c=umlx_createAndAddOperation(rdf_uri+"copyToReference","copyToReference");
|
100
|
+
c.java_code="copyTo(getReference());"
|
101
|
+
end
|
102
|
+
|
103
|
+
#Creates and add an action form corresponding to this class.
|
104
|
+
def struts_addActionForm!
|
105
|
+
#log.debug { "struts_addActionForm! for #{self}:#{self.class}" }
|
106
|
+
p=umlx_owner_one
|
107
|
+
p=p.umlx_getOrCreatePackage(context[:strutsFormPackage,context[:strutsActionFormPackage,"struts"]],p)
|
108
|
+
|
109
|
+
form=p.umlx_createAndAddClass(rdf_uri+"_ActionFormClass")
|
110
|
+
|
111
|
+
form.umlx_createAndAddImplementation(struts_getFormInterface)
|
112
|
+
form.struts_addInitAndCopyToReference!
|
113
|
+
|
114
|
+
form.struts_isForm=RDF_TRUE
|
115
|
+
form.db_isTransient=RDF_TRUE
|
116
|
+
|
117
|
+
form.struts_actionFormSrc=self
|
118
|
+
self.struts_actionForm=form
|
119
|
+
|
120
|
+
form.uml_name="#{uml_name}StrutsForm"
|
121
|
+
#af=umlx_getOrCreateClass("org.apache.struts.action.ActionForm")
|
122
|
+
#if (uml_generalization.empty?)
|
123
|
+
#NOTE: Forms inheritance DO NOT follow class inheritance.
|
124
|
+
# (to allow exact typing in redefined methods)
|
125
|
+
|
126
|
+
af=umlx_getOrCreateClass("org.apache.struts.validator.ValidatorForm")
|
127
|
+
form.umlx_createAndAddGeneralization(af)
|
128
|
+
|
129
|
+
form.java_makeSerializable!
|
130
|
+
#ag=umlx_getOrCreateClass("java.io.Serializable")
|
131
|
+
#form.umlx_createAndAddImplementation(ag)
|
132
|
+
#TODO ajouter implements interface
|
133
|
+
|
134
|
+
struts_addActionFormAttribute!(form)
|
135
|
+
struts_create_getXMLFormOperations!(form)
|
136
|
+
|
137
|
+
struts_addInitFrom!
|
138
|
+
struts_addCopyTo!
|
139
|
+
struts_addReset!
|
140
|
+
|
141
|
+
ref=form.umlx_createAndAddProperty(form.rdf_uri+"__ref","reference")
|
142
|
+
ref.uml_type=self
|
143
|
+
|
144
|
+
[STRUTS_DISPATCH_FIELD_NAME,STRUTS_SGBD_STATE,STRUTS_REQUESTED_CREATION_TYPE_FIELD_NAME].each {|p|
|
145
|
+
act=form.umlx_createAndAddProperty(form.rdf_uri+p)
|
146
|
+
act.uml_name=p
|
147
|
+
act.uml_type=umlx_dataType_string
|
148
|
+
}
|
149
|
+
|
150
|
+
form.struts_addActionLocaleFormFields!
|
151
|
+
|
152
|
+
form.java_addAccessors! #ajouter getter/setter
|
153
|
+
form.apaCom_addLogger!
|
154
|
+
end
|
155
|
+
|
156
|
+
STRUTS_ACCEPT_NULL_FIELD_IN_FORMS=true
|
157
|
+
def struts_addCopyTo!
|
158
|
+
#log.debug{ "addCopyTo #{self}" }
|
159
|
+
form=struts_actionForm_one
|
160
|
+
cpt=form.umlx_createAndAddOperation(form.rdf_uri+"_copyTo","copyTo")
|
161
|
+
cpt.java_annotation_add(%{@SuppressWarnings("unused")})
|
162
|
+
pcpt=cpt.umlx_createAndAddParameter(cpt.rdf_uri+"_to","_to")
|
163
|
+
pcpt.uml_direction=Cuml_ParameterDirectionKind::Inout
|
164
|
+
pcpt.uml_type=self
|
165
|
+
code="java.util.TimeZone currentTimeZone = java.util.TimeZone.getTimeZone(get#{STRUTS_SETTIMEZONE_BEAN}());"
|
166
|
+
struts_formAttribute.each { |a|
|
167
|
+
code=code+"if(this.get#{a.java_NameBean}()!=null) {\n " if(STRUTS_ACCEPT_NULL_FIELD_IN_FORMS)
|
168
|
+
code=code+"#{JavaMapping.instance.getTemplate(a.uml_type_one).getFormCopyTo(a)}"
|
169
|
+
code=code+" }//test !=null\n" if(STRUTS_ACCEPT_NULL_FIELD_IN_FORMS)
|
170
|
+
}
|
171
|
+
|
172
|
+
cpt.java_code=code
|
173
|
+
end
|
174
|
+
|
175
|
+
def struts_addActionFormAttribute!(form)
|
176
|
+
struts_formAttribute.each { |a|
|
177
|
+
a.struts_addActionFormAttribute!(form)
|
178
|
+
}
|
179
|
+
#struts_addDateFormater!(form)
|
180
|
+
end
|
181
|
+
|
182
|
+
def struts_typeIsUsed?(type)
|
183
|
+
type=type.downcase
|
184
|
+
struts_formAttribute.each { |a|
|
185
|
+
t=a.uml_type_one
|
186
|
+
next unless t.kind_of?(Muml_Property)
|
187
|
+
next unless t.uml_name_one.downcase==type
|
188
|
+
return true
|
189
|
+
}
|
190
|
+
return false
|
191
|
+
end
|
192
|
+
|
193
|
+
|
194
|
+
# def struts_addDateFormater!(form)
|
195
|
+
# if struts_typeIsUsed?("date")
|
196
|
+
# df=form.umlx_createAndAddProperty("#{rdf_uri}_dfCalendar",STRUTS_DATE_FORMATER_INSTANCE);
|
197
|
+
# df.uml_type=form.umlx_getOrCreateClass('java.text.SimpleDateFormat');
|
198
|
+
# df.java_code='new java.text.SimpleDateFormat("yyyy/MM/dd",java.util.Locale.ENGLISH);'
|
199
|
+
# df.java_noAccessors=RDF_TRUE
|
200
|
+
# df.uml_visibility=Cuml_VisibilityKind::Private
|
201
|
+
# df.uml_isStatic=RDF_TRUE #TODO : synchronized ??, (pb synchronisation)
|
202
|
+
# df.db_isTransient=RDF_TRUE
|
203
|
+
# df.java_isTransient=RDF_TRUE
|
204
|
+
# end
|
205
|
+
# if struts_typeIsUsed?("timestamp")
|
206
|
+
# df=form.umlx_createAndAddProperty("#{rdf_uri}_dfTimestamp",STRUTS_TIMESTAMP_FORMATER_INSTANCE);
|
207
|
+
# df.uml_type=form.umlx_getOrCreateClass('java.text.SimpleDateFormat');
|
208
|
+
# df.java_code='new java.text.SimpleDateFormat("yyyy/MM/dd HH:mm:ss",java.util.Locale.ENGLISH);'
|
209
|
+
# df.java_noAccessors=RDF_TRUE
|
210
|
+
# df.uml_visibility=Cuml_VisibilityKind::Private
|
211
|
+
# df.uml_isStatic=RDF_TRUE #TODO : synchronized ??, (pb synchronisation)
|
212
|
+
# df.db_isTransient=RDF_TRUE
|
213
|
+
# df.java_isTransient=RDF_TRUE
|
214
|
+
# end
|
215
|
+
# end
|
216
|
+
|
217
|
+
def struts_addInitFrom!
|
218
|
+
form=struts_actionForm_one
|
219
|
+
inf=form.umlx_createAndAddOperation(form.rdf_uri+"_initFrom","initFrom")
|
220
|
+
inf.java_annotation_add(%{@SuppressWarnings("unused")})
|
221
|
+
pinf=inf.umlx_createAndAddParameter(inf.rdf_uri+"_from","_from")
|
222
|
+
pinf.uml_type=self
|
223
|
+
pinf.uml_direction=Cuml_ParameterDirectionKind::In
|
224
|
+
|
225
|
+
code="java.util.TimeZone currentTimeZone = java.util.TimeZone.getTimeZone(get#{STRUTS_SETTIMEZONE_BEAN}());\n"
|
226
|
+
struts_formAttribute.each { |a|
|
227
|
+
code=code+"#{JavaMapping.instance.getTemplate(a.uml_type_one).getFormInitFrom(a)}"
|
228
|
+
|
229
|
+
}
|
230
|
+
inf.java_code=code
|
231
|
+
end
|
232
|
+
|
233
|
+
|
234
|
+
def struts_addReset!
|
235
|
+
form=struts_actionForm_one
|
236
|
+
o=form.umlx_createAndAddOperation(form.rdf_uri+"_reset","reset")
|
237
|
+
o.java_annotation_add("@Override")
|
238
|
+
o.java_code= <<END
|
239
|
+
// if the time zone is not set yet in the session
|
240
|
+
// we set the default value ("Europe/Paris") else
|
241
|
+
// we get the timezone saved in the user session.
|
242
|
+
this.set#{Muml_Classifier::STRUTS_SETTIMEZONE_BEAN}(xmda.tags.helpers.XMDARequestUtils.getUserTimeZone(request, null).getID());
|
243
|
+
END
|
244
|
+
p=o.umlx_createAndAddParameter(o.rdf_uri+"_mapping","mapping")
|
245
|
+
p.uml_type=o.umlx_getOrCreateClass("org.apache.struts.action.ActionMapping")
|
246
|
+
p=o.umlx_createAndAddParameter(o.rdf_uri+"_request","request")
|
247
|
+
p.uml_type=o.umlx_getOrCreateClass("javax.servlet.http.HttpServletRequest")
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
module Muml_Property
|
252
|
+
|
253
|
+
#real type of this form field (int,float, ...)
|
254
|
+
rdf_safe_attr_reader_many :struts_sourceProperty
|
255
|
+
|
256
|
+
|
257
|
+
def struts_ignoreInForm?(ignoreDbId=true)
|
258
|
+
return true if uml_type_one.db_isTransient? && !uml_type_one.kind_of?(Muml_Enumeration) && !uml_type_one.kind_of?(Muml_DataType)
|
259
|
+
return true if db_isTransient?
|
260
|
+
return true if uml_isStatic?
|
261
|
+
return true if java_ignoreMe?
|
262
|
+
return true if ignoreDbId && uml_name_one=="id"
|
263
|
+
return true if uml_name_one==Muml_Classifier::DB_OBJECT_VERSION_FIELD
|
264
|
+
#return true if java_getter_property_inv.empty?
|
265
|
+
#return true if java_setter_property_inv.empty?
|
266
|
+
# a is a property added for compatibility
|
267
|
+
return true unless umlx_stringMappingForEnum.empty?
|
268
|
+
return false
|
269
|
+
end
|
270
|
+
|
271
|
+
#field for paginating in lists
|
272
|
+
rdf_safe_attr_reader_many :struts_paginatorProperty
|
273
|
+
|
274
|
+
# adds a matching field in form
|
275
|
+
# adds a paginator field when cardinality >1
|
276
|
+
def struts_copyAsFormField!(form)
|
277
|
+
#log.debug { %{add form field #{self} to #{form}} }
|
278
|
+
a2=form.umlx_createAndAddProperty(rdf_uri+"_ActionFormField")
|
279
|
+
a2.uml_name=uml_name
|
280
|
+
a2.uml_upperValue=uml_upperValue
|
281
|
+
a2.uml_lowerValue=uml_lowerValue
|
282
|
+
a2.java_use_Arrays=RDF_TRUE
|
283
|
+
a2.struts_sourceProperty=self
|
284
|
+
|
285
|
+
if ! umlx_upperValueIsOne?
|
286
|
+
paginator=form.umlx_createAndAddProperty(rdf_uri+"_ActionFormField_page")
|
287
|
+
paginator.uml_name=uml_name.to_s+"_strutsPage"
|
288
|
+
paginator.uml_type=form.umlx_owner_one.umlx_dataType_integer
|
289
|
+
a2.struts_paginatorProperty=paginator
|
290
|
+
end
|
291
|
+
|
292
|
+
return a2
|
293
|
+
end
|
294
|
+
def struts_addActionFormAttribute!(form)
|
295
|
+
return if db_isTransient?
|
296
|
+
return if uml_isStatic?
|
297
|
+
|
298
|
+
|
299
|
+
if uml_type_one.kind_of?(Muml_Enumeration)
|
300
|
+
struts_addActionFormAttributeEnumeration!(form)
|
301
|
+
elsif uml_type_one.kind_of?(Muml_DataType)
|
302
|
+
a2=struts_copyAsFormField!(form)
|
303
|
+
#a2.uml_type=form.umlx_dataType_string
|
304
|
+
tpl=JavaMapping.instance.getTemplate(uml_type_one)
|
305
|
+
a2.uml_type=tpl.getFormType(form)
|
306
|
+
else
|
307
|
+
struts_addActionFormAttributeReference!(form)
|
308
|
+
|
309
|
+
end
|
310
|
+
#TODO: ajouter autres propri�t�s
|
311
|
+
end
|
312
|
+
|
313
|
+
|
314
|
+
def nil_lvb(obj)
|
315
|
+
return %{new #{STRUTS_LVB}("#{obj.java_qualifiedName}.#{NIL_LVB_RES_KEY}", "#{NIL_LVB_KEY}")}
|
316
|
+
end
|
317
|
+
|
318
|
+
STRUTS_ENUM_AS_STRING=true
|
319
|
+
|
320
|
+
#Adds to the form class, a suggester operation corresponding to this attribute.
|
321
|
+
def struts_addActionFormAttributeEnumeration!(form)
|
322
|
+
return if uml_isReadOnly?
|
323
|
+
a2=struts_copyAsFormField!(form)
|
324
|
+
#a2.uml_type=form.umlx_dataType_integer
|
325
|
+
a2.uml_type=form.umlx_dataType_string
|
326
|
+
#a2.uml_type=form.umlx_getOrCreateClass("java.lang.Integer")
|
327
|
+
|
328
|
+
sug=form.umlx_createAndAddOperation(form.rdf_uri+"_sug","get#{self.java_NameBean}Sug")
|
329
|
+
ret=sug.umlx_createAndAddReturnParameter(sug.rdf_uri+"_return")
|
330
|
+
ret.uml_type=form.umlx_getOrCreateClass("#{STRUTS_LVB}")
|
331
|
+
ret.uml_upperValue=form.umlx_literal(-1)
|
332
|
+
ret.uml_isOrdered=RDF_TRUE
|
333
|
+
|
334
|
+
sug.java_code=%{ /* TPL:STRUTS 001 */
|
335
|
+
return #{form.struts_getFormHelper.java_qualifiedName}.#{STRUTS_FORM_HELPER_ENUMTOLVB}(#{self.uml_type_one.java_qualifiedName}.class,(#{self.uml_type_one.java_qualifiedName})null,getReference().get#{self.java_NameBean}Sug());
|
336
|
+
}
|
337
|
+
end
|
338
|
+
|
339
|
+
#suggester for a list of objects
|
340
|
+
def struts_addActionFormAttributeReference!(form)
|
341
|
+
a2=struts_copyAsFormField!(form)
|
342
|
+
a2.uml_type=form.umlx_dataType_string
|
343
|
+
|
344
|
+
if ! uml_isReadOnly?
|
345
|
+
sug=form.umlx_createAndAddOperation(form.rdf_uri+"_sug","get#{self.java_NameBean}Sug")
|
346
|
+
ret=sug.umlx_createAndAddReturnParameter(sug.rdf_uri+"_return")
|
347
|
+
ret.uml_type=form.umlx_getOrCreateClass("#{STRUTS_LVB}")
|
348
|
+
ret.uml_upperValue=form.umlx_literal(-1)
|
349
|
+
ret.uml_isOrdered=RDF_TRUE
|
350
|
+
|
351
|
+
sug.java_code= <<ENDJAVA
|
352
|
+
/* TPL:STRUTS 002 */
|
353
|
+
java.util.List<#{STRUTS_LVB}> ret=new java.util.ArrayList<#{STRUTS_LVB}>();
|
354
|
+
#{STRUTS_LVB} lvb=null;
|
355
|
+
//
|
356
|
+
// //#{self.umlx_manySide? ? "" : %{lvb=new #{STRUTS_LVB}("--","empty");
|
357
|
+
// //ret.add(lvb);} }
|
358
|
+
|
359
|
+
// return #{form.struts_getFormHelper.java_qualifiedName}.#{STRUTS_FORM_HELPER_ENUMTOLVB}(#{self.uml_type_one.java_qualifiedName}.class,(#{self.uml_type_one.java_qualifiedName})null,getReference().get#{self.java_NameBean}Sug());
|
360
|
+
|
361
|
+
for (#{self.uml_type_one.java_qualifiedName} item : getReference().get#{self.java_NameBean}Sug()) {
|
362
|
+
if(item!=null) {
|
363
|
+
lvb=new #{STRUTS_LVB}("obj:"+item.getId(), Long.toString(item.getId()));
|
364
|
+
} else {
|
365
|
+
lvb=#{nil_lvb(self.uml_type_one)};
|
366
|
+
}
|
367
|
+
ret.add(lvb);
|
368
|
+
}
|
369
|
+
return ret;
|
370
|
+
ENDJAVA
|
371
|
+
end
|
372
|
+
if(umlx_isComposite?)
|
373
|
+
m=java_createAndAddSuggester_one
|
374
|
+
r=nil
|
375
|
+
(m.uml_returnResult+m.uml_ownedParameter).each {|p| next unless p.uml_direction_one.isReturn? ; r=p.uml_type_one }
|
376
|
+
sugC=form.umlx_createAndAddOperation(form.rdf_uri+"_sugC","#{m.java_Name}")
|
377
|
+
ret=sugC.umlx_createAndAddReturnParameter("#{sugC.rdf_uri}_ret")
|
378
|
+
ret.uml_type=form.umlx_getOrCreateClass("#{STRUTS_LVB}")
|
379
|
+
ret.uml_upperValue=form.umlx_literal(-1)
|
380
|
+
ret.uml_isOrdered=RDF_TRUE
|
381
|
+
sugC.java_code=%{ /* TPL:STRUTS 001b */
|
382
|
+
return #{form.struts_getFormHelper.java_qualifiedName}.#{STRUTS_FORM_HELPER_ENUMTOLVB}(#{r.java_qualifiedName}.class,(#{r.java_qualifiedName})null,getReference().#{m.java_Name}(),true);
|
383
|
+
}
|
384
|
+
|
385
|
+
end
|
386
|
+
|
387
|
+
end
|
388
|
+
|
389
|
+
|
390
|
+
|
391
|
+
|
392
|
+
end
|
393
|
+
|
394
|
+
#module Muml_DataType
|
395
|
+
#contains regexp for string representation of corresponding type
|
396
|
+
#obsolete!
|
397
|
+
#STRUTS_PRIMITIVE_TYPE_REGEXP=Hash.new()
|
398
|
+
#end
|
399
|
+
|
400
|
+
|
401
|
+
module Muml_Element
|
402
|
+
STRUTS_FORM_HELPER="xmda.struts.FormHelper"
|
403
|
+
STRUTS_FORM_HELPER_ENUMTOLVB="enumToLvb"
|
404
|
+
|
405
|
+
STRUTS_DATE_FORMATER_INSTANCE=STRUTS_FORM_HELPER+'.DfCalendar'
|
406
|
+
STRUTS_TIMESTAMP_FORMATER_INSTANCE=STRUTS_FORM_HELPER+'.DfTimestamp'
|
407
|
+
def struts_getFormHelper
|
408
|
+
helper=umlx_getOrCreateClass(STRUTS_FORM_HELPER)
|
409
|
+
if(helper.java_customCode.empty?)
|
410
|
+
helper.apaCom_addLogger!
|
411
|
+
helper.umlx_external=RDF_FALSE
|
412
|
+
#helper.java_import_add(STRUTS_LVB)
|
413
|
+
helper.db_isTransient=RDF_TRUE
|
414
|
+
helper.struts_isForm=RDF_FALSE
|
415
|
+
helper.java_customCode= %{
|
416
|
+
|
417
|
+
public static final java.text.SimpleDateFormat DfTimestamp=new java.text.SimpleDateFormat("yyyy/MM/dd HH:mm:ss",java.util.Locale.ENGLISH);
|
418
|
+
public static final java.text.SimpleDateFormat DfCalendar=new java.text.SimpleDateFormat("yyyy/MM/dd",java.util.Locale.ENGLISH);
|
419
|
+
|
420
|
+
|
421
|
+
|
422
|
+
|
423
|
+
/**
|
424
|
+
* Transform a timestamp date to its GMT equivalent date.
|
425
|
+
*
|
426
|
+
* @param fromTimeZone
|
427
|
+
* @param timestampToTransform
|
428
|
+
* @return
|
429
|
+
*/
|
430
|
+
public static java.util.Date transformFromCurrentTZToGMT(final java.util.TimeZone fromTimeZone,final java.util.Date timestampToTransform) {
|
431
|
+
// the offset of this time zone from UTC.
|
432
|
+
int offset = fromTimeZone.getRawOffset();
|
433
|
+
|
434
|
+
java.util.GregorianCalendar gregCal = new java.util.GregorianCalendar();
|
435
|
+
gregCal.setTime(timestampToTransform);
|
436
|
+
gregCal.add(java.util.Calendar.HOUR_OF_DAY, (-offset / 3600000));
|
437
|
+
|
438
|
+
return gregCal.getTime();
|
439
|
+
}
|
440
|
+
|
441
|
+
public static java.util.Date transformFromGMTToCurrentTZ(final java.util.TimeZone currentTimeZone,final java.util.Date timestampToTransform) {
|
442
|
+
// the offset of this time zone from UTC.
|
443
|
+
int offset = currentTimeZone.getRawOffset();
|
444
|
+
|
445
|
+
java.util.GregorianCalendar gregorianCalendar = new java.util.GregorianCalendar();
|
446
|
+
gregorianCalendar.setTime(timestampToTransform);
|
447
|
+
gregorianCalendar.add(java.util.Calendar.HOUR_OF_DAY, (offset / 3600000));
|
448
|
+
return gregorianCalendar.getTime();
|
449
|
+
}
|
450
|
+
|
451
|
+
public static java.util.List<#{STRUTS_LVB}> #{STRUTS_FORM_HELPER_ENUMTOLVB}(final Class<?> enumType,final xmda.java.JavaEnumSig typeCheck, final java.util.List<?> enums) {
|
452
|
+
return #{STRUTS_FORM_HELPER_ENUMTOLVB}(enumType,typeCheck,enums,false);
|
453
|
+
}
|
454
|
+
// addNullItem is used for example to add a "add element" in creator selection.
|
455
|
+
public static java.util.List<#{STRUTS_LVB}> #{STRUTS_FORM_HELPER_ENUMTOLVB}(final Class<?> enumType,final xmda.java.JavaEnumSig typeCheck, final java.util.List<?> enums,final boolean addNullItem) {
|
456
|
+
try {
|
457
|
+
java.util.List<#{STRUTS_LVB}> ret=new java.util.ArrayList<#{STRUTS_LVB}>();
|
458
|
+
String prefix=enumType.getCanonicalName()+".";
|
459
|
+
#{STRUTS_LVB} lvb=null;
|
460
|
+
if(addNullItem) { ret.add(new #{STRUTS_LVB}(prefix+"obj_nil", "nil"));}
|
461
|
+
for ( Object itemObj : enums) {
|
462
|
+
xmda.java.JavaEnumSig item=(#{JAVA_ENUM_INTERFACE_QNAME})itemObj;
|
463
|
+
if(item!=null) {
|
464
|
+
//value is a localization resource key
|
465
|
+
lvb=new #{STRUTS_LVB}(prefix+item.name(),item.name());
|
466
|
+
} else {
|
467
|
+
lvb=new #{STRUTS_LVB}(prefix+"obj_nil", "nil");
|
468
|
+
}
|
469
|
+
ret.add(lvb);
|
470
|
+
}
|
471
|
+
return ret;
|
472
|
+
} catch (RuntimeException e) {
|
473
|
+
log.error(e);
|
474
|
+
throw(e);
|
475
|
+
}
|
476
|
+
}
|
477
|
+
}
|
478
|
+
end
|
479
|
+
return helper;
|
480
|
+
end
|
481
|
+
end
|
482
|
+
|
483
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
|
2
|
+
module Mrdf_Model
|
3
|
+
def struts_header_generate
|
4
|
+
write <<END
|
5
|
+
<%-- ******** ENTETE ****************** --%>
|
6
|
+
<div class="cadre">
|
7
|
+
<div class="AgLeft">
|
8
|
+
<a href="https://rubyforge.org/">
|
9
|
+
<img src="#{css_path_model}/#{css_color_class}/image/logoMDE.gif" border="0" alt="Home"/>
|
10
|
+
</a>
|
11
|
+
</div>
|
12
|
+
<div class="AgCenter">
|
13
|
+
<img src="#{css_path_model}/#{css_color_class}/image/bienvenue.gif" border="0" alt="will be delete"/>
|
14
|
+
</div>
|
15
|
+
<div class="AgRight">
|
16
|
+
<a href="javascript:window.print();">
|
17
|
+
<img src="#{css_path_model}/#{css_color_class}/image/btnPrint.gif" width="25" height="25" border="0" alt="Print"/>
|
18
|
+
</a>
|
19
|
+
<html:link page="/Welcome.do"title="Retour a l'accueil">
|
20
|
+
<img src="#{css_path_model}/#{css_color_class}/image/btnPosition.gif" width="25" height="25" border="0" alt="Position"/>
|
21
|
+
</html:link>
|
22
|
+
<a href="#">
|
23
|
+
<img src="#{css_path_model}/#{css_color_class}/image/btnHelp.gif" width="25" height="25" border="0" alt="Help"/>
|
24
|
+
</a>
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
<%-- ******** USER CONTEXT ************* --%>
|
28
|
+
END
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
module Muml_Class
|
33
|
+
def struts_header_generate
|
34
|
+
self.rdf_model.struts_header_generate;
|
35
|
+
return
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
module Muml_Class
|
4
|
+
def struts_header_link_generate
|
5
|
+
rdf_model.struts_header_link_generate(struts_jsp_edit_path.to_s)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
module Mrdf_Resource #< ::Crdfs_Class
|
10
|
+
# def struts_header_link_generate
|
11
|
+
# rdf_model.struts_header_link_generate
|
12
|
+
# end
|
13
|
+
def css_path_model
|
14
|
+
rdf_model.css_path_model
|
15
|
+
end
|
16
|
+
def css_color_class
|
17
|
+
rdf_model.css_color_class
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
module Mrdf_Model
|
22
|
+
STRUTS_RES_DIRECTORY="res"
|
23
|
+
|
24
|
+
def css_path_model
|
25
|
+
return "#{STRUTS_RES_DIRECTORY}/"
|
26
|
+
end
|
27
|
+
|
28
|
+
def css_color_class
|
29
|
+
return "orange"
|
30
|
+
end
|
31
|
+
|
32
|
+
def struts_header_link_generate(sourcePage)
|
33
|
+
rel=Pathname.new(".").relative_path_from(Pathname.new(File.dirname(sourcePage)))
|
34
|
+
write <<END
|
35
|
+
<jsp:include page="#{rel}/res/orange/include/include_head.jsp" flush="false"/>
|
36
|
+
END
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|