Module: Muml_Class

Includes:
DAO
Defined in:
lib/ontomde-java/struts/xmlForm.rb,
lib/ontomde-java/jpa/jpa.rb,
lib/ontomde-java/java/xsd.rb,
lib/ontomde-java/flex/main.rb,
lib/ontomde-java/java/java.rb,
lib/ontomde-java/jpa/finder.rb,
lib/ontomde-java/vmware/vso.rb,
lib/ontomde-java/crank/menu2.rb,
lib/ontomde-java/java/apache.rb,
lib/ontomde-java/java/security.rb,
lib/ontomde-java/jpa/redefined.rb,
lib/ontomde-java/struts/footer.rb,
lib/ontomde-java/struts/footer.rb,
lib/ontomde-java/struts/header.rb,
lib/ontomde-java/crank/crankJpa.rb,
lib/ontomde-java/ejb2/main-ejb2.rb,
lib/ontomde-java/java/component.rb,
lib/ontomde-java/struts/jsp_edit.rb,
lib/ontomde-java/flex/Editor.mxml.rb,
lib/ontomde-java/jpa/configuration.rb,
lib/ontomde-java/struts/validation.rb,
lib/ontomde-java/struts/validation.rb,
lib/ontomde-java/flex/ValueObjectAS.rb,
lib/ontomde-java/struts/header_link.rb,
lib/ontomde-java/struts/jsp_edit_js.rb,
lib/ontomde-java/flex/Editor.mxml.as.rb,
lib/ontomde-java/struts/struts-config.rb,
lib/ontomde-java/struts/struts-config.rb,
lib/ontomde-java/java/enumCompatibilityLayer.rb

Overview

xml form

adding methods to generate xml form for use by xml client such as Flex.

Constant Summary collapse

JPA_TX_BEGIN =
""
JPA_TX_COMMIT =
""
JAVA_NOT_PERSISTENT_NAMESPACE =
["java","javax"]
DB_Context =
"xmda.jpa.DbContext"
DB_MAX_TABLE_NAME_LENGTH =

Maximum allowed length for a sgbd table name cf:

Mysql: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html
64
DB_TABLE_NAME_OVERRIDE =

table name override

Hash.new
DB_URI_ALIAS =
Hash.new
DB_DISCRIMINATOR =
Hash.new
JPA_PAGINATION_QUERY =
"  if(pageSize>0) {\n    q.setFirstResult(pageNumber*pageSize);\n    q.setMaxResults(pageSize);\n    }\n"
JAVA_GETSTATIC_ROLE_COMMENT =

method comment that will be generated as javadoc

"This method returns a set of \"static roles\" that *may* *be* granted to the user based on database informations. \n\nWhen a \"security role\" (defined at runtime) is bounded(linked) to a \"static role\" (defined at compile time), \nusers must \n- be granted the security role \n- and the bounded \"static role\" must be included in the set of role returned by this method.\nENDHEL\n" 
JAVA_GETSTATIC_ROLE_CODE =

method default implementation

"    //return empty list (every static role are denied)\n    return new java.util.HashSet<\#{Mrdf_Repository::JAVA_GLOBAL_ACCESS_CONTROL_ENUM}>();\n"
STRUTS_SWITH_TO_FLEX_ACTION =
"switchToFlex"
STRUTS_XMLFORM_HELPER =

name of the java class used to store helper methods for xml form generation.

"xmda.struts.XMLFormHelper"
STRUTS_XML_FORM_PROPERTY =

example public StringBuffer getAsXML(StringBuffer sb) {

"xmlForm"
STRUTS_XML_FORM_GETTER =
"getXmlForm"
STRUTS_XML_VIEW_PREFIX =
"src."
FLEX_NS_PREFIX =
STRUTS_XML_VIEW_PREFIX
STRUTS_SWITCH_TO_FLEX_FORWARD =
"switchToFlexFwd"
FLEX_SWITCH_TO_JSP_PATH =
"/flex/switchToFlex.jsp"
NOGIF_FORWARD =
"NOGIF_FWD"
STRUTS_EDIT_FWD_POSTFIX =
"_fwEdit"

Constants included from DAO

DAO::DAOInterface, DAO::DAOQualifiedInterface

Instance Method Summary collapse

Methods included from DAO

#jpa_addDAO!, #jpa_addGetDao!, #jpa_addMerge!, #jpa_addNamedQuery, #jpa_addNamedQueryToAssociation!, #jpa_addPersist!, #jpa_addPersistenceContext!, #jpa_addRemove!, #super_jpa_addDAO!

Instance Method Details

#apaCom_addLogger!Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/ontomde-java/java/apache.rb', line 3

def apaCom_addLogger!
  log=umlx_createAndAddProperty(rdf_uri+"log","log");
  log.java_noAccessors=RDF_TRUE
  log.uml_isStatic=RDF_TRUE
  #log.jpa_transient=RDF_TRUE
  log.db_isTransient=RDF_TRUE
  log.java_isTransient=RDF_TRUE
  log.uml_type=umlx_getOrCreateClass("org.apache.commons.logging.Log");
  log.uml_type_one.db_isTransient=RDF_TRUE

  #log.java_code="org.apache.commons.logging.LogFactory.getFactory().getInstance(this.getClass().getName())"
  log.java_code=%{org.apache.commons.logging.LogFactory.getFactory().getInstance("#{java_qualifiedName}")}


end

#as_addFormReference!Object



327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
# File 'lib/ontomde-java/flex/main.rb', line 327

def as_addFormReference!
  log.error{"adding flexFormRef for #{self}:#{self.class}"}
  p=umlx_createAndAddProperty("#{self.rdf_uri}_flexFormRef","flexForm")
  p.uml_isReadOnly="true"

  p.uml_type=as_formClass
  p.umlx_owner_one.as_addAccessorsFor!(p)
  p.as_getter_property_inv.each {|get|
    log.error("maj code")
    get.as_code="if(\#{p.as_Name}==null){\n\#{p.as_Name} = new \#{as_formClass.as_Name}();\n\#{p.as_Name}.setModif(this);\n}\nreturn \#{p.as_Name};\n"
  }
end

#as_formClassObject



324
325
326
# File 'lib/ontomde-java/flex/main.rb', line 324

def as_formClass
  return umlx_getOrCreateClass("#{as_qualifiedName}Form")
end

#crank_class_submenuObject



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/ontomde-java/crank/menu2.rb', line 52

def crank_class_submenu
  subClazz = Set.new
  crank_subCrankBean(subClazz, true)
  if crank_isTopCrankBean && subClazz.length>1 
    write "     <rich:panelMenuGroup label=\"\#{self.java_Name}\" iconExpanded=\"triangleDown\" iconCollapsed=\"triangleUp\">\n"
    subClazz.sort { |a,b| a.uml_name.to_s <=> b.uml_name.to_s }.each{|c|
      c.crank_menu_item
    }
    write "     </rich:panelMenuGroup>\n"
  elsif
    crank_menu_item
  end
end

#crank_menu_itemObject



70
71
72
73
74
75
76
# File 'lib/ontomde-java/crank/menu2.rb', line 70

def crank_menu_item
  write "        <rich:panelMenuItem submitMode=\"none\">\n            <h:commandLink action=\"\#{self.java_Name.upcase}\" value=\"\#{self.java_Name}\" styleClass=\"titleCommandLink\"/>\n        </rich:panelMenuItem>    \n"
end

#db_getFindAllCallObject

def db_daoClassName jpa_daoClassName end def jpa_daoClassName return “#java_qualifiedNameDao” end



32
33
34
35
36
37
38
39
# File 'lib/ontomde-java/jpa/redefined.rb', line 32

def db_getFindAllCall()
  param=context[:db_useExtraTypeParameterForFindAll] ? "(#{self.java_qualifiedName})null" : ""
  tenantClause=''
  if context[:multiTenant]
    tenantClause="get#{TENANT_FIELD_BEAN_NAME}(),"
  end
  return "#{java_DAOClass_one.java_qualifiedName}.findAll(#{tenantClause}#{param},0,-1)"
end

#db_tableNameObject

Table name for this element



355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
# File 'lib/ontomde-java/jpa/jpa.rb', line 355

def db_tableName
  r=java_uniqueName
  if r.length<=DB_MAX_TABLE_NAME_LENGTH
    #ok. nothing to do
  elsif ! DB_TABLE_NAME_OVERRIDE[r].nil?
    #no check performed on overriden name
    r=DB_TABLE_NAME_OVERRIDE[r]
  elsif context[:silentlyTruncateTableName,false]
    log.debug { "silently truncating table name #{r}" }
    r=r[0,DB_MAX_TABLE_NAME_LENGTH]
  else
    log_error_db_tableName_too_long(r)
  end
  return r
end

#db_tx(java_code) ⇒ Object

returns java_code enclosed in begin/commit with catch cleanup



254
255
256
# File 'lib/ontomde-java/jpa/jpa.rb', line 254

def db_tx(java_code)
  jpa_tx(java_code)
end

#doOnJPAAddPersistence!Object



374
375
376
# File 'lib/ontomde-java/jpa/jpa.rb', line 374

def doOnJPAAddPersistence!
  
end

#ejb2_addOperationExceptions!(exception) ⇒ Object

adds exception to every operation



185
186
187
188
189
# File 'lib/ontomde-java/ejb2/main-ejb2.rb', line 185

def ejb2_addOperationExceptions!(exception)
  uml_ownedOperation.each { |op|
    op.uml_raisedException_add(exception) 
  }
end

#ejb2_copyMethodsTo!(ejb, uri_suffix, exception) ⇒ Object



167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# File 'lib/ontomde-java/ejb2/main-ejb2.rb', line 167

def ejb2_copyMethodsTo!(ejb,uri_suffix,exception)
  uml_ownedOperation.each { |sop|
    op=ejb.umlx_createAndAddOperation("#{sop.rdf_uri}_#{uri_suffix}","#{sop.uml_name}")
    op.uml_raisedException_add(exception) 
    sop.uml_ownedParameter.each { |sp|
      p=op.umlx_createAndAddParameter("#{sp.rdf_uri}_#{uri_suffix}",sp.uml_name)
      sp.umlx_copyToAttributeProperty(p)
      p.uml_type=sp.uml_type
      p.uml_direction=sp.uml_direction
      p.uml_isUnique=sp.uml_isUnique
      p.uml_isOrdered=sp.uml_isOrdered
      p.java_use_Arrays=sp.java_use_Arrays
      p.uml_upperValue=sp.uml_upperValue
      p.uml_lowerValue=sp.uml_lowerValue
      }
  }
end

#ejb2_createBean!Object

creates a bean class for this service class (this implementation just appends bean to the class name)



138
139
140
141
142
# File 'lib/ontomde-java/ejb2/main-ejb2.rb', line 138

def ejb2_createBean!
  self.ejb_bean=self
  self.uml_name="#{self.uml_name}Bean"
  ejb2_addOperationExceptions!(umlx_getOrCreateInterface("java.rmi.RemoteException"))
end

#ejb2_createHomeInterface!Object

creates a home interface for this service class



145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/ontomde-java/ejb2/main-ejb2.rb', line 145

def ejb2_createHomeInterface!
  log.debug { "creating ejb home interface for: #{self}" }
  h=self.umlx_owner_one.umlx_createAndAddInterface("#{self.rdf_uri}_ejbHome","#{uml_name}Home")
  h.umlx_createAndAddGeneralization(umlx_getOrCreateInterface("javax.ejb.EJBHome"))
  self.ejb_home=h

  cr=h.umlx_createAndAddOperation("#{h.rdf_uri}_create","create")
  cr.uml_raisedException_add(umlx_getOrCreateInterface("javax.ejb.CreateException"))
  cr.uml_raisedException_add(umlx_getOrCreateInterface("java.rmi.RemoteException"))
  crret=cr.umlx_createAndAddReturnParameter("#{cr.rdf_uri}_ret","return")
  crret.uml_type=self.ejb_remote_one
end

#ejb2_createRemoteInterface!Object

creates a remote interface for this service class



159
160
161
162
163
164
165
# File 'lib/ontomde-java/ejb2/main-ejb2.rb', line 159

def ejb2_createRemoteInterface!
  log.debug { "creating ejb remote interface for: #{self}" }
  r=self.umlx_owner_one.umlx_createAndAddInterface("#{self.rdf_uri}_ejbRemote","#{uml_name}")
  r.umlx_createAndAddGeneralization(umlx_getOrCreateInterface("javax.ejb.EJBObject"))
  self.ejb_remote=r
  ejb2_copyMethodsTo!(ejb_remote_one,"ejbRemote",umlx_getOrCreateInterface("java.rmi.RemoteException"))
end

#ejb2_transform!Object

process this java bean to :

  • generate the proper ejb interfaces,

  • add required exceptions,

  • add required interface implementations



124
125
126
127
128
129
# File 'lib/ontomde-java/ejb2/main-ejb2.rb', line 124

def ejb2_transform!
  log.debug { "processing ejb service: #{self}" }
  ejb2_createRemoteInterface!
  ejb2_createHomeInterface!
  ejb2_createBean!
end

#ejb_NameObject

Return an alias name for this class“



132
133
134
# File 'lib/ontomde-java/ejb2/main-ejb2.rb', line 132

def ejb_Name
  return "#{java_Name}EJB"
end

#flex_generateMXMLObject



17
18
19
20
21
# File 'lib/ontomde-java/flex/Editor.mxml.rb', line 17

def flex_generateMXML
  mtk_writeSession("#{java_FileName.to_s.gsub(/\.[^.\/]*$/,"")}.mxml"){
    flex_writeMXML
    }
end

#flex_generateVOObject



11
12
13
14
15
# File 'lib/ontomde-java/flex/ValueObjectAS.rb', line 11

def flex_generateVO
  mtk_writeSession("#{java_FileName.to_s.gsub(/\.[^.\/]*$/,"")}VO.as") {
    flex_writeVO
    }
end

#flex_mxml_as_generateAsObject



11
12
13
14
15
16
17
18
# File 'lib/ontomde-java/flex/Editor.mxml.as.rb', line 11

def flex_mxml_as_generateAs
  #flex_mxml_as_generateAs_jspHeader
  flex_mxml_as_generateAs_commun
  flex_mxml_as_generateAs_operations
  flex_mxml_as_generateAs_edit_remove_add
  flex_mxml_as_generateAs_validateForm
  flex_mxml_as_generateAs_createAndAdd
end

#flex_mxml_as_generateAs_communObject



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/ontomde-java/flex/Editor.mxml.as.rb', line 65

def flex_mxml_as_generateAs_commun
 #//TODO this.#{Muml_Class::STRUTS_REQUESTED_TAB}=model.id.toString();
  write "public function \#{STRUTS_REFRESH_ACTION}() :void{\n this.\#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}=\"\#{STRUTS_REFRESH_ACTION}\";\n submit();\n }\npublic function \#{STRUTS_RETURN_ACTION}() :void{\n this.\#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}=\"\#{STRUTS_RETURN_ACTION}\";\n submit();\n }\npublic function \#{STRUTS_PROCEED_ACTION}() :void{\n this.\#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}=\"\#{STRUTS_PROCEED_ACTION}\";\n submit();\n }\n  END_SCRIPT\nend\n"

#flex_mxml_as_generateAs_createAndAddObject



21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/ontomde-java/flex/Editor.mxml.as.rb', line 21

def flex_mxml_as_generateAs_createAndAdd
  flex_ownedAttributeSet.each { |a|
    next unless a.umlx_isComposite?
    #next if a.umlx_oneSide?
    f="createAndAdd#{a.java_NameBean}"
    write %{
public function #{f}(reqTypeParam:String):void {
 this.#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}="#{f}";
 this.#{STRUTS_REQUESTED_CREATION_TYPE_FIELD_NAME}=reqTypeParam;
 submit();
 }
}}
end

#flex_mxml_as_generateAs_edit_remove_addObject



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/ontomde-java/flex/Editor.mxml.as.rb', line 83

def flex_mxml_as_generateAs_edit_remove_add
flex_ownedAttributeSet.each { |a|
  #next unless a.umlx_isComposite?
  #next unless a.umlx_isAssociation?
  #next if a.umlx_oneSide?
    li=a.uml_isReadOnly? ? ["edit"] : ["edit","removeAndDelete"]
    li.each {|meth|
      f="#{meth}#{a.java_NameBean}"
      write "public function \#{f}(objidParam:String) :void{\n if(\"_\"+objidParam != \"_empty\") {\n  this.\#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}=\"\#{f}\";\n  this.\#{Muml_Class::STRUTS_REQUESTED_TAB}=objidParam;\n  submit();\n  } else {\n   ExtendedAlert.error(\"no element selected for \\\\n\#{flex_localizeMsg(\"\#{self.java_qualifiedName}.\#{a.java_Name}\")}\");\n  }\n }\n      END\n    }\n    li=a.uml_isReadOnly? ? [] : [\"add\"]\n    li.each {|meth|\n      f=\"\#{meth}\#{a.java_NameBean}\"\n      write <<-END\npublic function \#{f}(e:SuggestionAddedEvent) :void{\n if(\"_\"+e.idToAdd != \"_empty\") {\n  this.\#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}=\"\#{f}\";\n  this.\#{Muml_Class::STRUTS_REQUESTED_TAB}=e.idToAdd;\n  submit();\n  } else {\n   ExtendedAlert.error(\"no element selected for \\\\n\#{flex_localizeMsg(\"\#{self.java_qualifiedName}.\#{a.java_Name}\")}\");\n  }\n }\n      END\n    }\n  }\nend\n"

#flex_mxml_as_generateAs_operationsObject



52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/ontomde-java/flex/Editor.mxml.as.rb', line 52

def flex_mxml_as_generateAs_operations
uml_ownedOperation.each {|biz|
  next unless biz.umlx_businessMethod?
  f=biz.java_Name
  write "public function \#{f}() :void{\n this.\#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}=\"\#{f}\";\n submit();\n }\n  ENDMETH\n  }\nend\n"

#flex_mxml_as_generateAs_validateFormObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/ontomde-java/flex/Editor.mxml.as.rb', line 35

def flex_mxml_as_generateAs_validateForm
  head="public function validForm():Boolean{\n  ENDHEAD\n\n  foot=<<-ENDFOOT\n  return true;\n  }\n  ENDFOOT\n\n  encloseWrite(head,foot){ flex_ownedAttributeSet.each { |prop|\n    tpl=DatatypeMapping.instance.getMapping(prop.uml_type_one)\n    tpl.flex_writeMXML_validate(prop)\n  }}\n\nend\n"

#flex_NameVOObject



18
19
20
# File 'lib/ontomde-java/flex/ValueObjectAS.rb', line 18

def flex_NameVO
  return "#{java_Name}VO"
end

#flex_ownedAttributeSet(ignoreId = false) ⇒ Object



13
14
15
# File 'lib/ontomde-java/flex/Editor.mxml.rb', line 13

def flex_ownedAttributeSet(ignoreId=false)
  return struts_formAttribute(ignoreId)
end

#flex_writeMXMLObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/ontomde-java/flex/Editor.mxml.rb', line 23

def flex_writeMXML
  before="<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<mx:Box xmlns:mx=\"http://www.adobe.com/2006/mxml\"  creationComplete=\"initForm()\" height=\"100%\" width=\"100%\" xmlns:vo=\"\#{FLEX_NS_PREFIX}\#{umlx_owner_one.java_qualifiedName}.*\" xmlns:utils=\"utils.*\" xmlns:components=\"components.*\" >\n"

  after="</mx:Box>\n"
  encloseWrite(before,after) {
    flex_writeMXML_script
    flex_writeMXML_vo
    flex_writeMXML_menu
    flex_writeMXML_MXvalidators
    flex_writeMXML_Form

  }
end

#flex_writeMXML_FormObject



259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
# File 'lib/ontomde-java/flex/Editor.mxml.rb', line 259

def flex_writeMXML_Form
  before= "  <utils:ValidatorForm id=\"MyForm\" defaultButton=\"{btnValidate}\" validators=\"{validators}\" valid=\"handleFormValidate(event)\" invalid=\"handleFormValidate(event)\" width=\"100%\" height=\"100%\">\n    <mx:FormHeading styleName=\"PetitTitrePose\" label=\"{getString('\#{self.struts_actionForm_one.java_qualifiedName}.title')}\"/>\n"

  after= "  </utils:ValidatorForm>\n\n  <mx:ControlBar id=\"ControlButtons\">\n    <mx:Text id=\"status\" width=\"186\"/>\n    <mx:Button label=\"{getString('button.validate')}\" click=\"biz_proceed()\" id=\"btnValidate\"/>\n    <mx:Button label=\"{getString('button.reset')}\" click=\"this.executeBindings(true)\" id=\"button2\"/>\n    <mx:Button label=\"HTML\" click=\"{HTML_Display()}\" id=\"buttontest\"/>\n    <mx:Button label=\"print\" click=\"{doPrint()}\" id=\"buttonPrint\"/>\n  </mx:ControlBar>\n"

  encloseWrite(before,after) {
    #uml_ownedOperation.each { |operation|
    # next unless operation.umlx_businessMethod?
    # operation.flex_writeMXML_Form_item_methods
    # }
    ignoreId=true
    flex_ownedAttributeSet(ignoreId).each { |prop|
      encloseWrite(%{<mx:FormItem label="{getString('#{self.struts_actionForm_one.java_qualifiedName}.#{prop.java_Name}')}">\n} ,%{</mx:FormItem>\n}) {
        tpl=DatatypeMapping.instance.getMapping(prop.uml_type_one)
        tpl.flex_writeMXML_Form_item_property(prop)
        }
      }
    }
end

#flex_writeMXML_menuObject

generate menu (fixed and dynamic based on object functions)



232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
# File 'lib/ontomde-java/flex/Editor.mxml.rb', line 232

def flex_writeMXML_menu
  before="<mx:ArrayCollection id=\"methods\" source=\"{buXML.businessaction}\"/>\n\n<mx:Model id=\"buXML\">\n<businessactions>\n<businessaction label=\"Valider\" functionName=\"biz_proceed\" icon=\"@Embed('/assets/valider.gif')\"/>\n<businessaction label=\"Annuler\" functionName=\"\" icon=\"@Embed('/assets/delete.png')\"/>\n<businessaction label=\"HTML\" functionName=\"HTML_Display\" icon=\"@Embed('/assets/html.gif')\"/>\n<businessaction label=\"Print\" functionName=\"doPrint\" icon=\"@Embed('/assets/printpca.gif')\"/>\n<businessaction label=\"{modelGlob.fullscreen?'Normal Size':'FullScreen'}\" functionName=\"fullScreen\" icon=\"@Embed('/assets/fullscreen.gif')\"/>\n"

  after="</businessactions>\n</mx:Model>\n"
  encloseWrite(before,after) {
    uml_ownedOperation.each { |op|
      next unless op.umlx_businessMethod?
      write(%{<businessaction label="{getString('#{op.umlx_owner_one.java_qualifiedName}.#{op.java_Name}')}" functionName="#{op.java_Name}"/>\n})
      }
}
end

#flex_writeMXML_MXvalidatorsObject



41
42
43
44
45
46
47
48
# File 'lib/ontomde-java/flex/Editor.mxml.rb', line 41

def flex_writeMXML_MXvalidators
  encloseWrite(%{<mx:Array id="validators">\n},%{</mx:Array>\n}) {
    flex_ownedAttributeSet.each { |prop|
      tpl=DatatypeMapping.instance.getMapping(prop.uml_type_one)
      tpl.flex_writeMXML_MXvalidator(prop)
    }
  }
end

#flex_writeMXML_scriptObject

function editAdresse(objid) { if(“_”+objid != “_empty”) { doWhat=“editAdresse”; reqtab=objid; submit(); } else { Alert.show(“no element selected for nadresse”); } }

function removeAndDeleteAdresse(objid:String):void { if(“_”+objid != “_empty”) { doWhat=“removeAndDeleteAdresse”; reqtab=objid; submit(); } else { Alert.show(“no element selected for nadresse”); } }

function createAndAddAdresse(reqType):void { doWhat=“createAndAddAdresse”; this.reqType=reqType; submit(); }

function editFavoris(objid) { if(“_”+objid != “_empty”) { doWhat=“editFavoris”; reqtab=objid; submit(); } else { Alert.show(“no element selected for nfavoris”); } }

function removeAndDeleteFavoris(objid) { if(“_”+objid != “_empty”) { doWhat=“removeAndDeleteFavoris”; reqtab=objid; submit(); } else { Alert.show(“no element selected for nfavoris”); } }

function addFavoris(objid) { if(“_”+objid != “_empty”) { doWhat=“addFavoris”; reqtab=objid; submit(); } else { Alert.show(“no element selected for nfavoris”); } }

function createAndAddContrats(reqType) { doWhat=“createAndAddContrats”; this.reqType=“package1_dot_Contrat”; submit(); }

function editContrats(objid) { if(“_”+objid != “_empty”) { doWhat=“editContrats”; reqtab=objid; submit(); } else { Alert.show(“no element selected for ncontrats”); } }

function removeAndDeleteContrats(objid) { if(“_”+objid != “_empty”) { doWhat=“removeAndDeleteContrats”; reqtab=objid; submit(); } else { Alert.show(“no element selected for ncontrats”); } }

function addDernierContrat(id) { doWhat=“addDernierContrat”; this.reqtab=id; submit(); }

function editDernierContrat(objid) { if(“_”+objid != “_empty”) { doWhat=“editDernierContrat”; reqtab=objid; submit(); } else { Alert.show(“no element selected for ncontrats”); } }

function editLastMonthContracts(objid) { if(“_”+objid != “_empty”) { doWhat=“editLastMonthContracts”; reqtab=objid; submit(); } else { Alert.show(“no element selected for nLastMonthContracts”); } }

function removeAndDeleteDernierContrat(objid) { if(“_”+objid != “_empty”) { doWhat=“removeAndDeleteDernierContrat”; reqtab=objid; submit(); } else { Alert.show(“no element selected for ncontrats”); } }

function ajoutRapideContrat() { doWhat=“ajoutRapideContrat”; submit(); }

//////////////////////////////////////////////////// debut des fonctions metiers ////////////////////////////////////////////////////



192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
# File 'lib/ontomde-java/flex/Editor.mxml.rb', line 192

def flex_writeMXML_script

  # (script directory is relative)
  before= " <mx:Script source=\"\#{\"../\"*(umlx_hierarchy.length)}script/formsGlobalFunctions.as\" />\n <mx:Script>\n  <![CDATA[\n"

  after="  ]]>\n </mx:Script>\n"
  encloseWrite(before,after)  {
    flex_mxml_as_generateAs
  }
end

#flex_writeMXML_voObject

SAMPLE: nom=“Muml_Class.txtNomtxtNom.text” adresse=“Muml_Class.cmbAdressecmbAdresse.selectedItemcmbAdresse.selectedItem.id”



214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
# File 'lib/ontomde-java/flex/Editor.mxml.rb', line 214

def flex_writeMXML_vo
  before=" <vo:\#{flex_NameVO}  id=\"model\"\n"

  after=" />\n"

  encloseWrite(before,after) {
    noId=true
    flex_ownedAttributeSet(noId).each { |prop|
      tpl=DatatypeMapping.instance.getMapping(prop.uml_type_one)
      tpl.flex_writeMXML_vo_mapping(prop)
  }}
end

#flex_writeVOObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/ontomde-java/flex/ValueObjectAS.rb', line 22

def flex_writeVO
  importSet=Set.new
  flex_ownedAttributeSet.each { |c|
    t=c.uml_type_one
    next if t.kind_of?(Muml_DataType)
    importSet.add(t)
  }

  importString=""
  importSet.each { |t|
    importString="#{importString}\n import #{FLEX_NS_PREFIX}#{t.java_qualifiedName}VO;"
  }

  before= "package \#{FLEX_NS_PREFIX}\#{umlx_owner_one.java_qualifiedName}\n{\n  import mx.collections.ArrayCollection;\n  import utils.DeserializeXMLUtil;\n  \#{importString}\n  [Bindable]\n  public class \#{flex_NameVO}\n  {\n"

  after= "  }\n}\n"

  encloseWrite(before,after) {
      flex_writeVO_vars
      flex_writeVO_initFromXML
      flex_writeVO_initItemFromXML
      flex_writeVO_getParameter
    }
end

#flex_writeVO_getParameterObject



108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/ontomde-java/flex/ValueObjectAS.rb', line 108

def flex_writeVO_getParameter
  before="    //parametres complementaires \u00E0 passer aux requetes concernant cette objet\n    public function getParameter():Object{\n      var param:Object= {};\n"

  after="      return param;\n    } // getParameter\n"

  encloseWrite(before,after) {
      flex_ownedAttributeSet.each { |prop|
        tpl=DatatypeMapping.instance.getMapping(prop.uml_type_one)
        tpl.flex_writeVO_getParameter(prop)
    }}

end

#flex_writeVO_initFromXMLObject

Generates variable declaration



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/ontomde-java/flex/ValueObjectAS.rb', line 67

def flex_writeVO_initFromXML
  before= "  //initialisation du formulaire a partir du XML recu de l'application Struts\n  public function initFromXML(source:XML):void{\n"

  after= "  } // end initFromXML\n"

  encloseWrite(before,after) {
    flex_ownedAttributeSet.each { |prop|
      tpl=DatatypeMapping.instance.getMapping(prop.uml_type_one)
      tpl.flex_writeVO_initFromXML_mapping(prop)
    }
  }
end

#flex_writeVO_initItemFromXMLObject

EXAMPLES:

nom = utils.DeserializeXMLUtil.getOptionAttributValue(source, 'nom');
id= DeserializeXMLUtil.getOptionAttributValue(source, 'id');
//recuperation de la valeur de type date de l'atribut x de l'option
datedenaissance = DeserializeXMLUtil.getOptionDateAttributValue(source, 'datedenaissance');


91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/ontomde-java/flex/ValueObjectAS.rb', line 91

def flex_writeVO_initItemFromXML
  before= "    //initialisation d'un item du type de la class pour etre referencer dans les VOs a partir des options du XML\n    public function initItemFromXML(source:XMLList):void{\n"

  after="    } // initItemFromXML\n"

  encloseWrite(before,after) {
    flex_ownedAttributeSet.each { |prop|
      tpl=DatatypeMapping.instance.getMapping(prop.uml_type_one)
      tpl.flex_writeVO_initItemFromXML_mapping(prop)
    }
  }
end

#flex_writeVO_varsObject



59
60
61
62
63
64
# File 'lib/ontomde-java/flex/ValueObjectAS.rb', line 59

def flex_writeVO_vars
  flex_ownedAttributeSet.each { |prop|
    tpl=DatatypeMapping.instance.getMapping(prop.uml_type_one)
    tpl.flex_writeVO_vars_datatype(prop)
    }
end

#java_addEnumPostDeserialiseUpdate!Object



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# File 'lib/ontomde-java/java/enumCompatibilityLayer.rb', line 94

def java_addEnumPostDeserialiseUpdate!
  #TODO optimize
  #return unless java_hasEnumDirectProperties?

  #rr=umlx_createAndAddOperation(self.rdf_uri+"_"+"readResolve","readResolve")
  #rr.uml_raisedException_add(umlx_getOrCreateClass("java.io.ObjectStreamException"))
  #rr.uml_visibility=::Cuml_VisibilityKind::Private
  #rr.java_code="updateEnumFromEnumAsString();\nreturn this;\n"

  #rp=rr.umlx_createAndAddReturnParameter(rr.rdf_uri+"_ret")
  #rp.uml_type=umlx_getOrCreateClass("java.lang.Object")


  #u=umlx_createAndAddOperation(self.rdf_uri+"_"+"upd_Enum","updateEnumFromEnumAsString")


  #code=%{Sy stem.out.println("readResolve #{java_qualifiedName}");\n}
  #code=code+(uml_generalization.empty? ? "//" : "")+"super.#{u.java_Name}();\n"

  uml_ownedAttribute.each { |a|
    next unless a.uml_type_one.kind_of?(Muml_Enumeration)
    a.java_setter_property_inv.each { |g|
      g.java_code=g.java_code_one+"    \\n\#{a.umlx_stringMappingForEnum_one.java_Name}=\#{a.java_Name}.name();\n"
    }
    a.umlx_stringMappingForEnum_one.java_getter_property_inv.each { |g|
      #asString is not updated when loaded from base
      g.java_code=%{#{a.umlx_stringMappingForEnum_one.java_Name}= #{a.java_Name}==null ? null : #{a.java_Name}.name();\n}+g.java_code_one
    }
    a.umlx_stringMappingForEnum_one.java_setter_property_inv.each { |g|
      g.java_code=g.java_code_one+"    \\n\#{a.java_Name}=Enum.valueOf(\#{a.uml_type_one.java_qualifiedName}.class,\#{a.umlx_stringMappingForEnum_one.java_Name});\n"
    }

    #code=code+<<END
    #if(#{a.umlx_stringMappingForEnum_one.java_Name}!=null) {
    # #{a.java_Name}=Enum.valueOf(#{a.uml_type_one.java_qualifiedName}.class,#{a.umlx_stringMappingForEnum_one.java_Name});
    #} else {
    # #{a.java_Name}=null;
    #}
    #END
  }
  #u.java_code=code;

  return
end

#java_addSerialVersionUID!Object



575
576
577
578
579
580
581
582
583
584
# File 'lib/ontomde-java/java/java.rb', line 575

def java_addSerialVersionUID!
  p=umlx_createAndAddProperty(rdf_uri+"_serialVersionUID","serialVersionUID");
  p.uml_visibility=::Cuml_VisibilityKind::Private
  p.uml_isStatic=RDF_TRUE
  p.java_isFinal=RDF_TRUE
  p.java_isTransient=RDF_TRUE
  p.uml_type=umlx_dataType_long
  p.java_code="1L"
  p.java_noAccessors=RDF_TRUE
end

#java_createCrudComponent!Object

create a CRUD component associated to this class for exposing CRUD services on this object.



137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# File 'lib/ontomde-java/java/component.rb', line 137

def java_createCrudComponent!

return if umlx_hasStereotype?('DTO')
return if db_isDAO?
return unless umlx_businessMethod?

base=self
p=base.umlx_owner_one
p=p.umlx_getOrCreatePackage(base.context[:crudComponentPackage,"ws"],p)

c=p.umlx_createAndAddComponent("#{self.rdf_uri}_crudc","#{uml_name} CRUD")
#puts "component created: #{c}"
#struts_addCreateAndAddActions!

create=c.umlx_createAndAddOperation("#{c.rdf_uri}_create","create")
ret=create.umlx_createAndAddReturnParameter("#{create.rdf_uri}")
ret.uml_type=base
ret.soa_requestedMode="ID"

update=c.umlx_createAndAddOperation("#{c.rdf_uri}_update","update")
p1=update.umlx_createAndAddParameter("#{update.rdf_uri}","updateData")
  p1.uml_type=base
  p1.soa_requestedMode="FULL"
end

#java_hasEnumDirectProperties?Boolean

returns true if class has at least one enum property Inherited properties are not taken into account.

Returns:

  • (Boolean)


87
88
89
90
91
92
# File 'lib/ontomde-java/java/enumCompatibilityLayer.rb', line 87

def java_hasEnumDirectProperties?
  uml_ownedAttribute.each { |a|
    return true if a.uml_type_one.kind_of?(Muml_Enumeration)
  }
  return false
end

#java_makeSerializable!Object

Mark this java class as serializable.

  • adds implements java.io.Serializable

  • adds serialVersionUID variable

Example:

private static final long serialVersionUID = 1L;


569
570
571
572
573
574
# File 'lib/ontomde-java/java/java.rb', line 569

def java_makeSerializable!
  #java_implements_add("java.io.Serializable");
  s=umlx_getOrCreateClass("java.io.Serializable")
  umlx_createAndAddImplementation(s)
  java_addSerialVersionUID!
end

#java_writeConstructorsObject

Adds a constructor with paramter

NOTE:

  • EXPERIMENTAL

TODO: associations, et filtrer attributs static



625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
# File 'lib/ontomde-java/java/java.rb', line 625

def java_writeConstructors
  write("public #{java_Name}() {\n")
  write("}\n")
  #TODO: associations ??, filtrer static
  if (!uml_ownedAttribute.empty?)
    parameters = ""
    uml_ownedAttribute.each { |o|
      if o.umlx_isAttribute?
        parameters << ", "
        parameters << o.java_propertyRoleType.to_s
        parameters << " "
        parameters << o.java_NameProperty
      end
    }
    if (!parameters.empty?)
      write("\n")
      parameters = parameters.slice(1, parameters.length)
      write("public #{java_Name}(#{parameters}) {\n")
      uml_ownedAttribute.each { |o|
        if o.umlx_isAttribute?
          write("    set#{o.java_NameBean}(#{o.java_NameProperty});\n")
        end
      }
      write("\t}\n")
    end
  end
end

#java_writeImplementsObject

write java implements declaration clause if needed.

Example:

  • implements interface1, interface2



602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
# File 'lib/ontomde-java/java/java.rb', line 602

def java_writeImplements
  imp=Set.new
  uml_implementation.each { |g|
    imp.add(g.uml_supplier_one.java_qualifiedName)
  }
  java_implements.each { |g|
    imp.add(g)
  }

  sep="\nimplements "
  imp.sort{ |a,b| a <=> b}.each { |g|
    write(sep)
    write(g)
    sep=","
  }
end

#java_writeMetaClassNameObject

write java class keyword and class name

Example:

  • classe Class1



590
591
592
593
594
595
596
# File 'lib/ontomde-java/java/java.rb', line 590

def java_writeMetaClassName
  if umlx_hasStereotype?('JavaAnnotation')
    write(" @interface #{java_Name}")
    return
  end
  write(" class #{java_Name}")
end

#java_writeSuggesterBody(oa) ⇒ Object

Method redefined from ontomde-java alias :original_java_writeSuggesterBody :java_writeSuggesterBody



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/ontomde-java/jpa/redefined.rb', line 43

def java_writeSuggesterBody(oa)
  #log.debug {"adding suggester to #{self} for #{oa}"}
  if oa.uml_type_one.jpa_isPersistent?
    #TODO: recherche du composite commun
    #TODO: transient object do not have a valid uniq id

    # When otherSide has cardinality 1, we do not 
    # suggest an element if it is already assigned.
    # Feature is only available when other side is navigable
    # because we don't want a big overhead.
    oe=oa.umlx_otherEnd
    filterOut=!oe.nil? && oe.umlx_isNavigable? && oe.umlx_oneSide?
    
    if !oa.umlx_manySide?
      write( %{
java.util.List<#{oa.uml_type_one.java_qualifiedName}> ret=#{oa.uml_type_one.db_getFindAllCall};
#{oa.uml_type_one.java_qualifiedName} elt=get#{oa.java_NameBean}();
if(elt!=null && !ret.contains(elt)) {
  ret.add(elt);
}
#{%{java.util.Iterator<?> iter=ret.iterator();
#{oa.uml_type_one.java_qualifiedName} item=null;
while(iter.hasNext()){
  item=(#{oa.uml_type_one.java_qualifiedName}) iter.next();
        if(item.get#{oe.java_NameBean}()!=null && item.get#{oe.java_NameBean}()!=this) {
        iter.remove();
        }
  }} if filterOut}


return ret;\n})
    else
      write( %{
java.util.List<#{oa.uml_type_one.java_qualifiedName}> ret=#{oa.uml_type_one.db_getFindAllCall};

#{oa.uml_type_one.java_qualifiedName} item=null;
java.util.Iterator<?> iter=get#{oa.java_NameBean}().iterator();
while(iter.hasNext()){
  item=(#{oa.uml_type_one.java_qualifiedName}) iter.next();
        if(!ret.contains(item) #{"&& (item.get#{oe.java_NameBean}()==null || item.get#{oe.java_NameBean}()==this)" if filterOut} ) {
        ret.add(item);
        }
  }
return ret;\n})

    end
  else
    super(oa)#original_java_writeSuggesterBody(oa)
  end
end

#jpa_addEntityManager!Object



268
269
270
271
272
273
274
275
276
277
278
279
# File 'lib/ontomde-java/jpa/jpa.rb', line 268

def jpa_addEntityManager!

  gem=umlx_createAndAddOperation(rdf_uri+"getEntityManager","getEntityManager")
  gem.uml_isStatic=RDF_TRUE
  ret=gem.umlx_createAndAddReturnParameter(DB_Context+"_ret")
  ret.uml_upperValue=umlx_literal(1)
  ret.uml_lowerValue=umlx_literal(0)
  ret.uml_type=umlx_getOrCreateClass(DB::EntityManager)
  
  gem.java_code="return #{DB_Context}.getEntityManager();"

end

#jpa_addFindAll!(eao) ⇒ Object

adds a finder to eao self is supposed to be the bean and eao the “dao”.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/ontomde-java/jpa/finder.rb', line 13

def jpa_addFindAll!(eao)
  [false,true].each { |paginated|
  # java_NameBean is added to avoid name clash with inheritance
  m=eao.umlx_createAndAddOperation(rdf_uri+"_findAll"+(paginated ? '_pag':''),"findAll")#+self.java_NameBean)
  m.uml_isStatic=RDF_TRUE
  #m.uml_class=self
  m.uml_visibility=Cuml_VisibilityKind::Public
  #m.uml_isStatic=RDF_TRUE

  #em=m.umlx_createAndAddParameter(m.rdf_uri+"_entityManager","entityManager")
  #em.uml_type=umlx_getOrCreateClass(JPA::EntityManager)
  #em.uml_direction=Cuml_ParameterDirectionKind::In
  #em.uml_upperValue=umlx_literal(1)
  #em.uml_lowerValue=umlx_literal(1)

  rp=m.umlx_createAndAddParameter(m.rdf_uri+"_ret_param","return")
  rp.uml_direction=Cuml_ParameterDirectionKind::Return
  rp.uml_upperValue=umlx_literal(-1)
  rp.uml_lowerValue=umlx_literal(0)
  rp.uml_type=self
  rp.uml_isOrdered=RDF_TRUE

  #m.java_code="return  (#{self.java_qualifiedName})entityManager.find( #{self.java_qualifiedName}.class, #{ip.uml_name});"

  if !context[:crank] 
  basicQuery="javax.persistence.Query q=getEntityManager().createQuery( \"select Object(c) from  \#{java_Name} as c\");\n\#{JPA_PAGINATION_QUERY if paginated} \nreturn (java.util.List<\#{self.java_qualifiedName}>) q.getResultList();\n"
  if !context[:multiTenant]
    m.java_code=basicQuery
  else
    ip=m.umlx_createAndAddParameter(m.rdf_uri+"_tenant","tenant")
    ip.uml_type=rdf_Repository.java_getTenantClass
    ip.umlx_createAndAddComment(ip.rdf_uri+"comment","Restrict query to this tenant")
          
    m.java_code="if(\#{ip.java_Name}!=null) {\njavax.persistence.Query q=getEntityManager().createQuery( \"select Object(c) from  \#{java_Name} as c  where c.\#{TENANT_FIELD_NAME}= :tenantQP\");\nq.setParameter(\"tenantQP\",\#{ip.java_Name});\n\#{JPA_PAGINATION_QUERY if paginated} \nreturn (java.util.List<\#{self.java_qualifiedName}>) q.getResultList();\n} else {\n//TODO: disable in production code\nSystem.out.println(\"DEBUG MODE\");\n\#{basicQuery}\n}\n\n"

  end

  else
    paginatedParams=""
    if paginated
      paginatedParams="pageNumber * pageSize, pageSize"
    end
  basicQuery="return get\#{self.java_Name}DAO().find(\#{paginatedParams});\n"
    m.java_code=basicQuery
  end
  

  
  m.java_annotation_add(%{@SuppressWarnings("unchecked")})

  # because A<-B is not Set<A> <- Set<B>
  # we need to have an extra parameter
  # so method overloading is OK.
  # (this is not necessary when A is return)

  if context[:db_useExtraTypeParameterForFindAll]
    t=m.umlx_createAndAddParameter(m.rdf_uri+"_class","nullCast")
    t.uml_type=self
  end

  if paginated
   pageN=m.umlx_createAndAddParameter(m.rdf_uri+"_pageN","pageNumber")
   pageN.uml_type=umlx_dataType_integer

   pageS=m.umlx_createAndAddParameter(m.rdf_uri+"_pageS","pageSize")
   pageS.uml_type=umlx_dataType_integer
   pageS.umlx_createAndAddComment(pageS.rdf_uri+"comment","use -1 to retreive all results ")
  end
 } 
  return nil # m
end

#jpa_addFindByPrimaryKey!(eao) ⇒ Object



102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/ontomde-java/jpa/finder.rb', line 102

def jpa_addFindByPrimaryKey!(eao)
  m=eao.umlx_createAndAddOperation(rdf_uri+"_finderop","find")
  m.uml_isStatic=RDF_TRUE
  #m.uml_class=self
  m.uml_visibility=Cuml_VisibilityKind::Public
  #m.uml_isStatic=RDF_TRUE

  #em=m.umlx_createAndAddParameter(m.rdf_uri+"_entityManager","entityManager")
  #em.uml_type=umlx_getOrCreateClass(JPA::EntityManager)
  #em.uml_direction=Cuml_ParameterDirectionKind::In
  #em.uml_upperValue=umlx_literal(1)
  #em.uml_lowerValue=umlx_literal(1)

  ip=m.umlx_createAndAddParameter(m.rdf_uri+"_id_param","primaryKey")
  ip.uml_direction=Cuml_ParameterDirectionKind::In
  ip.uml_upperValue=umlx_literal(1)
  ip.uml_lowerValue=umlx_literal(1)
  ip.uml_type=umlx_dataType_long
  #ip.uml_isOrdered=RDF_FALSE

  rp=m.umlx_createAndAddParameter(m.rdf_uri+"_ret_param","return")
  rp.uml_direction=Cuml_ParameterDirectionKind::Return
  rp.uml_upperValue=umlx_literal(1)
  rp.uml_lowerValue=umlx_literal(0)
  rp.uml_type=self
  #rp.uml_isOrdered=RDF_FALSE

  if !context[:crank]     
    m.java_code="\t\treturn (#{self.java_qualifiedName})getEntityManager().find( #{self.java_qualifiedName}.class, #{ip.uml_name});"
  else
    m.java_code="\t\treturn get#{self.java_Name}DAO().read(#{ip.uml_name});"
  end

  return m
end

#jpa_addPersistence!Object



377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
# File 'lib/ontomde-java/jpa/jpa.rb', line 377

def jpa_addPersistence!
  #jpa_addDAO!    
  #Ajout l'interface XmdaEntity
  ent=umlx_getOrCreateGeneric(DB::EntityGenericInterface,DB::EntityGenericParameter)
  umlx_createAndAddImplementation(ent)

  jpa_addEntityManager! # required for query, persist,...
  uml_ownedOperation.each { |o|
    o.jpa_addPersistence!
  }
  java_makeSerializable!
  java_annotation_add("@Entity")
  java_import_add("javax.persistence.Entity")
  java_uniqueName # this call enforces uniqueness
  if jpa_hasPersistenceId?
    java_annotation_add("@Table (name=\"#{db_tableName}\")") 
    java_import_add("javax.persistence.Table")
  end

  if context[:dbTypeDiscriminator]==:int
    k=rdf_uri.to_s
    disc=DB_DISCRIMINATOR[k]
    if disc.nil?
      disc=0
      DB_DISCRIMINATOR.each { |kx,v|
        disc=v+1 if disc<=v
      }
      DB_DISCRIMINATOR[k]=disc
    end
    #TODO: generate only when necessary
    java_annotation_add(%{@DiscriminatorColumn(discriminatorType = DiscriminatorType.INTEGER)})
    java_import_add("javax.persistence.DiscriminatorColumn")
    java_import_add("javax.persistence.DiscriminatorType")
    java_annotation_add(%{@DiscriminatorValue(value = "#{disc}" )})
    java_import_add("javax.persistence.DiscriminatorValue")
  end
  jpa_addStdImports!
  
  doOnJPAAddPersistence!()
end

#jpa_addPersistenceIdAnnnotation!(p) ⇒ Object

com.francetelecom.rd.cil.commons.common.CommonException com.francetelecom.rd.cil.commons.model.IdentifiedObject java_packageQualifiedName.vo.#java_NameValue java_packageQualifiedName.vo.*



452
453
454
455
456
457
# File 'lib/ontomde-java/jpa/jpa.rb', line 452

def jpa_addPersistenceIdAnnnotation!(p)
  p.java_annotation_add("@Id")
  java_import_add("javax.persistence.Id")
  p.java_annotation_add("@GeneratedValue")
  java_import_add("javax.persistence.GeneratedValue")
end

#jpa_addPersistOperation!Object



264
265
# File 'lib/ontomde-java/jpa/jpa.rb', line 264

def jpa_addPersistOperation!
end

#jpa_addRefreshOperation!Object



289
290
# File 'lib/ontomde-java/jpa/jpa.rb', line 289

def jpa_addRefreshOperation!
end

#jpa_addRemoveOperation!Object

xMDA does not generate generic DAO type remove method. object should be removed using their composite object



283
284
285
286
287
# File 'lib/ontomde-java/jpa/jpa.rb', line 283

def jpa_addRemoveOperation!
  # Possible implementation
  # get container
  # call remove method
end

#jpa_addStdImports!Object



418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
# File 'lib/ontomde-java/jpa/jpa.rb', line 418

def jpa_addStdImports!
  #java_import_add("java.util.ArrayList")
  #java_import_add("java.util.Set")
  #java_import_add("java.util.List")
  #java_import_add("javax.persistence.*")
  #    java_import_add("javax.persistence.Entity")
  #    java_import_add("javax.persistence.Table")
  #    java_import_add("javax.persistence.DiscriminatorColumn")
  #    java_import_add("javax.persistence.DiscriminatorValue")
  #    java_import_add("javax.persistence.DiscriminatorType")
  #    java_import_add("javax.persistence.Version")
  #    java_import_add("javax.persistence.Basic")
  #    java_import_add("javax.persistence.Column")
  #    java_import_add("javax.persistence.Lob")
  #    java_import_add("javax.persistence.Id")
  #    java_import_add("javax.persistence.GeneratedValue")
  #    java_import_add("javax.persistence.JoinTable")
  #    java_import_add("javax.persistence.OneToMany")
  #    java_import_add("javax.persistence.ManyToOne")
  #    java_import_add("javax.persistence.ManyToMany")
  #    java_import_add("javax.persistence.Temporal")
  #    java_import_add("javax.persistence.CascadeType")
  #    java_import_add("javax.persistence.FetchType")
  #    #java_import_add("javax.persistence.OneToOne")
  #    java_import_add("javax.persistence.JoinColumn")
  #    java_import_add("javax.persistence.TemporalType")



  #com.francetelecom.rd.cil.commons.common.CommonException
  #com.francetelecom.rd.cil.commons.model.IdentifiedObject
  ##{java_packageQualifiedName}.vo.#{java_Name}Value
  ##{java_packageQualifiedName}.vo.*
end

#jpa_carryPersistence?Boolean

Returns:

  • (Boolean)


311
312
313
314
315
316
317
318
319
# File 'lib/ontomde-java/jpa/jpa.rb', line 311

def jpa_carryPersistence?
  qn=java_qualifiedName
  JAVA_NOT_PERSISTENT_NAMESPACE.each { |ns|
    return false if qn.index(ns)==0
  }
  #external is supposed not to carry persistence
  #return false if umlx_external?
  return true;
end

#jpa_deriveFromPersistent?Boolean

Returns:

  • (Boolean)


295
296
297
298
299
300
# File 'lib/ontomde-java/jpa/jpa.rb', line 295

def jpa_deriveFromPersistent?
  uml_generalization.each { |c|
    return true if c.uml_general_one.jpa_isPersistent?
  }
  return false
end

#jpa_hasPersistenceId?Boolean

Returns:

  • (Boolean)


321
322
323
324
325
# File 'lib/ontomde-java/jpa/jpa.rb', line 321

def jpa_hasPersistenceId?
  return false if jpa_deriveFromPersistent?
  return false unless jpa_carryPersistence?
  return true
end

#jpa_isPersistent?Boolean

Returns:

  • (Boolean)


301
302
303
304
305
306
307
308
309
310
# File 'lib/ontomde-java/jpa/jpa.rb', line 301

def jpa_isPersistent?
  #an external class is supposed to be not persistent
  #if umlx_external?
  # return false
  #end
  return false if db_isTransient? || db_isDAO?
  return true if jpa_deriveFromPersistent?
  #return false unless uml_generalization.empty?
  return jpa_carryPersistence?
end

#jpa_tx(java_code) ⇒ Object

returns java_code enclosed in begin/commit with catch cleanup



258
259
260
# File 'lib/ontomde-java/jpa/jpa.rb', line 258

def jpa_tx(java_code)
  return "#{JPA_TX_BEGIN}#{java_code}#{JPA_TX_COMMIT}"
end

#jpa_writeConfigurationObject

writes jpa entry for this class if this class is persistent.



191
192
193
194
195
196
197
198
# File 'lib/ontomde-java/jpa/configuration.rb', line 191

def jpa_writeConfiguration()
  ignoreExternal=false
  return if java_ignoreMe?(ignoreExternal)
  return unless umlx_owner_one.kind_of?(Muml_Package)
  return unless jpa_isPersistent?
  return if db_isTransient?
  write %{<class>#{java_qualifiedName}</class>\n}
end

#log_error_db_tableName_too_long(tableName) ⇒ Object



326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
# File 'lib/ontomde-java/jpa/jpa.rb', line 326

def log_error_db_tableName_too_long(tableName)
  return if log_already_displayed?("#{rdf_uri}__tableName")
  log.error {
    "********* SGBD TABLE NAME TOO LONG **********\n** This software has detected a table name exceeding 63 character\n** ( tableName(\#{tableName.length})=\"\#{tableName}\" )\n**\n** This table name is related to element:\n** \#{mtk_object_message}\n**\n** Default Table name can be overidden using method call:\n** db_addTableNameOverride(\"\#{tableName}\",\"MYSHORTTABLENAME\")\n**\n** This model element is related to these other model elements:\n\#{mtk_related_message}********* SGBD TABLE NAME TOO LONG **********\n"
  }
end

#struts_addXmlFormField_row_type!(form, t) ⇒ Object

example: public void xmlForm_field_row_Roue(StringBuffer sb, Roue obj) {



239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
# File 'lib/ontomde-java/struts/xmlForm.rb', line 239

def struts_addXmlFormField_row_type!(form,t)
  helper=struts_getXMLFormHelper!.java_Name
  m=form.umlx_createAndAddOperation("#{rdf_uri}_fft_#{t.java_Name}","xmlForm_field_row_#{t.java_Name}")
  p=m.umlx_createAndAddParameter("#{m.rdf_uri}_p1","sb")
  p.uml_type=umlx_getOrCreateClass("java.lang.StringBuffer")

  p=m.umlx_createAndAddParameter("#{m.rdf_uri}_p2","obj")
  p.uml_type=t

  code=""
  t.struts_formAttribute.each { |a|
    code=code+%{#{helper}.xmlForm_field(sb,"#{a.java_Name}",obj.get#{a.java_NameBean}());\n}
    }
  m.java_code=code
end

#struts_addXmlFormField_type!(form, t) ⇒ Object

Generate a xml serialization method. Example signature: public void xmlForm_field_type_Roue(StringBuffer sb, String label, String[] currentValue, List<Roue> suggestion) …



191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
# File 'lib/ontomde-java/struts/xmlForm.rb', line 191

def struts_addXmlFormField_type!(form,t)
  m=form.umlx_createAndAddOperation("#{rdf_uri}_fft_#{t.java_Name}","xmlForm_field_type_#{t.java_Name}")
  p=m.umlx_createAndAddParameter("#{m.rdf_uri}_p1","sb")
  p.uml_type=umlx_getOrCreateClass("java.lang.StringBuffer")

  p=m.umlx_createAndAddParameter("#{m.rdf_uri}_p2","label")
  p.uml_type=umlx_dataType_string

  p=m.umlx_createAndAddParameter("#{m.rdf_uri}_p3","currentValueMany")
  p.uml_type=umlx_dataType_string
  #p.uml_isOrdered=RDF_TRUE
  #force collection type to Collection.
  p.uml_isUnique=RDF_FALSE
  p.uml_upperValue=umlx_literal(-1)
  p.java_use_Arrays=RDF_TRUE

  p=m.umlx_createAndAddParameter("#{m.rdf_uri}_p4","currentValueOne")
  p.uml_type=umlx_dataType_string
  #p.uml_upperValue=umlx_literal(-1)
  #p.java_use_Arrays=RDF_TRUE

  p=m.umlx_createAndAddParameter("#{m.rdf_uri}_p5","suggestion")
  p.uml_upperValue=umlx_literal(-1)
  p.uml_isOrdered=RDF_TRUE
  p.uml_type=t

  p=m.umlx_createAndAddParameter("#{m.rdf_uri}_p6","createSug")
  p.uml_upperValue=umlx_literal(-1)
  p.uml_isOrdered=RDF_TRUE
  p.uml_type=t.java_enumAssignableDataType_one

  helper=struts_getXMLFormHelper!.java_Name

  m.java_code="  \#{helper}.xmlForm_field_head(sb, label, currentValueMany,currentValueOne);\n  for (\#{t.java_qualifiedName} item : suggestion) {\n    if (\#{helper}.xmlForm_field_sug_ifNull(sb,item)) {\n      \#{helper}.xmlFormSugOpen(sb,Long.toString(item.getId()));\n      xmlForm_field_row_\#{t.java_Name}(sb, item);\n      \#{helper}.xmlFormSugClose(sb);\n    }\n  }\n  XMLFormHelper.xmlForm_field_create(sb,createSug);\n  \#{helper}.xmlForm_field_tail(sb, label);\n"
end

#struts_create_getXMLFormOperations!(form) ⇒ Object



258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
# File 'lib/ontomde-java/struts/xmlForm.rb', line 258

def struts_create_getXMLFormOperations!(form)
  return unless context[:generateXMLStrutsForm,false]
  t=form
  helper=struts_getXMLFormHelper!.java_Name
  form.java_import_add(struts_getXMLFormHelper!.java_qualifiedName)
  form.java_import_add("org.apache.struts.util.LabelValueBean")

  m=form.umlx_createAndAddOperation("#{rdf_uri}_fft_#{t.java_Name}",STRUTS_XML_FORM_GETTER)
  #p=m.umlx_createAndAddParameter("#{m.rdf_uri}_p1","sb")
  #p.uml_type=umlx_getOrCreateClass("java.lang.StringBuffer")

  p=m.umlx_createAndAddReturnParameter("#{m.rdf_uri}_p2","obj")
  p.uml_type=m.umlx_owner_one.umlx_dataType_string

  code="  StringBuffer sb = new StringBuffer();\n"

  usedTypes=Set.new
  self.struts_formAttribute.each { |a|
    next if a.uml_isReadOnly?
    if a.uml_type_one.kind_of?(Muml_Enumeration)
      code=code+%{#{helper}.xmlForm_field_type_Enum(sb, "#{a.java_Name}", get#{a.java_NameBean}(), get#{a.java_NameBean}Sug());\n}
    elsif a.uml_type_one.kind_of?(Muml_DataType)
      code=code+%{#{helper}.xmlForm_field_type_Lit(sb, "#{a.java_Name}", getReference().get#{a.java_NameBean}());\n}
    elsif a.umlx_manySide?
      code=code+%{xmlForm_field_type_#{a.uml_type_one.java_Name}(sb, "#{a.java_Name}", get#{a.java_NameBean}(),null, getReference().get#{a.java_NameBean}Sug(),#{ a.umlx_isComposite? ? "getReference().getCreateAndAdd#{a.java_NameBean}Sug()":"null"});\n}
      usedTypes.add(a.uml_type_one)
    else
      code=code+%{xmlForm_field_type_#{a.uml_type_one.java_Name}(sb, "#{a.java_Name}", null,get#{a.java_NameBean}(), getReference().get#{a.java_NameBean}Sug(),#{ a.umlx_isComposite? ? "getReference().getCreateAndAdd#{a.java_NameBean}Sug()":"null"});\n}
      usedTypes.add(a.uml_type_one)
    end
    }
  usedTypes.each { |t|
    struts_addXmlFormField_type!(form,t)
    struts_addXmlFormField_row_type!(form,t)
    }

  code=code+"  //StrutsHelper.xmlForm_field_type_Lit(sb, \"marque\", getMarque());\n  //xmlForm_field_type_Roue(sb, \"roues\", getRoues(), getReference().getRouesSug());\n  //xmlForm_field_type_Moteur(sb, \"moteur\", getMoteur(), getReference().getMoteurSug());\n"

  code=code+"  return sb.toString();\n"
  m.java_code=code
end

#struts_defaultTabIdObject

return identifier of the default tab



132
133
134
# File 'lib/ontomde-java/struts/jsp_edit.rb', line 132

def struts_defaultTabId
  return "all"
end

#struts_edit_generateObject



164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
# File 'lib/ontomde-java/struts/jsp_edit.rb', line 164

def struts_edit_generate
  return if java_ignoreMe?
  #path=context[:jspEditMode] ? "form_item" : "view_item"
  struts_ownedTab.each { |i|
    label="#{i}"
    f=self.struts_actionForm_one
    mtk_context(:struts_tab => i ) {


      mtk_writeSession( %{#{context[:webContentDir]}/#{struts_jsp_edit_path}} ) {
        #log.debug { %{#{context[:webContentDir]}/{struts_jsp_edit_path}} }
        struts_edit_writeHeader
        before=""
        after=""
        if(context[:generateXMLStrutsForm])
          before=%{<logic:notPresent parameter="FLEX">\n}
          after=%{</logic:notPresent>\n}
        end

        struts_encloseWrite(before,after) {
          mtk_context( :struts_curClass => self) {
            struts_edit_writePage
          }}
        before=""
        after=""
        if(context[:generateXMLStrutsForm])
          before=%{<logic:present parameter="FLEX">\n}
          after=%{</logic:present>\n}
        end
        struts_encloseWrite(before,after) {
          struts_edit_writePageXML(f)
        }
      }}}
end

#struts_edit_writeBodyObject

name of the javascript openTab method used to switch to the requested tab.



328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
# File 'lib/ontomde-java/struts/jsp_edit.rb', line 328

def struts_edit_writeBody
  mtk_context(:strutsActionName => "/#{java_Name}#{context[:struts_tab].java_Name}-submit" ) {
    struts_encloseWrite(%{<body >\n<html:form #{struts_formEncTypeAttribute} action="#{context[:strutsActionName]}">\n<center>},"</center>\n</html:form></body>\n")  {
      if(context[:generateXMLStrutsForm])
        write "    <!-- DEBUG SWITCH -->\n    <input type=\"checkbox\" name=\"FLEX\"/>\n"
      end

      struts_header_generate
      write "    <%-- ********* CORPS DE PAGE  ********** --%>\n<logic:messagesPresent>\n <div>\n   <table class=\"tableForm\">\n    <tr>\n     <td class=\"attributeIcons\">\n      <img src=\"\#{css_path_model}/\#{css_color_class}/image/btnWarning.gif\" alt=\"\" width=\"25\" height=\"25\" border=\"0\" />\n     </td>\n     <td>\n      <h1>\n        \#{struts_writeMsg(\"errors.header\")}\n      </h1>\n     </td>\n    </tr>\n  </table>\n  <html:messages id=\"error\">\n   <p class=\"attributeError\">\n    <bean:write name=\"error\"/>\n   </p>\n  </html:messages>\n</div>\n</logic:messagesPresent>\n\n\n"
      struts_jsp_writeTabBar

      write "<SCRIPT>\n"
      context[:struts_tab].struts_ownedAttribute.each { |a|
        next unless a.umlx_isComposite?
        #next if a.umlx_oneSide?
        f="createAndAdd#{a.java_NameBean}"
        write %{
function #{f}(reqType) {
 document.forms[0].#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}.value="#{f}";
        document.forms[0].#{STRUTS_REQUESTED_CREATION_TYPE_FIELD_NAME}.value=reqType;
        document.forms[0].submit();
 }
        }
      }
      write "<!-- THERE -->\n"

      write "</SCRIPT>\n"

      write "<div class=\"body\">\n  <div class=\"bodyTop\"/><div class=\"bodyContent\">\n\n"


      write "\n    <h1>\#{struts_writeMsg(\"\#{java_qualifiedName}.title\")}</h1>\n\n\#{mtk_stss{struts_jspEdit_write_Operation}}\n"
      struts_edit_writeForm
      write "  </div>\n  <div class=\"bodyBottom\"></div>\n\n\n"
      struts_footer_generate
      write "\n</div>\n"
    }}
end

#struts_edit_writeFieldsObject



473
474
475
476
477
478
479
# File 'lib/ontomde-java/struts/jsp_edit.rb', line 473

def struts_edit_writeFields
  context[:struts_tab].struts_ownedAttribute.each { |a|
    next if a.uml_name_one=="id"
    next if a.uml_name_one=="isLogicallyDeleted"
    a.struts_edit_writeFieldProp(self)
  }
end

#struts_edit_writeFormObject



414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
# File 'lib/ontomde-java/struts/jsp_edit.rb', line 414

def struts_edit_writeForm
  #<html:text property="xmda_action"/>


  struts_edit_writeFields
  write "<%-- ****** --%>\n<%-- SUBMIT --%>\n<%-- ****** --%>\n<div>\n <input type=\"hidden\" name=\"\#{STRUTS_REQUESTED_CREATION_TYPE_FIELD_NAME}\"/>\n <html:hidden property=\"\#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}\"/>\n <input type=\"hidden\" name=\"\#{Muml_Class::STRUTS_REQUESTED_TAB}\"/>\n <html:hidden property=\"\#{Muml_Class::STRUTS_SGBD_STATE}\"/>\n <SCRIPT>function sel(target) {document.forms[0].\#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}.value=target;}</SCRIPT>\n</div><br/>\n<div class=\"boutons\"  align=\"right\">\n  <html:submit styleClass=\"boutonForm\" onclick=\"\#{STRUTS_RETURN_ACTION}();return false;\">\#{struts_writeMsg(\"button.return\")}</html:submit>\n  <html:submit styleClass=\"boutonForm\" onclick=\"\#{STRUTS_PROCEED_ACTION}();return false;\">\#{struts_writeMsg(\"button.validate\")}</html:submit>\n  <%-- <html:submit onclick=\"sel('delete');\" styleClass=\"boutonForm\">\#{struts_writeMsg(\"button.delete\")}</html:submit> --%>\n  <html:reset styleClass=\"boutonForm\">\#{struts_writeMsg(\"button.reset\")}</html:reset>\n  <%-- <html:cancel styleClass=\"boutonForm\">\#{struts_writeMsg(\"button.cancel\")}</html:cancel>     --%>\n</div>\n"
end

#struts_edit_writeHead(&block) ⇒ Object



272
273
274
275
276
# File 'lib/ontomde-java/struts/jsp_edit.rb', line 272

def struts_edit_writeHead(&block)
  write "<head>"
  yield
  write "</head>"
end

#struts_edit_writeHeaderObject



240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
# File 'lib/ontomde-java/struts/jsp_edit.rb', line 240

def struts_edit_writeHeader

    # encoding must be ISO8859-1 to avoid bug with forms and accentuated characters.

    write "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<%@ page contentType=\"text/html;charset=ISO8859-1\" %>\n<%@ taglib uri=\"http://struts.apache.org/tags-bean\" prefix=\"bean\" %>\n<%@ taglib uri=\"http://struts.apache.org/tags-html\" prefix=\"html\" %>\n<%@ taglib uri=\"http://struts.apache.org/tags-logic\" prefix=\"logic\" %>\n"
    if context[:jspUseXmdaTaglib]
    write "<%@ taglib uri=\"http://orange.fr/2007/xmda/struts-tags\" prefix=\"xmda\" %>\n<%@ taglib uri=\"http://displaytag.sf.net\" prefix=\"display\" %>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n"
    
    if context[:security]   
      write "    <%@ taglib uri=\"http://orange.fr/2007/xmda/struts-security-tags\" prefix=\"xmdas\" %>\n"
    end
    if context[:statemachine]   
      write "    <%@ taglib uri=\"http://orange.fr/2007/xmda/fsm-tags\" prefix=\"xmdafsm\" %>\n"
    end
    
  end
end

#struts_edit_writeHTML(&block) ⇒ Object



234
235
236
237
238
# File 'lib/ontomde-java/struts/jsp_edit.rb', line 234

def struts_edit_writeHTML(&block)
  write("<html:html><%-- T:1004 --%>")
  yield
  write("</html:html><%-- T:1004 --%>")
end

#struts_edit_writePageObject



221
222
223
224
225
226
227
228
229
230
231
# File 'lib/ontomde-java/struts/jsp_edit.rb', line 221

def struts_edit_writePage
  struts_edit_writeHTML  {
    struts_edit_writeHead  {
      struts_jspEdit_generateJavascript
      struts_header_link_generate
      struts_jspEditwriteSelfJSInclude
      struts_edit_writeTitle
    }
    struts_edit_writeBody
  }
end

#struts_edit_writePageXML(f) ⇒ Object



200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
# File 'lib/ontomde-java/struts/jsp_edit.rb', line 200

def struts_edit_writePageXML(f)
  return unless context[:generateXMLStrutsForm]
  write( %{
<message>
<meta>
  <html:link action="/#{java_Name}#{context[:struts_tab].java_Name}-submit"/>
  <timeout_ms><%= 3*60*60*1000 %></timeout_ms>
  <timezone><bean:write name="#{struts_actionForm_one.java_Name}" property="#{::Muml_Classifier::STRUTS_SETTIMEZONE_FIELD}"/></timezone>
  <sessionId><%=session.getId()%></sessionId>
  <view>#{STRUTS_XML_VIEW_PREFIX}#{java_qualifiedName}</view><logic:messagesPresent>
  <html:messages id="error"><errors>
<error><bean:write name="error"/></error></html:messages>
  </errors>
</logic:messagesPresent></meta>
<form>
<bean:write name="#{f.java_Name}" property="#{::Muml_Class::STRUTS_XML_FORM_PROPERTY}" filter="false" />
</form>
</message>
    })
end

#struts_edit_writeTitleObject



278
279
280
# File 'lib/ontomde-java/struts/jsp_edit.rb', line 278

def struts_edit_writeTitle
  write %{<title>#{struts_writeMsg("#{self.java_qualifiedName}.title")}</title>}
end

#struts_editForwardNameObject



163
164
165
# File 'lib/ontomde-java/struts/struts-config.rb', line 163

def struts_editForwardName
  return "#{java_Name}#{STRUTS_EDIT_FWD_POSTFIX}"
end


125
126
127
# File 'lib/ontomde-java/struts/footer.rb', line 125

def struts_footer_generate
  rdf_Repository.struts_footer_generate
end

#struts_formEncTypeAttributeObject

form enctype attribute useful when form includes a field of type blob



321
322
323
324
# File 'lib/ontomde-java/struts/jsp_edit.rb', line 321

def struts_formEncTypeAttribute
  #TODO: add enctype *only* if form has a blob field
  return %{ enctype="multipart/form-data"}
end

#struts_formNameObject



3
4
5
# File 'lib/ontomde-java/struts/struts-config.rb', line 3

def struts_formName
  return "#{java_qualifiedName.tr('.','_')}"
end

#struts_get_struts_config_action_mapping_actionTypeClauseObject



176
177
178
179
180
181
182
# File 'lib/ontomde-java/struts/struts-config.rb', line 176

def struts_get_struts_config_action_mapping_actionTypeClause
   # if context[:struts_useSpring]
    # return %{type="defined in spring"}
    #else
  return %{type="#{struts_action_one.java_qualifiedName}"}
    #end
end

#struts_getXMLFormHelper!Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# File 'lib/ontomde-java/struts/xmlForm.rb', line 14

def struts_getXMLFormHelper!
  helper=umlx_getOrCreateClass(STRUTS_XMLFORM_HELPER)
  if(helper.java_customCode.empty?)
    helper.umlx_external=RDF_FALSE
    helper.java_import_add("org.apache.struts.util.LabelValueBean")
    helper.db_isTransient=RDF_TRUE
    helper.struts_isForm=RDF_FALSE
    helper.java_customCode= %{
public static void xmlForm_field(StringBuffer sb, String label, Object value) {
//Default behavior is to call toString.
//Customization should be coded in StrutsForm when using Struts.
xmlForm_field(sb,label,value==null ? null : value.toString());
}

//static java.text.SimpleDateFormat dfDate=new java.text.SimpleDateFormat("yyyy/MM/dd",java.util.Locale.ENGLISH);
//static java.text.SimpleDateFormat dfTimestamp=new java.text.SimpleDateFormat("yyyy/MM/dd HH:mm:ss",java.util.Locale.ENGLISH);
public static void xmlForm_field(StringBuffer sb, String label, java.util.Date value) {
  xmlForm_field(sb,label,value==null ? null : #{STRUTS_TIMESTAMP_FORMATER_INSTANCE}.format(value));
}

public static void xmlForm_field(StringBuffer sb, String label, Enum<?> value) {
xmlForm_field(sb,label,value==null ? null :  value.getClass().getCanonicalName()+"."+value.toString());
   }

public static void xmlForm_field(StringBuffer sb, String label, int value) {
xmlForm_field(sb,label,Integer.toString(value));
}
public static void xmlForm_field(StringBuffer sb, String label, long value) {
xmlForm_field(sb,label,Long.toString(value));
}
public static void xmlForm_field(StringBuffer sb, String label, boolean value) {
xmlForm_field(sb,label,Boolean.toString(value));
}
public static void xmlForm_field(StringBuffer sb, String label, String value) {
  sb.append("    <v n=\\"");
  sb.append(label);
  sb.append("\\">");
  sb.append(value==null ? "<nil/>" : value );
  sb.append("</v>\\n");
}

       public static void xmlForm_field_type_Lit(StringBuffer sb, String label,
    byte[] currentValue) {
       //TODO
       }
public static void xmlForm_field_type_Lit(StringBuffer sb, String label,
    String currentValue) {
  sb.append(" <f n=\\"");
  sb.append(label);
  sb.append("\\">");
  sb.append(currentValue==null ? "<nil/>" :currentValue);
  sb.append("</f>\\n");
}

public static void xmlForm_field_type_Lit(StringBuffer sb, String label, java.util.Date currentValue) {
  sb.append(" <f n=\\"");
  sb.append(label);
  sb.append("\\">");
  sb.append(currentValue==null ? "<nil/>" : #{STRUTS_TIMESTAMP_FORMATER_INSTANCE}.format(currentValue));
  sb.append("</f>\\n");
}
public static void xmlForm_field_type_Lit(StringBuffer sb, String label, boolean currentValue) {
  sb.append(" <f n=\\"");
  sb.append(label);
  sb.append("\\">");
  sb.append(currentValue ? "true" : "false");
  sb.append("</f>\\n");
}

public static void xmlForm_field_type_Lit(StringBuffer sb, String label, long currentValue) {
  sb.append(" <f n=\\"");
  sb.append(label);
  sb.append("\\">");
  sb.append(currentValue);
  sb.append("</f>\\n");
}

public static void xmlForm_field_type_Lit(StringBuffer sb, String label, int currentValue) {
  sb.append(" <f n=\\"");
  sb.append(label);
  sb.append("\\">");
  sb.append(currentValue);
  sb.append("</f>\\n");
}

public static boolean xmlForm_field_sug_ifNull(StringBuffer sb, Object item) {
  if (item == null) {
    sb.append("  <o k=\\"nill\\"/>\\n");
  }
  return item != null;
}

public static void xmlForm_field_head(StringBuffer sb, String label,
    String currentValue) {
  sb.append(" <f n=\\"");
  sb.append(label);
  sb.append("\\" k=\\"");
  sb.append(currentValue);
  sb.append("\\">\\n");
}

public static void xmlForm_field_head(StringBuffer sb, String label,
    String[] currentValueMany,String currentValueOne) {
  sb.append(" <f n=\\"");
  sb.append(label);
  sb.append("\\">\\n");
  if (currentValueMany!=null) {
    for (int i = 0; i < currentValueMany.length; i++) {
      String s = currentValueMany[i];
      sb.append("  <s>");
      sb.append(s==null ? "<nil/>" : s);
      sb.append("</s>\\n");
      }
    }
  if (currentValueOne!=null) {
    sb.append("  <s>");
    sb.append(currentValueOne==null ? "<nil/>" : currentValueOne);
    sb.append("</s>\\n");
  }
}

public static void xmlForm_field_tail(StringBuffer sb, String label) {
  sb.append(" </f>\\n");
}

public static void xmlForm_field_type_Enum(StringBuffer sb, String label,
    String currentValue, java.util.List<LabelValueBean> suggestions) {
  xmlForm_field_head(sb, label, currentValue);
  for (LabelValueBean i : suggestions) {
    sb.append("  <o k=\\"");
    sb.append(i.getValue());
    sb.append("\\">");
    sb.append(i.getLabel());
    sb.append("</o>\\n");
  }
  xmlForm_field_tail(sb, label);
}

public static void xmlFormSugOpen(StringBuffer sb, String k) {
  sb.append("  <o k=\\"");
  sb.append(k);
  sb.append("\\">\\n");
}

public static void xmlFormSugClose(StringBuffer sb) {
  sb.append("  </o>\\n");
}

//generates list of valid types for createAndAdd operation
public static void xmlForm_field_create(java.lang.StringBuffer sb,java.util.List<?> createSug){
  if(createSug!=null) {
    for(Object itemObj : createSug) {
      #{::Muml_Classifier::JAVA_ENUM_INTERFACE_QNAME} item=(#{::Muml_Classifier::JAVA_ENUM_INTERFACE_QNAME})itemObj;
      int i=0;
      if(item!=null) {
        sb.append("  <c k=\\"");
        sb.append(item.name());
        sb.append("\\">");
        sb.append(item.getClass().getCanonicalName());
        sb.append(".");
        sb.append(item.name());
        sb.append("</c>\\n");
      //} else {
        //i=i+1;
        //log.error("!!! null enum"+i);
      }
    }
  }
}
}
  end
  return helper
end

#struts_header_generateObject



37
38
39
40
# File 'lib/ontomde-java/struts/header.rb', line 37

def struts_header_generate
  self.rdf_Repository.struts_header_generate(self);
  return
end


4
5
6
# File 'lib/ontomde-java/struts/header_link.rb', line 4

def struts_header_link_generate
  rdf_Repository.struts_header_link_generate(struts_jsp_edit_path.to_s)
end

#struts_jsp_edit_pathObject

Returns the internal where to generate file for this object.



137
138
139
140
# File 'lib/ontomde-java/struts/jsp_edit.rb', line 137

def struts_jsp_edit_path
  path="form"
  return  "pages/#{java_InternalFilePath}/#{path}/#{java_Name}#{context[:struts_tab].java_Name}.jsp"
end

#struts_jsp_row_pathObject

Returns the internal where to generate file for this object.



142
143
144
145
# File 'lib/ontomde-java/struts/jsp_edit.rb', line 142

def struts_jsp_row_path
  path="form"
  return  "pages/#{java_InternalFilePath}/#{path}/#{java_Name}-row.jsp"
end

#struts_jsp_writeTabBarObject

write tabs in JSP NOTE: CSS is design in such a way that active tab is the last one and its id is menuOptDivId0



286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
# File 'lib/ontomde-java/struts/jsp_edit.rb', line 286

def struts_jsp_writeTabBar
  return if struts_ownedTab.size <= 1
  write %{<div class="menu" id="menuDivId">\n}
  #cmpt =1;
  onglet_actif=context[:struts_tab]
  struts_ownedTab.each { |tab|
    id=tab.java_Name
    label="#{self.java_qualifiedName}.#{id}.tab"
    if tab==onglet_actif


      write %{\n<div class="menuOptnSelect" id="menuOptDivId0">
<div class="menuOptnSelectLink"><html:link onclick="#{STRUTS_REFRESH_ACTION}('#{id}');return false;" page="">#{struts_writeMsg(label)}</html:link></div>
</div>
\n}

    else
#      if cmpt==1
#        write %{\n<div class="menuOptn" id="menuOptDivId#{id}" style="display:none;">
#<div class="menuLink"><html:link onclick="#{STRUTS_REFRESH_ACTION}('#{id}');return false;" page="">#{struts_writeMsg(label)}</html:link></div>
#</div>}
#      else
        write %{\n<div class="menuOptn" id="menuOptDivId#{id}">
<div class="menuLink"><html:link onclick="#{STRUTS_REFRESH_ACTION}('#{id}');return false;" page="">#{struts_writeMsg(label)}</html:link></div>
</div>}
#      end
#
#      cmpt=cmpt+1;
    end
  }
  write %{</div>\n}
end

#struts_jspEdit_generateJavascriptObject



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/ontomde-java/struts/jsp_edit_js.rb', line 7

def struts_jspEdit_generateJavascript
  js_include=context[:mtk_fileName].gsub(/\.[^\/]*$/,".js.jsp")
  mtk_writeSession("#{js_include}") {
    struts_jspEdit_generateJavascript_jspHeader
    #write("<SCRIPT>\n")
    struts_jspEdit_generateJavascript_commun
    struts_jspEdit_generateJavascript_operations
    struts_jspEdit_generateJavascript_edit_remove_add
    #write "</SCRIPT>\n"
  }
end

#struts_jspEdit_generateJavascript_communObject



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/ontomde-java/struts/jsp_edit_js.rb', line 41

def struts_jspEdit_generateJavascript_commun
  write "function \#{STRUTS_REFRESH_ACTION}(tabid) {\n document.forms[0].\#{Muml_Class::STRUTS_REQUESTED_TAB}.value=tabid;\n document.forms[0].\#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}.value=\"\#{STRUTS_REFRESH_ACTION}\";\n document.forms[0].submit();\n }\nfunction \#{STRUTS_RETURN_ACTION}() {\n document.forms[0].\#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}.value=\"\#{STRUTS_RETURN_ACTION}\";\n document.forms[0].submit();\n }\nfunction \#{STRUTS_PROCEED_ACTION}() {\n document.forms[0].\#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}.value=\"\#{STRUTS_PROCEED_ACTION}\";\n document.forms[0].submit();\n }\n\n function transformToServerFormat(date, field, locale) {\n   var time = date.getTime()\n   var date2 = new Date(time);\n   return date2.print(\"%Y/%m/%d %H:%M:%S\", locale);\n}\nfunction hide_sel(id){\n  var s = document.getElementsByTagName('select');\n  var len = s.length;\n  for (i = 0; i<len; i++){\ns[i].style.visibility = 'hidden';\n  }\ndocument.getElementById(id).style.visibility = 'visible';\n\n}\n \nfunction show_sel(id){\n  var s = document.getElementsByTagName('select');\n  var len = s.length;\n  for (i = 0; i<len; i++){\ns[i].style.visibility = 'visible';\n  }\ndocument.getElementById(id).style.visibility = 'hidden';\n}\n\n\n"
end

#struts_jspEdit_generateJavascript_edit_remove_addObject



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/ontomde-java/struts/jsp_edit_js.rb', line 85

def struts_jspEdit_generateJavascript_edit_remove_add
  context[:struts_tab].struts_ownedAttribute.each { |a|
    #next unless a.umlx_isComposite?
    #next unless a.umlx_isAssociation?
    #next if a.umlx_oneSide?
    ["edit","add"].each {|meth|
  f="#{meth}#{a.java_NameBean}"
  write "\nfunction \#{f}(objid) {\n if(\"_\"+objid != \"_empty\") {\ndocument.forms[0].\#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}.value=\"\#{f}\";\ndocument.forms[0].\#{Muml_Class::STRUTS_REQUESTED_TAB}.value=objid;\ndocument.forms[0].submit();\n} else {\n alert(\"no element selected for \\\\n\#{struts_writeMsg(\"\#{self.java_qualifiedName}.\#{a.java_Name}\")}\");\n}\n }\n"

    }

    write "\nfunction removeAndDelete\#{a.java_NameBean}(objid) {\n if (window.confirm('<bean:message key=\"userMessage.deleteItem\"/>')) {\n if(\"_\"+objid != \"_empty\") {\ndocument.forms[0].\#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}.value=\"removeAndDelete\#{a.java_NameBean}\";\ndocument.forms[0].\#{Muml_Class::STRUTS_REQUESTED_TAB}.value=objid;\ndocument.forms[0].submit();\n} else {\n alert(\"no element selected for \\\\n\#{struts_writeMsg(\"\#{self.java_qualifiedName}.\#{a.java_Name}\")}\");\n}\n  }\n }\n"
  }
end

#struts_jspEdit_generateJavascript_jspHeaderObject



19
20
21
22
23
24
25
26
# File 'lib/ontomde-java/struts/jsp_edit_js.rb', line 19

def struts_jspEdit_generateJavascript_jspHeader
  write "<%@ page contentType=\"text/javascript;charset=UTF-8\" %>\n<%@ taglib uri=\"http://struts.apache.org/tags-bean\" prefix=\"bean\" %>\n<%@ taglib uri=\"http://struts.apache.org/tags-html\" prefix=\"html\" %>\n<%@ taglib uri=\"http://struts.apache.org/tags-logic\" prefix=\"logic\" %>\n"
end

#struts_jspEdit_generateJavascript_operationsObject



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/ontomde-java/struts/jsp_edit_js.rb', line 28

def struts_jspEdit_generateJavascript_operations
  umlx_ownedAndInheritedOperation.each {|biz|
    next unless biz.umlx_businessMethod?
    f=biz.java_Name
    write(%{
function #{biz.js_Name}() {
 document.forms[0].#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}.value="#{f}";
      document.forms[0].submit();
 }
      })
  }
end

#struts_jspEdit_write_OperationObject



440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
# File 'lib/ontomde-java/struts/jsp_edit.rb', line 440

def struts_jspEdit_write_Operation
  uml_ownedOperation.each {|biz|
    next unless biz.uml_visibility_one.isPublic?
    next unless biz.umlx_businessMethod?
    next if biz.struts_bizOperationReverse.empty?

    #TODO:recuperer le nom MPC par navigation!

    #<html:form action="/#{self.java_Name}#{biz.java_Name}MPC-new.do">
    #<html:id>
    #<html:submit name="[#{biz.uml_name}]"/>
    #</html:form>

    # write %{
    # <a href="" onclick="#{biz.java_Name}();return false;">
    # [#{biz.java_Name}]
    # </a>
    # }
    if context[:statemachine] && biz.java_isFsmOperation
      write(%{<xmdafsm:FsmZoneTag methodName="#{biz.java_Name}" state="$\{#{self.struts_actionForm_one.java_Name}.reference.persistedState\}">\n})
    end
    write %{
<html:submit styleClass="boutonForm" onclick="#{biz.js_Name}();return false;">#{struts_writeMsg("#{biz.umlx_owner_one.java_qualifiedName}.#{biz.java_Name}")}</html:submit>
    }
    if context[:statemachine] && biz.java_isFsmOperation
      write(%{</xmdafsm:FsmZoneTag>\n})
    end
    

  }
end

#struts_jspEditwriteSelfJSIncludeObject



3
4
5
6
# File 'lib/ontomde-java/struts/jsp_edit_js.rb', line 3

def struts_jspEditwriteSelfJSInclude
  js_include=struts_jsp_edit_path.gsub(/\.[^\/]*$/,".js.jsp")
  write(%{<script language="Javascript" src="#{js_include}" ></script>\n})
end

#struts_row_generateObject



147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/ontomde-java/struts/jsp_edit.rb', line 147

def struts_row_generate
  mtk_writeSession( %{#{context[:webContentDir]}/#{struts_jsp_row_path}} ) {
    mtk_context( :struts_curClass => self) {
      struts_edit_writeHeader
      write("<%-- TPL:2 BEGIN --%>\n<tr>")
      struts_formAttribute.each { |a|
        next if a.uml_name_one=="id"
        next if a.uml_name_one=="isLogicallyDeleted"
        write("<%-- UML PROPERTY: #{a.uml_name}--%>\n")
        write("<td>");
        write("</td>");
      }
      write("</tr>\n<%-- TPL:2 END --%>\n")
    }
  }
end

#struts_validation_writeField(field) ⇒ Object



108
109
110
# File 'lib/ontomde-java/struts/validation.rb', line 108

def struts_validation_writeField(field)
  write "<!-- TODO -->"
end

#struts_validation_writeFieldsObject



51
52
53
54
55
# File 'lib/ontomde-java/struts/validation.rb', line 51

def struts_validation_writeFields
  struts_formAttribute.each  { |a|
    a.struts_validation_writeField
  }
end

#struts_write_struts_config_action_mappingObject



186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
# File 'lib/ontomde-java/struts/struts-config.rb', line 186

def struts_write_struts_config_action_mapping
return if struts_action.empty?

fwd=""
struts_ownedTab.each{ |tab|
  idOnglet=tab.java_Name_one
  fwd=fwd+%{\n     <forward name="#{idOnglet}" path="/pages/#{java_InternalFilePath}form/#{java_Name}#{idOnglet}.jsp" />}
  }

mtk_protected {

write "  <action path=\"/\#{java_Name}-new\"\n    \#{struts_get_struts_config_action_mapping_actionTypeClause}\n    name=\"\#{self.struts_actionForm_one.java_Name}\"\n    scope=\"session\"\n    validate=\"false\"\n    cancellable=\"true\"\n    parameter=\"\#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}\"\n    input=\"/pages/\#{java_InternalFilePath}form/\#{java_Name}\#{struts_defaultTabId}.jsp\"\n    >\#{fwd}\n     <forward name=\"cancel\" path=\"/Welcome.do\" />\n     <forward name=\"\#{STRUTS_INPUT_FWD}\" path=\"/pages/\#{java_InternalFilePath}form/\#{java_Name}\#{struts_defaultTabId}.jsp\"/>\n  </action>\n"
struts_ownedTab.each{ |tab|
  idOnglet=tab.java_Name_one
#struts_tabs.each{|idOnglet|
write "  <action path=\"/\#{java_Name}\#{idOnglet}-submit\"\n    \#{struts_get_struts_config_action_mapping_actionTypeClause}\n    name=\"\#{self.struts_actionForm_one.java_Name}\"\n    scope=\"session\"\n    validate=\"true\"\n    cancellable=\"true\"\n    parameter=\"\#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}\"\n    input=\"/pages/\#{java_InternalFilePath}form/\#{java_Name}\#{idOnglet}.jsp\"\n    >\#{fwd}\n     <forward name=\"cancel\" path=\"/Welcome.do\" />\n     <forward name=\"\#{STRUTS_INPUT_FWD}\" path=\"/pages/\#{java_InternalFilePath}form/\#{java_Name}\#{idOnglet}.jsp\"/>\n  </action>\n"
}
}
end

#struts_write_struts_config_form_beanObject



166
167
168
169
170
171
172
173
# File 'lib/ontomde-java/struts/struts-config.rb', line 166

def struts_write_struts_config_form_bean
  return if struts_actionForm.empty?

write "  <form-bean name=\"\#{self.struts_actionForm_one.java_uniqueName}\" type=\"\#{struts_actionForm_one.java_qualifiedName}\"/>\n"
    #<!-- set-property property="example" value="EXAMPLE"/ -->
end

#struts_write_validation_config_formsetObject



44
45
46
47
48
49
# File 'lib/ontomde-java/struts/validation.rb', line 44

def struts_write_validation_config_formset
  return if struts_actionForm.empty?
  write %{<form  name="#{self.struts_actionForm_one.java_uniqueName}">\n}
  struts_validation_writeFields
  write %{</form>\n}
end

#umlx_addGetStaticRoleOperation!Object

Adds methods which returns computed grants to user. This methods returns an list of granted rights (which are stored as java enums)

Example:

  • public List<SecurityRole> getComputedAccessControlGrant(org.acegi.security.UserDetails userName



254
255
256
257
258
259
260
261
262
263
264
265
266
# File 'lib/ontomde-java/java/security.rb', line 254

def umlx_addGetStaticRoleOperation!
  m=self.umlx_createAndAddOperation("#{rdf_uri}_getComputedAccessControlGrant","getComputedAccessControlGrant")

  r=m.umlx_createAndAddReturnParameter("#{m.rdf_uri}_return")
  r.uml_type=umlx_reserved_model.umlx_getOrCreateEnumeration(Mrdf_Repository::JAVA_GLOBAL_ACCESS_CONTROL_ENUM,Muml_Classifier::UMLX_SEARCH_EVERY_MODEL)
  r.uml_upperValue=umlx_literal(-1)
  r.umlx_createAndAddComment("#{r.rdf_uri}_c1",JAVA_GETSTATIC_ROLE_COMMENT)
 
  p=m.umlx_createAndAddParameter("#{m.rdf_uri}_p1","user")
  p.uml_type=umlx_reserved_model.umlx_getOrCreateEnumeration("org.springframework.security.userdetails.UserDetails",Muml_Classifier::UMLX_SEARCH_EVERY_MODEL)
  
  m.java_code=JAVA_GETSTATIC_ROLE_CODE
end

#vso_DataSourceNameObject



255
256
257
# File 'lib/ontomde-java/vmware/vso.rb', line 255

def vso_DataSourceName
  return "DS-DRASS"
end

#vso_ownedAttributeObject



163
164
165
166
167
168
169
# File 'lib/ontomde-java/vmware/vso.rb', line 163

def vso_ownedAttribute
  s=Set.new
  umlx_ownedAttributeHierarchical.each { |op|
    s.add(op) 
  }
  return s
end

#vso_ownedOperationObject



155
156
157
158
159
160
161
# File 'lib/ontomde-java/vmware/vso.rb', line 155

def vso_ownedOperation
  s=Set.new
  umlx_ownedOperationHierarchical.each { |op|
    s.add(op) 
  }
  return s
end

#vso_writeConstructors(tab) ⇒ Object



177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
# File 'lib/ontomde-java/vmware/vso.rb', line 177

def vso_writeConstructors(tab)
  found=false
  java_ownedOperation.sort { |a,b| a.java_qualifiedName.to_s <=> b.java_qualifiedName.to_s }.each { |o| 
      next unless o.umlx_isConstructor?
      found=true
  }
  return unless found
  tab2=tab.tab
  tab3=tab2.tab
  before="#{tab}<constructors>\n"
  after="#{tab}</constructors>\n"
  encloseWrite(before,after) {
    java_ownedOperation.sort { |a,b| a.java_qualifiedName.to_s <=> b.java_qualifiedName.to_s }.each { |o| 
      next unless o.umlx_isConstructor?
      encloseWrite("#{tab2}<constructor>\n","#{tab2}</constructor>\n") {
        o.vso_writeJavadoc(tab3)
        o.vso_writeOperationParameters(tab3)
      }
    }
  }
end

#vso_writeFinder(tab) ⇒ Object



209
210
211
212
213
214
215
216
217
218
219
220
221
# File 'lib/ontomde-java/vmware/vso.rb', line 209

def vso_writeFinder(tab)
  tab2=tab.tab
  isInventoryRoot=umlx_hasStereotype?('TROOT')
  before=%{#{tab}<finder type="#{java_Name}" image="images/#{java_Name}.png" datasource="#{vso_DataSourceName}" script-object="#{java_Name}" hidden="#{isInventoryRoot ? 'true' : 'false'}">\n}
  after="#{tab}</finder>\n"
  encloseWrite(before,after) {
    write(%{#{tab2}<id accessor="getId()"/>\n}) unless isInventoryRoot
    vso_writeFinderInventoryChildren(tab2)
    vso_writeFinderRelations(tab2)
    vso_writeFinderProperties(tab2)
  }

end

#vso_writeFinderInventoryChildren(tab) ⇒ Object



222
223
224
225
226
227
228
229
230
231
232
# File 'lib/ontomde-java/vmware/vso.rb', line 222

def vso_writeFinderInventoryChildren(tab)
  tab2=tab.tab
  before=%{#{tab}<inventory-children>\n}
  after=%{#{tab}</inventory-children>\n}
  encloseWrite(before,after,true) {
    vso_ownedAttribute.each {|p|
      next unless p.umlx_hasStereotype?("TCHILD")
      write(%{#{tab2}<relation-link name="#{p.java_Name}"/>\n})
    }
  }
end

#vso_writeFinderProperties(tab) ⇒ Object



244
245
246
247
248
249
250
251
252
253
254
# File 'lib/ontomde-java/vmware/vso.rb', line 244

def vso_writeFinderProperties(tab)
  tab2=tab.tab
  before=%{#{tab}<properties>\n}
  after=%{#{tab}</properties>\n}
  encloseWrite(before,after,true) {
    vso_ownedAttribute.each {|p|
      next unless p.umlx_hasStereotype?("TLABEL")
      write(%{#{tab2}<property name="#{p.java_Name}" display-name="#{p.uml_name}" bean-property="#{p.java_Name}"/>\n})
    }
  }
end

#vso_writeFinderRelations(tab) ⇒ Object



233
234
235
236
237
238
239
240
241
242
243
# File 'lib/ontomde-java/vmware/vso.rb', line 233

def vso_writeFinderRelations(tab)
  tab2=tab.tab
  before=%{#{tab}<relations>\n}
  after=%{#{tab}</relations>\n}
  encloseWrite(before,after,true) {
    vso_ownedAttribute.each {|p|
      next unless p.umlx_hasStereotype?("TCHILD")
      write(%{#{tab2}<relation name="#{p.java_Name}" type="#{p.uml_type_one.java_Name}"/>\n})
    }
  }
end

#vso_writeMethods(tab) ⇒ Object



198
199
200
201
202
203
204
205
206
207
208
# File 'lib/ontomde-java/vmware/vso.rb', line 198

def vso_writeMethods(tab)
  tab2=tab.tab
  before="#{tab}<methods>\n"
  after="#{tab}</methods>\n"
  encloseWrite(before,after) {
    java_ownedOperation.sort { |a,b| a.java_qualifiedName.to_s <=> b.java_qualifiedName.to_s }.each { |o| 
      next if o.umlx_isConstructor?
      o.java_writeOperationMapping(tab2)
    } 
  }
end

#vso_writeObjectMapping(tab) ⇒ Object



171
172
173
174
175
176
# File 'lib/ontomde-java/vmware/vso.rb', line 171

def vso_writeObjectMapping(tab)
  vso_writeObject(tab,"") { |tab2|
    vso_writeConstructors(tab2)
    vso_writeMethods(tab2)
  }
end

#xsd_makeSerializable!Object

Mark this java class as serializable.

  • adds implements java.io.Serializable

  • adds serialVersionUID variable

Example:

private static final long serialVersionUID = 1L;


644
645
646
647
648
649
650
651
652
653
654
655
656
657
# File 'lib/ontomde-java/java/xsd.rb', line 644

def xsd_makeSerializable!
  #xsd_implements_add("java.io.Serializable");
  s=umlx_getOrCreateClass("java.io.Serializable")
  umlx_createAndAddImplementation(s)

  p=umlx_createAndAddProperty(rdf_uri+"_serialVersionUID","serialVersionUID");
  p.uml_visibility=::Cuml_VisibilityKind::Private
  p.uml_isStatic=RDF_TRUE
  p.xsd_isFinal=RDF_TRUE
  p.xsd_isTransient=RDF_TRUE
  p.uml_type=umlx_dataType_long
  p.xsd_code="1L"
  p.xsd_noAccessors=RDF_TRUE
end

#xsd_writeConstructorsObject

Adds a constructor with paramter

NOTE:

  • EXPERIMENTAL

TODO: associations, et filtrer attributs static



691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
# File 'lib/ontomde-java/java/xsd.rb', line 691

def xsd_writeConstructors
  write("  public #{xsd_Name}() {\n")
  write("  }\n")
  #TODO: associations ??, filtrer static
  if (!uml_ownedAttribute.empty?)
    parameters = ""
    uml_ownedAttribute.each { |o|
      if o.umlx_isAttribute?
        parameters << ", "
        parameters << o.xsd_propertyRoleType.to_s
        parameters << " "
        parameters << o.xsd_NameProperty
      end
    }
    if (!parameters.empty?)
      write("\n")
      parameters = parameters.slice(1, parameters.length)
      write("  public #{xsd_Name}(#{parameters}) {\n")
      uml_ownedAttribute.each { |o|
        if o.umlx_isAttribute?
          write("    set#{o.xsd_NameBean}(#{o.xsd_NameProperty});\n")
        end
      }
      write("  }\n")
    end
  end
end

#xsd_writeImplementsObject

write java implements declaration clause if needed.

Example:

  • implements interface1, interface2



665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
# File 'lib/ontomde-java/java/xsd.rb', line 665

def xsd_writeImplements
  imp=Set.new
  uml_implementation.each { |g|
    imp.add(g.uml_supplier_one.xsd_qualifiedName)
  }
  xsd_implements.each { |g|
    imp.add(g)
  }

  #    sep=""# \n<!-- implements "
  #    e=""
  #    imp.sort{ |a,b| a <=> b}.each { |g|
  #      write(sep)
  #      write(g)
  #      sep=","
  #      e=" -->"
  #    }
  #    write(e)
end