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,78 @@
|
|
1
|
+
This tool is a java code generator for UML2 model.
|
2
|
+
|
3
|
+
=Main advantages
|
4
|
+
* Open Source
|
5
|
+
* Case tool independant
|
6
|
+
* Very low maintenance (<5000 lines of code and no dependency)
|
7
|
+
* High perenity (no dependency on external tools and library)
|
8
|
+
* Very fast and scalable for large UML models
|
9
|
+
* Generator is fully object oriented
|
10
|
+
* Does not use tool specific template or extension language
|
11
|
+
|
12
|
+
=Required skills to generate java code from uml2 model
|
13
|
+
* None, just lauch the generator command line (uml2java)
|
14
|
+
|
15
|
+
=Required skills to customize the standard java code
|
16
|
+
* UML2 model structure
|
17
|
+
* Standard Ruby knowledge
|
18
|
+
* Read this documentation
|
19
|
+
* No tool specific language (template, extension, ...)
|
20
|
+
|
21
|
+
=Currently supported UML case tools are
|
22
|
+
* IBM Rational RSM 6.0 (full export, *incremental* export)
|
23
|
+
* Magic Draw 11.5 (full export)
|
24
|
+
|
25
|
+
=Standard features
|
26
|
+
* Generates Java Enum for UML Enum
|
27
|
+
* Generates Java Class for UML Class
|
28
|
+
* Generates Java inner Class for UML inner Class
|
29
|
+
* Generates Java interface for UML interface
|
30
|
+
* Generates Java operation squeleton for UML operation
|
31
|
+
* Generates Java Attribute getter for java attribute (using a model transformation)
|
32
|
+
* Generates Java Attribute setter for java attribute (using a model transformation)
|
33
|
+
* Generates Java Attribute remover for java attribute (using a model transformation)
|
34
|
+
* Generates UML exception for methods
|
35
|
+
|
36
|
+
=Extended features
|
37
|
+
* Model tranformation is used extensively for model enhancement (addition of getter/setter)
|
38
|
+
* Generates Java accessors handling bi-directionnal associations (other end is updated)
|
39
|
+
* Requires *no* external java library
|
40
|
+
* Requires *no* internal java library (that would be provided by this tool)
|
41
|
+
* Every accessor/getter/... may be modified in Java file and preserved by subsequent generation.
|
42
|
+
* Generator has access to every UML2 model element (class model, state model, ...)
|
43
|
+
* Performant model traversal. Every UML2 model element may be navigated both ways, unlike tools such as EMF/UML2 or Objecteering for example who require expensive full model lookup (to find out who inherits from me)
|
44
|
+
* CodeSave feature. (When a method is deleted from UML model, Java code is saved in a file) (also works with any hand written code).
|
45
|
+
|
46
|
+
=Eclipse Integration
|
47
|
+
* Imports can be modified inline (in java file) by Eclipse
|
48
|
+
* Imports generate by Eclipse "organize imports" are preserved by subsequent generations.
|
49
|
+
|
50
|
+
* Java operation squeleton can be modified inline (in java file) using Eclipse.
|
51
|
+
* Eclipse Ruby editor can be used to customize Java code generator.
|
52
|
+
|
53
|
+
=Performance features
|
54
|
+
* Model loading time is *linear* unlike MDR based products (such as AndroMDA)
|
55
|
+
* Model loading time is similar to JAVA/EMF loading time
|
56
|
+
* *Incremental* model update allow nearly instantaneous generation time even on very large models.
|
57
|
+
|
58
|
+
=High end features
|
59
|
+
* Model transformation are fully redefinable
|
60
|
+
* Code generation is fully redefinable
|
61
|
+
* Generator is fully object oriented
|
62
|
+
|
63
|
+
=Agile Programming Feature
|
64
|
+
* Generation runtime is independant of GUI and can be executed by daily builds on servers.
|
65
|
+
|
66
|
+
=Versionning features
|
67
|
+
* Several versions of ontomde may be installed simultaneously on one machine.
|
68
|
+
* Project may request one version of ontomde or a range (>=1, >=1 <2, ...)
|
69
|
+
|
70
|
+
=Near zero dependency
|
71
|
+
This tool relies on
|
72
|
+
* UML2 specification
|
73
|
+
* Ruby 1.8
|
74
|
+
* itself (<
|
75
|
+
* and *nothing* else
|
76
|
+
This tool lifecycle is independant of case tools and Eclipse continous evolution.
|
77
|
+
You will never be forced to upgrade all of your generation scripts because you chose to change or upgrade your UML case tool.
|
78
|
+
|
@@ -0,0 +1,156 @@
|
|
1
|
+
class DatatypeMapping
|
2
|
+
def java_getType
|
3
|
+
# inheriting class should redefine this method
|
4
|
+
log.error %{java_getType not implemented for #{self.class}}
|
5
|
+
return %{/* TODO: implement ruby java_getType for #{self.class}*/}
|
6
|
+
end
|
7
|
+
end
|
8
|
+
class DatatypeMappingText < DatatypeMapping
|
9
|
+
def java_getType
|
10
|
+
return "java.lang.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 java_getType
|
25
|
+
return "int"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class DatatypeMappingLong < DatatypeMappingOrdinal
|
30
|
+
def java_getType
|
31
|
+
return "long"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class DatatypeMappingLongObject < DatatypeMappingOrdinal
|
36
|
+
def java_getType
|
37
|
+
return "Long"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
class DatatypeMappingFile < DatatypeMapping
|
41
|
+
def java_getType
|
42
|
+
return "java.lang.Object"
|
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
|
+
STRUTS_BEAN_KEY= "org.apache.struts.taglib.html.BEAN";
|
50
|
+
|
51
|
+
def java_getType
|
52
|
+
return "boolean"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
class DatatypeMappingTimeStamp < DatatypeMapping
|
57
|
+
def java_getType
|
58
|
+
return "java.util.Date"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
class DatatypeMappingCalendar < DatatypeMapping
|
63
|
+
def java_getType
|
64
|
+
return "java.util.Date"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
class DatatypeMappingGenericClass < DatatypeMapping
|
72
|
+
def getFormCopyTo(field)
|
73
|
+
a=field
|
74
|
+
return "/* #{a.java_NameBean} is transient */\n" if a.uml_type_one.java_DAOClass.empty?
|
75
|
+
if a.umlx_oneSide?
|
76
|
+
return %{_to.set#{a.java_NameBean}(this.get#{a.java_NameBean}().compareTo("nil")==0 ? null : #{a.uml_type_one.java_DAOClass_one.java_qualifiedName}.find(Long.parseLong(this.get#{a.java_NameBean}())));\n}
|
77
|
+
else # many
|
78
|
+
cm=a.java_getCollectionMapping
|
79
|
+
return <<END333
|
80
|
+
{ // UML: #{field.uml_name}
|
81
|
+
String[] src=this.get#{a.java_NameBean}();
|
82
|
+
#{cm.addCollectionInterface(a.uml_type_one.java_qualifiedName)} newCol= #{cm.addNew(a.uml_type_one.java_qualifiedName)};
|
83
|
+
int max=src==null ? 0 : src.length;
|
84
|
+
#{a.uml_type_one.java_qualifiedName} item=null;
|
85
|
+
for(int i=0; i<max;i++) {
|
86
|
+
//log.error("loading : "+src[i]);
|
87
|
+
if(src[i]==null) continue;
|
88
|
+
item=#{a.uml_type_one.java_DAOClass_one.java_qualifiedName}.find(Long.parseLong(src[i]));
|
89
|
+
newCol.add(item);
|
90
|
+
}
|
91
|
+
_to.set#{a.java_NameBean}(newCol);
|
92
|
+
}
|
93
|
+
END333
|
94
|
+
end
|
95
|
+
end
|
96
|
+
def getFormInitFrom(field)
|
97
|
+
a=field
|
98
|
+
if a.umlx_oneSide?
|
99
|
+
return %{this.set#{a.java_NameBean}(_from.get#{a.java_NameBean}()==null? "nil" : Long.toString(_from.get#{a.java_NameBean}().getId()));\n}
|
100
|
+
else
|
101
|
+
return %{
|
102
|
+
{ /*STRUTS:2001*/
|
103
|
+
this.set#{a.java_NameBean}(null);
|
104
|
+
java.util.Iterator<?> iter=_from.get#{a.java_NameBean}().iterator();
|
105
|
+
#{a.uml_type_one.java_qualifiedName} item=null;
|
106
|
+
while(iter.hasNext()){
|
107
|
+
item=(#{a.uml_type_one.java_qualifiedName})iter.next();
|
108
|
+
this.add#{a.java_NameBean}(Long.toString(item.getId()));
|
109
|
+
}
|
110
|
+
}
|
111
|
+
}
|
112
|
+
end
|
113
|
+
end
|
114
|
+
def java_getType
|
115
|
+
return "java.lang.Object"
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
class DatatypeMappingGenericEnum < DatatypeMapping
|
120
|
+
NULL_ENUM_VALUE_AS_STRING="nil"
|
121
|
+
def getFormCopyTo(field)
|
122
|
+
a=field
|
123
|
+
return %{_to.set#{a.java_NameBean}(this.get#{a.java_NameBean}().compareTo("#{NULL_ENUM_VALUE_AS_STRING}")!=0 ? Enum.valueOf(#{a.uml_type_one.java_qualifiedName}.class,this.get#{a.java_NameBean}()):null);\n}
|
124
|
+
end
|
125
|
+
def getFormInitFrom(field)
|
126
|
+
#return "this.set#{field.java_NameBean}(_from.get#{field.java_NameBean}()==null ? -1 :_from.get#{field.java_NameBean}().ordinal());\n"
|
127
|
+
return %{this.set#{field.java_NameBean}(_from.get#{field.java_NameBean}()==null ? "#{NULL_ENUM_VALUE_AS_STRING}" :_from.get#{field.java_NameBean}().name());\n}
|
128
|
+
end
|
129
|
+
def java_getType
|
130
|
+
return "java.lang.Object"
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
|
135
|
+
class DatatypeMappingURL < DatatypeMappingText
|
136
|
+
end
|
137
|
+
|
138
|
+
class DatatypeMappingBLOB < DatatypeMapping
|
139
|
+
def java_getType
|
140
|
+
return "byte[]"
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
class DatatypeMappingIMG < DatatypeMappingBLOB
|
145
|
+
end
|
146
|
+
|
147
|
+
class DatatypeMappingGRAPHVIZ < DatatypeMappingLargeText
|
148
|
+
end
|
149
|
+
|
150
|
+
class DatatypeMappingPassword < DatatypeMappingText
|
151
|
+
end
|
152
|
+
|
153
|
+
class DatatypeMappingEmailAddress < DatatypeMappingText
|
154
|
+
end
|
155
|
+
|
156
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class JHelper
|
2
|
+
def JHelper.to_firstUpper(name)
|
3
|
+
result = String.new(name)
|
4
|
+
if !result.empty?
|
5
|
+
result[0] = result[0, 1].upcase
|
6
|
+
end
|
7
|
+
return result
|
8
|
+
end
|
9
|
+
def JHelper.to_NameProperty(name)
|
10
|
+
result = String.new(name)
|
11
|
+
if !result.empty?
|
12
|
+
result[0] = result[0, 1].downcase
|
13
|
+
end
|
14
|
+
return result
|
15
|
+
end
|
16
|
+
# remove the last caracter if 's'
|
17
|
+
def JHelper.to_SingleName(name)
|
18
|
+
result = String.new(name)
|
19
|
+
if !result.empty? && result[result.size-1]==115 #'s'
|
20
|
+
result = result[0, result.size - 1]
|
21
|
+
end
|
22
|
+
return result
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
@@ -0,0 +1,254 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
class String
|
4
|
+
JAVA_ESCAPEJAVADOC_RE=/\*\\/
|
5
|
+
#write string as javadoc
|
6
|
+
#NOTE: source strings should not include javadoc comments open/close
|
7
|
+
# (javadoc comments open/closed are removed)
|
8
|
+
def java_writeJavadoc(res)
|
9
|
+
# replace escaped carriage return by true carriage return
|
10
|
+
# remove java comments (we are already inside a javadoc)
|
11
|
+
self.gsub(/\\r\\n/,"\n").gsub(/\*\//,'--').gsub(/\/\*/,'--').each { |line|
|
12
|
+
res.write(" * #{line}".tr("\n"," ").rstrip)
|
13
|
+
res.write("\n")
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
module Muml_Classifier
|
19
|
+
#write classifier javadoc comment.
|
20
|
+
def java_writeJavadoc
|
21
|
+
return unless context[:javadoc]
|
22
|
+
|
23
|
+
c=""
|
24
|
+
sep=""
|
25
|
+
uml_ownedComment.each { |comment|
|
26
|
+
c="#{c}#{sep}#{comment.uml_body_one}"
|
27
|
+
sep="\n"
|
28
|
+
}
|
29
|
+
mtk_protected(Mrdf_Resource::NOREVERSE,"javadoc",context[:hasGlobalReverse]||context[:hideJavadocReverseTag]) {
|
30
|
+
write(" /**\n");
|
31
|
+
c.java_writeJavadoc(self)
|
32
|
+
#Note: RSM exports adds an extraneous http://
|
33
|
+
#Note: TODO: This code is RSM 6 specific
|
34
|
+
%{@see <a href="#{context[:rsm6WebDocURI]}#{UriNamespace.instance.unalias(rdf_uri).gsub(/http:\/\/kb#/,"")}-content.html">UML documentation.</a>}.java_writeJavadoc(self) unless context[:rsm6WebDocURI].empty?
|
35
|
+
|
36
|
+
write(" */\n")
|
37
|
+
}
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
module Muml_Property
|
43
|
+
#returns a javadoc link suitable for @see and @link.
|
44
|
+
def java_javadocLink(location=nil)
|
45
|
+
o=umlx_owner_one
|
46
|
+
if location==o
|
47
|
+
#same class
|
48
|
+
return "##{java_Name}"
|
49
|
+
else
|
50
|
+
#different class
|
51
|
+
return "#{o.java_qualifiedName}##{java_Name}"
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
#write property javadoc comment.
|
57
|
+
def java_writeJavadoc
|
58
|
+
return unless context[:javadoc]
|
59
|
+
|
60
|
+
c=""
|
61
|
+
sep=""
|
62
|
+
uml_ownedComment.each { |comment|
|
63
|
+
c="#{c}#{sep}#{comment.uml_body_one}"
|
64
|
+
sep="\n"
|
65
|
+
}
|
66
|
+
mtk_protected(Mrdf_Resource::NOREVERSE,"javadoc",context[:hasGlobalReverse]||context[:hideJavadocReverseTag]) {
|
67
|
+
write(" /**\n");
|
68
|
+
c.java_writeJavadoc(self)
|
69
|
+
#Note: RSM exports adds an extraneous http://
|
70
|
+
#Note: TODO: This code is RSM 6 specific
|
71
|
+
%{@see <a href="#{context[:rsm6WebDocURI]}#{UriNamespace.instance.unalias(rdf_uri).gsub(/http:\/\/kb#/,"")}-content.html">UML documentation.</a>}.java_writeJavadoc(self) unless context[:rsm6WebDocURI].empty?
|
72
|
+
|
73
|
+
write(" */\n")
|
74
|
+
}
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
|
79
|
+
module Muml_Operation
|
80
|
+
#returns a javadoc link suitable for @see and @link.
|
81
|
+
def java_javadocLink(location=nil)
|
82
|
+
o=umlx_owner_one
|
83
|
+
if location==o
|
84
|
+
#same class
|
85
|
+
return "##{java_Name}"
|
86
|
+
else
|
87
|
+
#different class
|
88
|
+
return "#{o.java_qualifiedName}##{java_Name}"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
#write operation javadoc comment.
|
94
|
+
def java_writeJavadoc
|
95
|
+
return unless context[:javadoc]
|
96
|
+
mtk_protected(Mrdf_Resource::NOREVERSE,"javadoc",context[:hasGlobalReverse]||context[:hideJavadocReverseTag]) {
|
97
|
+
java_writeJavadoc_internal
|
98
|
+
}
|
99
|
+
end
|
100
|
+
|
101
|
+
#internal write javadoc
|
102
|
+
def java_writeJavadoc_internal
|
103
|
+
write(" /**\n");
|
104
|
+
hasDoc=false
|
105
|
+
|
106
|
+
# if !java_getter_property.empty? && !java_getter_property_one.uml_isDerived?
|
107
|
+
# "getter for property {@link #{java_getter_property_one.java_javadocLink}}".java_writeJavadoc(self)
|
108
|
+
# end
|
109
|
+
# if !java_setter_property.empty? && !java_setter_property_one.uml_isDerived?
|
110
|
+
# "setter for property {@link #{java_setter_property_one.java_javadocLink}}".java_writeJavadoc(self)
|
111
|
+
# end
|
112
|
+
|
113
|
+
p=java_getter_property_one0
|
114
|
+
if !p.nil?
|
115
|
+
oe=p.umlx_otherEnd
|
116
|
+
if !oe.nil? && oe.umlx_isNavigable?
|
117
|
+
g=oe.java_AttributeGlobalGetter_one0
|
118
|
+
if !g.nil?
|
119
|
+
"This property is part of a bi-navigable association {@link #{g.java_javadocLink(self)}}<br/>".java_writeJavadoc(self)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
|
125
|
+
if !uml_ownedComment.empty?
|
126
|
+
#write("* @return the \n");
|
127
|
+
uml_ownedComment.each { |comment|
|
128
|
+
hasDoc=true
|
129
|
+
comment.uml_body_one.java_writeJavadoc(self)
|
130
|
+
}
|
131
|
+
|
132
|
+
elsif !java_getter_property.empty?
|
133
|
+
java_getter_property_one.uml_ownedComment.each { |comment|
|
134
|
+
hasDoc=true
|
135
|
+
comment.uml_body_one.java_writeJavadoc(self)
|
136
|
+
}
|
137
|
+
else
|
138
|
+
#nop
|
139
|
+
end
|
140
|
+
#if(!hasDoc)
|
141
|
+
# "TODO: document this element in source UML model".java_writeJavadoc(self)
|
142
|
+
#end
|
143
|
+
|
144
|
+
uml_ownedParameter.each { |p|
|
145
|
+
c=""
|
146
|
+
p.uml_ownedComment.each { |comment|
|
147
|
+
c="#{c} #{comment.uml_body_one}"
|
148
|
+
}
|
149
|
+
c=" self-explanatory"
|
150
|
+
#next if c.empty? && p.uml_direction_one.isReturn?
|
151
|
+
"#{p.uml_direction_one.isReturn? ? %{@return} : %{@param}} #{p.java_Name unless p.uml_direction_one.isReturn?}#{c}".java_writeJavadoc(self)
|
152
|
+
}
|
153
|
+
|
154
|
+
if !java_setter_property.empty?
|
155
|
+
hasDoc=true
|
156
|
+
p=java_setter_property_one
|
157
|
+
if !p.java_AttributeGlobalGetter.empty?
|
158
|
+
"@see #{p.java_AttributeGlobalGetter_one.java_javadocLink}".java_writeJavadoc(self)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
write(" */\n")
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
module Muml_EnumerationLiteral
|
167
|
+
def java_writeJavadoc
|
168
|
+
return unless context[:javadoc]
|
169
|
+
c=""
|
170
|
+
uml_ownedComment.each { |comment|
|
171
|
+
c="#{c} #{comment.uml_body_one}"
|
172
|
+
}
|
173
|
+
mtk_protected(Mrdf_Resource::NOREVERSE,"javadoc",context[:hasGlobalReverse]||context[:hideJavadocReverseTag]) {
|
174
|
+
unless c.empty?
|
175
|
+
write(" /**\n");
|
176
|
+
c.java_writeJavadoc(self)
|
177
|
+
write(" */\n")
|
178
|
+
end
|
179
|
+
}
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
|
184
|
+
module Mrdf_Repository
|
185
|
+
|
186
|
+
#returns a hash of package sets for which a javadoc should be generated.
|
187
|
+
#hash key is the qualifiedName of the packages
|
188
|
+
#(several uml packages may have the same name in different UML models)
|
189
|
+
#
|
190
|
+
#A package is included if :
|
191
|
+
#* it contains a generated class/interface/enum
|
192
|
+
#* it contains a uml comment
|
193
|
+
def java_getUsedPackages
|
194
|
+
|
195
|
+
ps=Hash.new
|
196
|
+
uml_Class_all.each { |e|
|
197
|
+
p=e.umlx_owner_one
|
198
|
+
next unless p.kind_of?(Muml_Package)
|
199
|
+
next if p.umlx_isARootNamespace?
|
200
|
+
next if e.umlx_external?
|
201
|
+
pn=p.java_qualifiedName.to_s
|
202
|
+
s=ps[pn]
|
203
|
+
if s.nil?
|
204
|
+
s=Set.new
|
205
|
+
ps[pn]=s
|
206
|
+
end
|
207
|
+
s.add(p)
|
208
|
+
}
|
209
|
+
|
210
|
+
each { |k,p|
|
211
|
+
next unless p.kind_of?(Muml_Package)
|
212
|
+
next if p.kind_of?(Muml_Model)
|
213
|
+
next if p.uml_ownedComment.empty?
|
214
|
+
pn=p.java_qualifiedName.to_s
|
215
|
+
s=ps[pn]
|
216
|
+
if s.nil?
|
217
|
+
s=Set.new
|
218
|
+
ps[pn]=s
|
219
|
+
end
|
220
|
+
s.add(p)
|
221
|
+
}
|
222
|
+
return ps
|
223
|
+
end
|
224
|
+
|
225
|
+
#generates java documentation files (package-info.java) for
|
226
|
+
#packages directly containing elements (class, enum, interface)
|
227
|
+
#cf: http://java.sun.com/docs/books/jls/third_edition/html/packages.html
|
228
|
+
def java_generatePackageDoc
|
229
|
+
return unless context[:javadoc]
|
230
|
+
return unless context[:javadocForDir,false]
|
231
|
+
java_getUsedPackages.each { |packageName,packageSet|
|
232
|
+
fn=nil
|
233
|
+
packageSet.each { |package|
|
234
|
+
fn="#{package.java_FilePath}/#{package.java_Name}/package-info.java"
|
235
|
+
break
|
236
|
+
}
|
237
|
+
mtk_writeSession(fn) {
|
238
|
+
write("/**\n")
|
239
|
+
packageSet.each { |package|
|
240
|
+
package.uml_ownedComment.each { |comment|
|
241
|
+
comment.uml_body_one.java_writeJavadoc(self)
|
242
|
+
}
|
243
|
+
}
|
244
|
+
write("**/\n\n")
|
245
|
+
write("package #{packageName};\n")
|
246
|
+
}
|
247
|
+
}
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
|
254
|
+
|