Wiki source code of EOModelDoc

Version 37.1 by Chuck Hill on 2008/08/01 14:17

Hide last authors
Chuck Hill 36.1 1 == Contents ==
2
3 [[||anchor="Overview"]]
4 [[||anchor="Future Plans"]]
5 [[||anchor="Download and Example Output"]]
6 [[||anchor="Usage"]]
7 [[||anchor="Running from Ant"]]
8 [[||anchor="Template Files"]]
9 [[||anchor="Alternate Templates"]]
10
David Holt 16.1 11 == Overview ==
12
Chuck Hill 18.1 13 EOModelDoc is a command line tool to generate HTML documentation of a set of EOModels. It is a replacement for [[EOReporter>>http://www.rubicode.com/Software/EOReporter/]] (which will not work on Leopard and newer releases of OS X). EOModelDoc was funded by the Apple iTunes Store and released to the community.
David Holt 16.1 14
Chuck Hill 18.1 15 On the WOLips side, from version 3.3.x, [[Entity Modeler>>Using Entity Modeler]] has a Documentation tab on all of the elements of a model that lets you record HTML documentation for your model, entities, attributes, etc. There is even an HTML preview. You can then run eomodeldoc to produce documentation much like javadoc for your model.
David Holt 16.1 16
17 == Future Plans ==
18
19 From Mike Schrag: //There's not a nice build process for this one either, yet, because it includes all of the eclipse dependencies in the single jar. Eventually I'll make this nicer and include it actually inside of Eclipse. There are also modifications to the ERNeutralLook coming soon that will display popup help for you models based on the model documentation.//
20
21 == Download and Example Output ==
22
Chuck Hill 18.1 23 [[Download EOModelDoc jar>>http://webobjects.mdimension.com/wolips/eomodeldoc.jar]]
Chuck Hill 32.1 24
25 This is an example of the current state of eomodeldoc (the default templates are not done, but it will give you an idea of what it can do). The templates are all Velocity-based, and you can override them with custom versions. This was run in the BugTracker project folder. This model does not have documentation added to it with the new Entity Modeler yet, so it looks a little more bare than it would if it was documented properly. I'll probably document it just to have a full example to show.
Chuck Hill 18.1 26 [[View Example Output>>http://webobjects.mdimension.com/wolips/eomodeldoc_example/]]
Chuck Hill 32.1 27
28 == Usage ==
29
Chuck Hill 34.1 30 The command line syntax of for EOModelDoc:
Chuck Hill 32.1 31
Chuck Hill 34.1 32 ##java --jar eomodeldoc.jar --output /path/to/output/folder -model /path/to/model.eomodeld]** -modelgroup /path/to/working/dir] -templates /path/to/templates] -entityURLTemplate "http:~/~/domain/path/to/JavaDocs/$entity.classNamePath.html**##
33
34 |=Parameter|=Usage / Function
35 |output|Path to the directory where the output HTML files will be written.
36 |model|Path to one model to generate documentation for. This parameter can be used multiple times, once for each model.
37 |modelgroup|The path to an Eclipse or IDEA project. All models listed in the project will be documented. This defaults to the current working directory.
38 |templates|Path to the directory where the Velocity templates are stored. See the [[||anchor="Template Files"]] section below for details on these templates. If this is not specified, the default templates inside the eomodeldoc.jar file will be used.
39 |entityURLTemplate|URL to the JavaDocs for the classes in the model. This is used to create links from the EOModel documentation to the JavaDoc documentation. The dots in the classpath are replaced with "/" when the path is generated.
40
41 === Notes ===
42
43 * Only ##-output## is required
44 * Usually only one of ##-modelGroup## or ##-model## is used (i.e. not both at the same time)
45 * The ##-templates## path only needs to point the the templates that you have changed. If any templates are not found on that path, the defaults from the jar are used.
46 * For ##-entityURLTemplate## the ##http:~/~/domain/path/to/JavaDocs/## the path to the index.html file that JavaDoc generates. It will be something like ##http:~/~/developer.apple.com/documentation/MacOSXServer/Reference/WO54_Reference/##
47
48 === Usage Examples ===
49
50 Document one model:
51
52 {{code}}
53
54 java -jar /path/to/eomodeldoc.jar -model /path/to/model.eomodeld -output /tmp/eomodeldoc
55
56 {{/code}}
57
Chuck Hill 32.1 58
Chuck Hill 34.1 59 Document all models based on the Eclipse or IDEA project definition:
Chuck Hill 32.1 60
Chuck Hill 34.1 61 {{code}}
62
63 java -jar /path/to/eomodeldoc.jar -modelgroup /path/to/project -output /tmp/eomodeldoc
64
65 {{/code}}
66
67 Document all models based on the Eclipse/IDEA project definition (when current working directory is the top level of the project):
68
69 {{code}}
70
71 java -jar /path/to/eomodeldoc.jar -output /tmp/eomodeldoc
72
73 {{/code}}
74
75 == Running from Ant ==
76
77 There is no Ant task (yet) for EOModelDoc. You can run it with an ##java## task following this pattern:
78
79 {{code value="xml"}}
80
81 <java jar="/path/to/eomodeldoc.jar"
82 fork="true"
83 maxmemory="256m">
84 <arg value="-output" />
85 <arg value="/path/to/output/folder" />
86 <arg value="-modelgroup" />
87 <arg value="/path/to/working/dir" />
88 <arg value="-templates" />
89 <arg value="/path/to/templates" />
90 <arg value="-entityURLTemplate" />
91 <arg value="http://whatever?$${entity.classNamePath}.html" />
92 </java>
93
94 {{/code}}
95
96 {{code value="xml"}}
97
98 <java jar="/path/to/eomodeldoc.jar"
99 fork="true"
100 maxmemory="256m">
101 <arg value="-output" />
102 <arg value="/path/to/output/folder" />
103 <arg value="-model" />
104 <arg value="/path/to/modelA.eomodeld" />
105 <arg value="-model" />
106 <arg value="/path/to/modelB.eomodeld" />
107 <arg value="-model" />
108 <arg value="/path/to/modelC.eomodeld" />
109 <arg value="-templates" />
110 <arg value="/path/to/templates" />
111 <arg value="-entityURLTemplate" />
112 <arg value="http://whatever?$${entity.classNamePath}.html" />
113 </java>
114
115 {{/code}}
116
117 If you include this in the build.xml file in the project, it can be as simple as:
118
119 {{code value="xml"}}
120
121 <java jar="/path/to/eomodeldoc.jar"
122 fork="true"
123 maxmemory="256m">
124 <arg value="-output" />
125 <arg value="Documentation" />
126 <arg value="-modelgroup" />
127 <arg value="." />
128 </java>
129
130 {{/code}}
131
132 == Template Files ==
133
134 Default templates are included in the eomodeldoc.jar file. You can extract these templates to use as a basis for your own templates with this command:
135
136 {{code}}
137
138 unzip /path/to/eomodeldoc.jar *.vm -x "*/*"
139
140 {{/code}}
141
142 See the [[EOGenerator template documentation>>EOGenerator Templates and Additions]] documentation for information on customizing these templates. The ##-templates## path only needs to point the the templates that you have changed. If any templates are not found on that path, the defaults from the jar are used.
143
144 The templates and their function are:
145
146 |=Template Name|=Usage / Function
147 |indexModels.html.vm|Left pane index of all models.
148 |indexOverview.html.vm|Left pane index of the contents of all models (e.g. list of entities and stored procedures).
149 |modelOverview.html.vm|Left pane index of the contents of one model (e.g. list of entities and stored procedures).
150 |indexContent.html.vm|Main frame description of each model and contents of each model (e.g. list of entities and stored procedures).
151 |modelContent.html.vm|Main frame contents of one model (list of entities and stored procedures).|
152 |entityContent.html.vm|Main frame contents for one Entity
153 |storedProcedureContent.html.vm|Main frame contents for one stored procedure.
154 |index.html.vm|Top level index.html file defining frameset. You probably won't need to modify this.
155 |prototype.js.vm|[[Prototype>>http://www.prototypejs.org/learn]] JavaScript file so that the generated documentation can use Ajax whizziness. You probably won't need to modify this.
156 |eomodeldoc.css.vm|CSS file that controls what the generate output looks like.
157 |eomodeldoc.js.vm|JavaScript file that cleans up the display. You probably won't need to modify this.
158
159 Some pictures will illustrate this:
160
161 ----
162
163 [[image:EOModelDocTemplates1.png||width="800"]]
164
165 ----
166
167 [[image:EOModelDocTemplates2.png||width="800"]]
168
169 ----
170
171 [[image:EOModelDocTemplates3.png||width="800"]]
172
173
174 ----
Chuck Hill 36.1 175
176 == Alternate Templates ==
177
178 Have some interesting templates to share? Add them as attachements and link them here.
179
180 === Template Mark I from Chuck ===
181
182 [[Download>>^ChuckHillTemplates.tgz]]
183
184 This is the default template with some useful (to me) changes:
185
186 * individual properties can be toggled open and closed
187 * non-class hidden by default
188 * less blank vertical space
189 * column name moved into details
190
191 ----
192
193 [[image:ChuckHillTemplate.png]]