ontomde-java 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +10 -0
- data/Manifest.txt +156 -0
- data/README.txt +98 -0
- data/Rakefile +21 -0
- data/bin/ontomde-java +5 -0
- data/generateRdocFile.sh +16 -0
- data/lib/ontomde-java.rb +45 -0
- data/lib/ontomde-java/crank.rb +13 -0
- data/lib/ontomde-java/crank/context.rb +384 -0
- data/lib/ontomde-java/crank/crankJpa.rb +103 -0
- data/lib/ontomde-java/crank/equals.rb +83 -0
- data/lib/ontomde-java/crank/facelets.rb +243 -0
- data/lib/ontomde-java/crank/facesconfig.rb +113 -0
- data/lib/ontomde-java/crank/helper.rb +46 -0
- data/lib/ontomde-java/crank/main.rb +51 -0
- data/lib/ontomde-java/crank/menu.rb +39 -0
- data/lib/ontomde-java/crank/menu2.rb +78 -0
- data/lib/ontomde-java/crank/validation.rb +34 -0
- data/lib/ontomde-java/ejb2.rb +3 -0
- data/lib/ontomde-java/ejb2/main-ejb2.rb +194 -0
- data/lib/ontomde-java/flex.rb +7 -0
- data/lib/ontomde-java/flex/Editor.mxml.as.rb +184 -0
- data/lib/ontomde-java/flex/Editor.mxml.rb +701 -0
- data/lib/ontomde-java/flex/ImportationAS.rb +40 -0
- data/lib/ontomde-java/flex/ValueObjectAS.rb +338 -0
- data/lib/ontomde-java/flex/fileTypes.rb +19 -0
- data/lib/ontomde-java/flex/main.rb +347 -0
- data/lib/ontomde-java/frontend/command.rb +324 -0
- data/lib/ontomde-java/frontend/command.rdoc +583 -0
- data/lib/ontomde-java/frontend/defaultOptions.rb +124 -0
- data/lib/ontomde-java/frontend/options.rb +555 -0
- data/lib/ontomde-java/frontend/steps.rb +287 -0
- data/lib/ontomde-java/java/accessorCode.rb +528 -0
- data/lib/ontomde-java/java/accessorSignature.rb +347 -0
- data/lib/ontomde-java/java/annotationOntoMDE.rb +88 -0
- data/lib/ontomde-java/java/apache.rb +34 -0
- data/lib/ontomde-java/java/build.rb +80 -0
- data/lib/ontomde-java/java/collectionMapping.rb +112 -0
- data/lib/ontomde-java/java/component.rb +446 -0
- data/lib/ontomde-java/java/contextualize.rb +43 -0
- data/lib/ontomde-java/java/enumAssignable.rb +75 -0
- data/lib/ontomde-java/java/enumCompatibilityLayer.rb +195 -0
- data/lib/ontomde-java/java/equals.rb +91 -0
- data/lib/ontomde-java/java/groovy.rb +95 -0
- data/lib/ontomde-java/java/java.rb +1329 -0
- data/lib/ontomde-java/java/java.rdoc +78 -0
- data/lib/ontomde-java/java/javaDatatypeMapping.rb +156 -0
- data/lib/ontomde-java/java/javaHelper.rb +25 -0
- data/lib/ontomde-java/java/java_todo.rdoc +3 -0
- data/lib/ontomde-java/java/javadoc.rb +254 -0
- data/lib/ontomde-java/java/meta.rb +28 -0
- data/lib/ontomde-java/java/operationAsClass.rb +144 -0
- data/lib/ontomde-java/java/security.rb +260 -0
- data/lib/ontomde-java/java/stateMachine.rb +415 -0
- data/lib/ontomde-java/java/tenant.rb +65 -0
- data/lib/ontomde-java/java/xsd.rb +1363 -0
- data/lib/ontomde-java/java/xsdCollectionMapping.rb +112 -0
- data/lib/ontomde-java/java/xsdDatatypeMapping.rb +103 -0
- data/lib/ontomde-java/jpa.rb +17 -0
- data/lib/ontomde-java/jpa/configuration.rb +176 -0
- data/lib/ontomde-java/jpa/finder.rb +102 -0
- data/lib/ontomde-java/jpa/jpa.rb +531 -0
- data/lib/ontomde-java/jpa/jpa.rdoc +20 -0
- data/lib/ontomde-java/jpa/locking.rb +18 -0
- data/lib/ontomde-java/jpa/mapping.rb +314 -0
- data/lib/ontomde-java/jpa/redefined.rb +77 -0
- data/lib/ontomde-java/jpa/simulationAutoImplement.rb +54 -0
- data/lib/ontomde-java/jpdl.rb +9 -0
- data/lib/ontomde-java/jpdl/bpm.pprj +1745 -0
- data/lib/ontomde-java/jpdl/bpm.rdf +140 -0
- data/lib/ontomde-java/jpdl/bpm.rdfs +231 -0
- data/lib/ontomde-java/jpdl/constant.rb +5 -0
- data/lib/ontomde-java/jpdl/graphic.rb +52 -0
- data/lib/ontomde-java/jpdl/jpdl.rb +281 -0
- data/lib/ontomde-java/jpdl/jpdl_deploy.rb +114 -0
- data/lib/ontomde-java/jpdl/main.rb +348 -0
- data/lib/ontomde-java/jpdl/main.rdoc +2 -0
- data/lib/ontomde-java/jpdl/processOperationToClass.rb +316 -0
- data/lib/ontomde-java/kbjava.rb +6 -0
- data/lib/ontomde-java/kbjava/rdfToJava.rb +407 -0
- data/lib/ontomde-java/struts.rb +27 -0
- data/lib/ontomde-java/struts/MessageResources.rb +359 -0
- data/lib/ontomde-java/struts/action.rb +883 -0
- data/lib/ontomde-java/struts/blob.rb +11 -0
- data/lib/ontomde-java/struts/exceptionHandling.rb +167 -0
- data/lib/ontomde-java/struts/footer.rb +128 -0
- data/lib/ontomde-java/struts/form.rb +450 -0
- data/lib/ontomde-java/struts/header.rb +37 -0
- data/lib/ontomde-java/struts/header_link.rb +39 -0
- data/lib/ontomde-java/struts/jsp_edit.rb +870 -0
- data/lib/ontomde-java/struts/jsp_edit_field.rb +1 -0
- data/lib/ontomde-java/struts/jsp_edit_js.rb +124 -0
- data/lib/ontomde-java/struts/jsp_index.rb +136 -0
- data/lib/ontomde-java/struts/localeAction.rb +641 -0
- data/lib/ontomde-java/struts/main.rb +41 -0
- data/lib/ontomde-java/struts/mappingForBean.rb +132 -0
- data/lib/ontomde-java/struts/mappingForJsp.rb +272 -0
- data/lib/ontomde-java/struts/mappingToJavaHierarchy.rb +87 -0
- data/lib/ontomde-java/struts/reloadAction.rb +33 -0
- data/lib/ontomde-java/struts/spring.rb +89 -0
- data/lib/ontomde-java/struts/struts-config.rb +232 -0
- data/lib/ontomde-java/struts/validation.rb +116 -0
- data/lib/ontomde-java/struts/validator.rb +341 -0
- data/lib/ontomde-java/struts/webXml.rb +195 -0
- data/lib/ontomde-java/struts/xmlForm.rb +308 -0
- data/lib/ontomde-java/version.rb +5 -0
- data/profiling.xls +0 -0
- data/test/.classpath +14 -0
- data/test/.project +17 -0
- data/test/.settings/org.eclipse.jdt.core.prefs +23 -0
- data/test/Rakefile +71 -0
- data/test/build.xml +34 -0
- data/test/classpath.rb +15 -0
- data/test/lib/junit-4.1.jar +0 -0
- data/test/load1.rb +3 -0
- data/test/load2.rb +3 -0
- data/test/log4j.properties +46 -0
- data/test/model/.project +11 -0
- data/test/model/BigProject.mdzip +0 -0
- data/test/model/BigProject.mdzip.nt +102866 -0
- data/test/model/ClassDiagram.EntArch.gif +0 -0
- data/test/model/ClassDiagram.emx.gif +0 -0
- data/test/model/ClassDiagram.mdzip.gif +0 -0
- data/test/model/model_ea71.bis.ea.xmi +149 -0
- data/test/model/model_ea71.ea.xmi +4470 -0
- data/test/model/model_ea71.eap +0 -0
- data/test/model/model_ea71_README.txt +8 -0
- data/test/model/multipleInheritance.emx +466 -0
- data/test/model/multipleInheritance.emx.nt +2428 -0
- data/test/model/simple1-530.ofp +0 -0
- data/test/model/simple1-includedAsReference.emx +169 -0
- data/test/model/simple1.emx +3729 -0
- data/test/model/simple1.emx.fragments.nt +81 -0
- data/test/model/simple1.emx.nt +5760 -0
- data/test/model/simple1.mdzip +0 -0
- data/test/model/simple1.mdzip.nt +11500 -0
- data/test/model/simple1.oe530.nt +1986 -0
- data/test/model/simple1.oe600.nt +1627 -0
- data/test/src/RuntimeTest.java +656 -0
- data/test/src/testsLevel1.java +174 -0
- data/test/src/testsLevel2.java +29 -0
- data/test/src/testsLevel3.java +40 -0
- data/test/test-ea7.sh +15 -0
- data/test/test-magicDraw.sh +10 -0
- data/test/test-mi.sh +9 -0
- data/test/test-oe530.sh +10 -0
- data/test/test-oe600.sh +11 -0
- data/test/test-rsm.sh +11 -0
- data/test/test_export_ea71.rb +5 -0
- data/test/test_export_oe530.rb +4 -0
- data/test/test_export_oe600.rb +4 -0
- data/test/test_export_rsm60.rb +4 -0
- data/test/trace +419 -0
- data/test/uml_test.rb +1434 -0
- data/test/uml_test.xls +0 -0
- data/test/unit_test.rb +6 -0
- metadata +224 -0
@@ -0,0 +1,112 @@
|
|
1
|
+
# Java collection mapping rules for UML property and UML parameter.
|
2
|
+
|
3
|
+
module Muml_MultiplicityElement
|
4
|
+
#returns a XSD_collectionMaping object containing mapping rules to java collection element
|
5
|
+
#
|
6
|
+
#Examples:
|
7
|
+
# * Array
|
8
|
+
# * List
|
9
|
+
# * Set
|
10
|
+
#
|
11
|
+
#Reference:
|
12
|
+
# * #xsd_use_Arrays?
|
13
|
+
def xsd_getCollectionMapping
|
14
|
+
if self.umlx_upperValueIsOne?
|
15
|
+
return XSD_collectionMapping_None.instance
|
16
|
+
elsif xsd_use_Arrays?
|
17
|
+
return XSD_collectionMapping_Array.instance
|
18
|
+
elsif uml_isOrdered?
|
19
|
+
# this mapping is used wether or not isUnique
|
20
|
+
return XSD_collectionMapping_List_ArrayList.instance
|
21
|
+
elsif uml_isUnique
|
22
|
+
return XSD_collectionMapping_Set_HashSet.instance
|
23
|
+
else
|
24
|
+
return XSD_collectionMapping_Collection_ArrayList.instance
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Helper class for wrapping a base type in ad-hoc collection.
|
30
|
+
class XSD_collectionMapping_None
|
31
|
+
include Singleton
|
32
|
+
#return type enclosed in collection interface declaration
|
33
|
+
def addCollectionInterface(type)
|
34
|
+
return type
|
35
|
+
end
|
36
|
+
#return type enclosed in collection implementation declaration
|
37
|
+
def addCollectionImplem(type)
|
38
|
+
return type
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# Helper class for wrapping a base type in ad-hoc collection.
|
43
|
+
class XSD_collectionMapping_base
|
44
|
+
# return type enclosed in collection interface declaration
|
45
|
+
def addCollectionInterface(type)
|
46
|
+
return "#{getInterface}<#{type}>"
|
47
|
+
end
|
48
|
+
# return type enclosed in collection implementation declaration
|
49
|
+
def addCollectionImplem(type)
|
50
|
+
return "#{getImplem}<#{type}>"
|
51
|
+
end
|
52
|
+
# return new element type collection creator
|
53
|
+
def addNew(type)
|
54
|
+
return "new #{getImplem}<#{type}>()"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# Helper class for wrapping a base type in ad-hoc collection.
|
59
|
+
class XSD_collectionMapping_Collection_ArrayList < XSD_collectionMapping_base
|
60
|
+
include Singleton
|
61
|
+
# returns interface type for this collection
|
62
|
+
def getInterface
|
63
|
+
return "Collection"
|
64
|
+
end
|
65
|
+
# returns implementation class for this collection
|
66
|
+
def getImplem
|
67
|
+
return "java.util.ArrayList"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# Helper class for wrapping a base type in ad-hoc collection.
|
72
|
+
class XSD_collectionMapping_List_ArrayList < XSD_collectionMapping_base
|
73
|
+
include Singleton
|
74
|
+
# returns interface type for this collection
|
75
|
+
def getInterface
|
76
|
+
return "java.util.List"
|
77
|
+
end
|
78
|
+
# returns implementation class for this collection
|
79
|
+
def getImplem
|
80
|
+
return "java.util.ArrayList"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# Helper class for wrapping a base type in ad-hoc collection.
|
85
|
+
class XSD_collectionMapping_Set_HashSet < XSD_collectionMapping_base
|
86
|
+
include Singleton
|
87
|
+
# returns interface type for this collection
|
88
|
+
def getInterface
|
89
|
+
return "java.util.Set"
|
90
|
+
end
|
91
|
+
# returns implementation class for this collection
|
92
|
+
def getImplem
|
93
|
+
return "java.util.HashSet"
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
# Helper class for wrapping a base type in ad-hoc collection.
|
98
|
+
class XSD_collectionMapping_Array
|
99
|
+
include Singleton
|
100
|
+
# return type enclosed in collection interface declaration
|
101
|
+
def addCollectionInterface(type)
|
102
|
+
return "#{type}[]"
|
103
|
+
end
|
104
|
+
# return type enclosed in collection implementation declaration
|
105
|
+
def addCollectionImplem(type)
|
106
|
+
return "#{type}[]"
|
107
|
+
end
|
108
|
+
# return new element type collection creator
|
109
|
+
def addNew(type)
|
110
|
+
return "new #{type}[0]"
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
class DatatypeMapping
|
2
|
+
def xsd_getType
|
3
|
+
# inheriting class should redefine this method
|
4
|
+
log.error %{xsd_getType not implemented for #{self.class}}
|
5
|
+
return %{/* TODO: implement ruby xsd_getType for #{self.class}*/}
|
6
|
+
end
|
7
|
+
end
|
8
|
+
class DatatypeMappingText < DatatypeMapping
|
9
|
+
def xsd_getType
|
10
|
+
return "xsd:string"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class DatatypeMappingLargeText < DatatypeMappingText
|
15
|
+
end
|
16
|
+
|
17
|
+
class DatatypeMappingMimeType < DatatypeMappingText
|
18
|
+
end
|
19
|
+
|
20
|
+
class DatatypeMappingOrdinal < DatatypeMappingText
|
21
|
+
end
|
22
|
+
|
23
|
+
class DatatypeMappingInteger < DatatypeMappingOrdinal
|
24
|
+
def xsd_getType
|
25
|
+
return "xsd:int"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class DatatypeMappingLong < DatatypeMappingOrdinal
|
30
|
+
def xsd_getType
|
31
|
+
return "xsd:long"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class DatatypeMappingLongObject < DatatypeMappingOrdinal
|
36
|
+
def xsd_getType
|
37
|
+
return "xsd:long"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
class DatatypeMappingFile < DatatypeMapping
|
41
|
+
def xsd_getType
|
42
|
+
return "xsd:???"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
class DatatypeMappingBoolean < DatatypeMapping
|
47
|
+
#name of the key used by struts to referece
|
48
|
+
#current bean in session.
|
49
|
+
def xsd_getType
|
50
|
+
return "xsd:boolean"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
class DatatypeMappingTimeStamp < DatatypeMapping
|
55
|
+
def xsd_getType
|
56
|
+
return "xsd:datetime"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
class DatatypeMappingCalendar < DatatypeMapping
|
61
|
+
def xsd_getType
|
62
|
+
return "xsd:date"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
class DatatypeMappingGenericClass < DatatypeMapping
|
70
|
+
def xsd_getType
|
71
|
+
return "java.lang.Object"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
class DatatypeMappingGenericEnum < DatatypeMapping
|
76
|
+
def xsd_getType
|
77
|
+
return "java.lang.Object"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
class DatatypeMappingURL < DatatypeMappingText
|
83
|
+
end
|
84
|
+
|
85
|
+
class DatatypeMappingBLOB < DatatypeMapping
|
86
|
+
def xsd_getType
|
87
|
+
return "xsd:base64Binary"
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
class DatatypeMappingIMG < DatatypeMappingBLOB
|
92
|
+
end
|
93
|
+
|
94
|
+
class DatatypeMappingGRAPHVIZ < DatatypeMappingLargeText
|
95
|
+
end
|
96
|
+
|
97
|
+
class DatatypeMappingPassword < DatatypeMappingText
|
98
|
+
end
|
99
|
+
|
100
|
+
class DatatypeMappingEmailAddress < DatatypeMappingText
|
101
|
+
end
|
102
|
+
|
103
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
#:include: ontomde-uml2-jpa/jpa.rdoc
|
3
|
+
|
4
|
+
# this constant is defined in every db module
|
5
|
+
# multiple db module inclusion will trigger a warning
|
6
|
+
DB_PERSISTENCE_MODULE="ontomde-uml2_jpa"
|
7
|
+
|
8
|
+
require 'ontomde-java'
|
9
|
+
|
10
|
+
require 'ontomde-java/jpa/jpa.rb'
|
11
|
+
require 'ontomde-java/jpa/finder.rb'
|
12
|
+
require 'ontomde-java/jpa/configuration.rb'
|
13
|
+
require 'ontomde-java/jpa/mapping.rb'
|
14
|
+
require 'ontomde-java/jpa/redefined.rb'
|
15
|
+
require 'ontomde-java/jpa/simulationAutoImplement.rb'
|
16
|
+
require 'ontomde-java/jpa/locking.rb'
|
17
|
+
|
@@ -0,0 +1,176 @@
|
|
1
|
+
module Mrdf_Repository
|
2
|
+
|
3
|
+
#Generates persistence configuration file
|
4
|
+
def db_generateConfiguration
|
5
|
+
jpa_generateConfiguration
|
6
|
+
end
|
7
|
+
|
8
|
+
#Generates hibernate configuration file
|
9
|
+
def jpa_generateConfiguration
|
10
|
+
if context[:struts_useSpring]
|
11
|
+
mtk_writeSession("#{context[:jpaConfigDir,context[:javaDir]]}/META-INF/persistence.xml") {
|
12
|
+
jpa_writeConfigurationForSpring
|
13
|
+
}
|
14
|
+
else
|
15
|
+
# empty
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
def jpa_writeConfigurationForSpring
|
21
|
+
write %{<?xml version="1.0" encoding="UTF-8"?>
|
22
|
+
<!-- This configuration file is for a spring enabled application. -->
|
23
|
+
<!-- For database settings, please see ApplicationContext-jpa.xml -->
|
24
|
+
|
25
|
+
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
|
26
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
27
|
+
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
|
28
|
+
version="1.0">
|
29
|
+
#{mtk_stss{jpa_writeWebAppConfiguration}}
|
30
|
+
|
31
|
+
#{mtk_stss{jpa_writeDeploymentConfiguration}}
|
32
|
+
</persistence>
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def jpa_writeWebAppConfiguration
|
37
|
+
write %{
|
38
|
+
<persistence-unit name="persistence-unit-test"
|
39
|
+
transaction-type="RESOURCE_LOCAL">
|
40
|
+
<provider>org.hibernate.ejb.HibernatePersistence</provider>
|
41
|
+
#{mtk_stss{jpa_writeConfigurationPersistentClasses}}
|
42
|
+
<properties>
|
43
|
+
#{mtk_stss{jpa_writeOptimizedHibernateProperties}}
|
44
|
+
</properties>
|
45
|
+
</persistence-unit>
|
46
|
+
}
|
47
|
+
end
|
48
|
+
|
49
|
+
def jpa_writeDeploymentConfiguration
|
50
|
+
write %{
|
51
|
+
<!-- This persistence unit is used only by hibernateTools in "deployBD.xml"
|
52
|
+
to generate tables. -->
|
53
|
+
<persistence-unit name="deployment-persistence-unit"
|
54
|
+
transaction-type="RESOURCE_LOCAL">
|
55
|
+
<provider>org.hibernate.ejb.HibernatePersistence</provider>
|
56
|
+
#{mtk_stss{jpa_writeConfigurationPersistentClasses}}
|
57
|
+
<properties>
|
58
|
+
#{mtk_stss{jpa_writeDBConnectionParameters}}
|
59
|
+
</properties>
|
60
|
+
</persistence-unit>
|
61
|
+
}
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
#writes jpa configuration file to current
|
67
|
+
def jpa_writeConfigurationStandard
|
68
|
+
write %{<?xml version="1.0" encoding="UTF-8"?>
|
69
|
+
<persistence
|
70
|
+
xmlns="http://java.sun.com/xml/ns/persistence"
|
71
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
72
|
+
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
|
73
|
+
version="1.0">
|
74
|
+
<persistence-unit
|
75
|
+
name="persistence-unit-test"
|
76
|
+
transaction-type="RESOURCE_LOCAL"
|
77
|
+
>
|
78
|
+
}
|
79
|
+
jpa_writeConfigurationPersistentClasses
|
80
|
+
|
81
|
+
write %{<properties>\n}
|
82
|
+
jpa_writeDBConnectionParameters
|
83
|
+
jpa_writeConnectionPool
|
84
|
+
write %{
|
85
|
+
<!-- Echo all executed SQL to stdout -->
|
86
|
+
<property name="hibernate.show_sql" value="false"/>
|
87
|
+
<!-- recreate schema ? validate | update | create | create-drop -->
|
88
|
+
<property name="hibernate.hbm2ddl.auto" value="#{context[:jpa_ddl_mode,"update"]}"/>
|
89
|
+
}
|
90
|
+
|
91
|
+
write %{</properties>\n</persistence-unit>\n</persistence>\n}
|
92
|
+
end
|
93
|
+
|
94
|
+
#writes configuration parameter for hibernate sgbd connection.
|
95
|
+
#Some parameter are extracted from context.
|
96
|
+
def jpa_default_db_url
|
97
|
+
#name=umlx_model.uml_name_one.tr('^a-zA-Z0-9','_')
|
98
|
+
return %{jdbc:mysql:///#{context[:db_schema_name,"testschema"]}}
|
99
|
+
end
|
100
|
+
def jpa_writeDBConnectionParameters
|
101
|
+
write %{
|
102
|
+
<property name="hibernate.dialect" value="#{context[:hib_dialect,"org.hibernate.dialect.MySQL5InnoDBDialect"]}"/>
|
103
|
+
<property name="hibernate.connection.driver_class" value="#{context[:hib_connection_driver_class,"com.mysql.jdbc.Driver"]}"/>
|
104
|
+
<property name="hibernate.connection.url" value="#{context[:hib_connection_url,jpa_default_db_url]}"/>
|
105
|
+
<property name="hibernate.connection.username" value="#{context[:hib_connection_username,"testuser"]}"/>
|
106
|
+
<property name="hibernate.connection.password" value="#{context[:hib_connection_password,"testpwd"]}"/>
|
107
|
+
<!--
|
108
|
+
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
|
109
|
+
<property name="hibernate.connection.username" value="sa"/>
|
110
|
+
<property name="hibernate.connection.password" value=""/>
|
111
|
+
<property name="hibernate.connection.url" value="jdbc:hsqldb:hsql://localhost:1701"/>
|
112
|
+
<property name="hibernate.hbm2ddl.auto" value="update"/>
|
113
|
+
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
|
114
|
+
-->
|
115
|
+
}
|
116
|
+
end
|
117
|
+
|
118
|
+
|
119
|
+
def jpa_writeOptimizedHibernateProperties
|
120
|
+
write %{
|
121
|
+
<property name="hibernate.show_sql" value="false" />
|
122
|
+
<property name="hibernate.hbm2ddl.auto" value="update" />
|
123
|
+
|
124
|
+
<!-- Set a maximum "depth" for the outer join fetch tree for single-ended associations (one-to-one, many-to-one) -->
|
125
|
+
<property name="hibernate.max_fetch_depth" value="0" />
|
126
|
+
|
127
|
+
<!-- determines the JDBC fetch size (calls Statement.setFetchSize()) -->
|
128
|
+
<property name="hibernate.jdbc.fetch_size" value="4" />
|
129
|
+
|
130
|
+
<!-- makes Hibernate start faster (it does not try to build cglib-enhanced objects to access getter/setters) -->
|
131
|
+
<property name="hibernate.bytecode.use_reflection_optimizer" value="false" />
|
132
|
+
}
|
133
|
+
end
|
134
|
+
|
135
|
+
#writes configuration parameter for hibernate connection pool.
|
136
|
+
def jpa_writeConnectionPool
|
137
|
+
write %{
|
138
|
+
<!-- connection pool -->
|
139
|
+
<!-- cf: http://www.hibernate.org/214.html -->
|
140
|
+
<property name="hibernate.c3p0.min_size" value="5"/>
|
141
|
+
<property name="hibernate.c3p0.max_size" value="20"/>
|
142
|
+
<property name="hibernate.c3p0.timeout" value="1800"/> <!-- seconds -->
|
143
|
+
<property name="hibernate.c3p0.idle_test_period" value="100"/> <!-- seconds -->
|
144
|
+
<property name="hibernate.c3p0.max_statement" value="50"/>
|
145
|
+
}
|
146
|
+
end
|
147
|
+
|
148
|
+
#writes jpa configuration list of persistent class
|
149
|
+
def jpa_writeConfigurationPersistentClasses
|
150
|
+
write %{<!-- begin Persistent classes declaration -->\n}
|
151
|
+
uml_Class_all.each {|c|
|
152
|
+
next unless c.kind_of?(Muml_Class) && c.umlx_isReallyAClass?
|
153
|
+
c.jpa_writeConfiguration
|
154
|
+
}
|
155
|
+
#TODO: remove hack
|
156
|
+
# context[:db_additionalPersistentClass,["com.jbpm.wrapper.process.Process"]].each { |cl|
|
157
|
+
# write %{<class>#{cl}</class>\n}
|
158
|
+
# }
|
159
|
+
write %{<exclude-unlisted-classes>true</exclude-unlisted-classes>\n}
|
160
|
+
write %{<!-- end Persistent classes declaration -->\n}
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
module Muml_Class
|
165
|
+
#
|
166
|
+
#writes jpa entry for this class if this class is persistent.
|
167
|
+
def jpa_writeConfiguration()
|
168
|
+
ignoreExternal=false
|
169
|
+
return if java_ignoreMe?(ignoreExternal)
|
170
|
+
return unless umlx_owner_one.kind_of?(Muml_Package)
|
171
|
+
return unless jpa_isPersistent?
|
172
|
+
return if db_isTransient?
|
173
|
+
write %{<class>#{java_qualifiedName}</class>\n}
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
@@ -0,0 +1,102 @@
|
|
1
|
+
module Muml_Class
|
2
|
+
#adds a finder to eao
|
3
|
+
#self is supposed to be the bean and eao the "dao".
|
4
|
+
def jpa_addFindAll!(eao)
|
5
|
+
# java_NameBean is added to avoid name clash with inheritance
|
6
|
+
m=eao.umlx_createAndAddOperation(rdf_uri+"_findAll","findAll")#+self.java_NameBean)
|
7
|
+
m.uml_isStatic=RDF_TRUE
|
8
|
+
#m.uml_class=self
|
9
|
+
m.uml_visibility=Cuml_VisibilityKind::Public
|
10
|
+
#m.uml_isStatic=RDF_TRUE
|
11
|
+
|
12
|
+
#em=m.umlx_createAndAddParameter(m.rdf_uri+"_entityManager","entityManager")
|
13
|
+
#em.uml_type=umlx_getOrCreateClass(JPA::EntityManager)
|
14
|
+
#em.uml_direction=Cuml_ParameterDirectionKind::In
|
15
|
+
#em.uml_upperValue=umlx_literal(1)
|
16
|
+
#em.uml_lowerValue=umlx_literal(1)
|
17
|
+
|
18
|
+
rp=m.umlx_createAndAddParameter(m.rdf_uri+"_ret_param","return")
|
19
|
+
rp.uml_direction=Cuml_ParameterDirectionKind::Return
|
20
|
+
rp.uml_upperValue=umlx_literal(-1)
|
21
|
+
rp.uml_lowerValue=umlx_literal(0)
|
22
|
+
rp.uml_type=self
|
23
|
+
rp.uml_isOrdered=RDF_TRUE
|
24
|
+
|
25
|
+
#m.java_code="return (#{self.java_qualifiedName})entityManager.find( #{self.java_qualifiedName}.class, #{ip.uml_name});"
|
26
|
+
|
27
|
+
basicQuery=<<END
|
28
|
+
javax.persistence.Query q=getEntityManager().createQuery( "select Object(c) from #{java_Name} as c");
|
29
|
+
return (java.util.List<#{self.java_qualifiedName}>) q.getResultList();
|
30
|
+
END
|
31
|
+
|
32
|
+
|
33
|
+
if !context[:multiTenant]
|
34
|
+
m.java_code=basicQuery
|
35
|
+
else
|
36
|
+
|
37
|
+
ip=m.umlx_createAndAddParameter(m.rdf_uri+"_tenant","tenant")
|
38
|
+
ip.uml_type=rdf_Repository.java_getTenantClass
|
39
|
+
ip.umlx_createAndAddComment(ip.rdf_uri+"comment","Restrict query to this tenant")
|
40
|
+
|
41
|
+
m.java_code=<<END
|
42
|
+
if(#{ip.java_Name}!=null) {
|
43
|
+
javax.persistence.Query q=getEntityManager().createQuery( "select Object(c) from #{java_Name} as c where c.#{TENANT_FIELD_NAME}= :tenantQP");
|
44
|
+
q.setParameter("tenantQP",#{ip.java_Name});
|
45
|
+
return (java.util.List<#{self.java_qualifiedName}>) q.getResultList();
|
46
|
+
} else {
|
47
|
+
//TODO: disable in production code
|
48
|
+
System.out.println("DEBUG MODE");
|
49
|
+
#{basicQuery}
|
50
|
+
}
|
51
|
+
|
52
|
+
END
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
m.java_annotation_add(%{@SuppressWarnings("unchecked")})
|
58
|
+
|
59
|
+
# because A<-B is not Set<A> <- Set<B>
|
60
|
+
# we need to have an extra parameter
|
61
|
+
# so method overloading is OK.
|
62
|
+
# (this is not necessary when A is return)
|
63
|
+
|
64
|
+
if context[:db_useExtraTypeParameterForFindAll]
|
65
|
+
t=m.umlx_createAndAddParameter(m.rdf_uri+"_class","nullCast")
|
66
|
+
t.uml_type=self
|
67
|
+
end
|
68
|
+
|
69
|
+
return m
|
70
|
+
end
|
71
|
+
def jpa_addFindByPrimaryKey!(eao)
|
72
|
+
m=eao.umlx_createAndAddOperation(rdf_uri+"_finderop","find")
|
73
|
+
m.uml_isStatic=RDF_TRUE
|
74
|
+
#m.uml_class=self
|
75
|
+
m.uml_visibility=Cuml_VisibilityKind::Public
|
76
|
+
#m.uml_isStatic=RDF_TRUE
|
77
|
+
|
78
|
+
#em=m.umlx_createAndAddParameter(m.rdf_uri+"_entityManager","entityManager")
|
79
|
+
#em.uml_type=umlx_getOrCreateClass(JPA::EntityManager)
|
80
|
+
#em.uml_direction=Cuml_ParameterDirectionKind::In
|
81
|
+
#em.uml_upperValue=umlx_literal(1)
|
82
|
+
#em.uml_lowerValue=umlx_literal(1)
|
83
|
+
|
84
|
+
ip=m.umlx_createAndAddParameter(m.rdf_uri+"_id_param","primaryKey")
|
85
|
+
ip.uml_direction=Cuml_ParameterDirectionKind::In
|
86
|
+
ip.uml_upperValue=umlx_literal(1)
|
87
|
+
ip.uml_lowerValue=umlx_literal(1)
|
88
|
+
ip.uml_type=umlx_dataType_long
|
89
|
+
#ip.uml_isOrdered=RDF_FALSE
|
90
|
+
|
91
|
+
rp=m.umlx_createAndAddParameter(m.rdf_uri+"_ret_param","return")
|
92
|
+
rp.uml_direction=Cuml_ParameterDirectionKind::Return
|
93
|
+
rp.uml_upperValue=umlx_literal(1)
|
94
|
+
rp.uml_lowerValue=umlx_literal(0)
|
95
|
+
rp.uml_type=self
|
96
|
+
#rp.uml_isOrdered=RDF_FALSE
|
97
|
+
|
98
|
+
m.java_code="return (#{self.java_qualifiedName})getEntityManager().find( #{self.java_qualifiedName}.class, #{ip.uml_name});"
|
99
|
+
|
100
|
+
return m
|
101
|
+
end
|
102
|
+
end
|