Author: max.andersen(a)jboss.com
Date: 2006-10-03 18:21:15 -0400 (Tue, 03 Oct 2006)
New Revision: 10546
Added:
trunk/HibernateExt/tools/src/templates/dot/
trunk/HibernateExt/tools/src/templates/dot/entitygraph.dot.ftl
trunk/HibernateExt/tools/src/templates/dot/tablegraph.dot.ftl
Log:
HBX-772 create templates for generating dot fiels for entity and table layout
Added: trunk/HibernateExt/tools/src/templates/dot/entitygraph.dot.ftl
===================================================================
--- trunk/HibernateExt/tools/src/templates/dot/entitygraph.dot.ftl 2006-10-03 22:17:22 UTC
(rev 10545)
+++ trunk/HibernateExt/tools/src/templates/dot/entitygraph.dot.ftl 2006-10-03 22:21:15 UTC
(rev 10546)
@@ -0,0 +1,75 @@
+digraph EntityGraph {
+ compound=true;
+ bgcolor="white";
+ fontcolor="black"; fontname="Helvetica";
fontsize="10.0";
+ ranksep="equally";
+ label="Entity Graph";
+ URL="http://tools.hibernate.org";
+ edge [
+ color="lightgrey",
+ fontcolor="black",
+ fontname="Helvetica",
+ fontsize="8.0",
+ labelangle=-25.0,
+ labeldistance=1.5
+ ];
+ node [
+ fontcolor="black",
+ fontname="Helvetica",
+ fontsize="10.0",
+ shape=record,
+ fillcolor="#D4E5FE",
+ style="solid,filled"];
+
+<#foreach entity in cfg.classMappings>
+ /* Node ${entity.entityName} */
+ <@nodeName entity.entityName/> [ label = "<@propertyLabels
name=entity.entityName properties=entity.propertyIterator/>" ]
+ /* Subclass edges for ${entity.entityName} */
+ <#foreach subclass in entity.getDirectSubclasses()>
+ <@nodeName subclass.entityName/> -> <@nodeName entity.entityName/> [
weight="10", arrowhead="onormal" ]
+ </#foreach>
+
+ <@propertyEdges root=entity.entityName?replace(".","_dot_")
properties=entity.propertyIterator/>
+</#foreach>
+
+}
+
+<#macro nodeName
name>${name?replace(".","_dot_")}</#macro>
+
+<#macro propertyLabels name properties>
+<@compress single_line=true>
+ {
+ ${name?replace(".","\\.")}|
+ <#foreach p in properties>
+ <#if p.value.isSimpleValue()>
+ ${p.name}\l
+ </#if>
+ </#foreach>
+ }</@compress></#macro>
+
+<#macro dumpComponent compProperty>
+ <#assign component=compProperty.value>
+ /* Node component ${component} */
+ ${c2h.getHibernateTypeName(compProperty)?replace(".","_dot_")}
[
+ label = "<@propertyLabels name=component.componentClassName
properties=component.propertyIterator/>"
+ ]
+ <@propertyEdges
root=component.componentClassName?replace(".","_dot_")
properties=component.propertyIterator/>
+</#macro>
+
+<#macro propertyEdges root properties>
+ /* Property edges/nodes for ${root} */
+ <#foreach property in properties>
+ <#if c2h.getHibernateTypeName(property)?exists>
+ ${root} ->
${c2h.getHibernateTypeName(property)?replace(".","_dot_")} [
+ label="${property.name}"
+ <#if c2j.isComponent(property)>
+ arrowtail="diamond"
+ </#if>
+ ]
+ </#if>
+ <#if c2j.isComponent(property)>
+ <@dumpComponent property/>
+ </#if>
+
+ </#foreach>
+</#macro>
\ No newline at end of file
Added: trunk/HibernateExt/tools/src/templates/dot/tablegraph.dot.ftl
===================================================================
--- trunk/HibernateExt/tools/src/templates/dot/tablegraph.dot.ftl 2006-10-03 22:17:22 UTC
(rev 10545)
+++ trunk/HibernateExt/tools/src/templates/dot/tablegraph.dot.ftl 2006-10-03 22:21:15 UTC
(rev 10546)
@@ -0,0 +1,57 @@
+digraph TableGraph {
+ compound=true;
+ bgcolor="white";
+ fontcolor="black"; fontname="Helvetica";
fontsize="10.0";
+ ranksep="equally";
+ label="Table Graph";
+ URL="http://tools.hibernate.org";
+ edge [
+ color="lightgrey",
+ fontcolor="black",
+ fontname="Helvetica",
+ fontsize="8.0",
+ labelangle=-25.0,
+ labeldistance=1.5
+ headport=nw,
+ tailport=se
+ ];
+ node [
+ fontcolor="black",
+ fontname="Helvetica",
+ fontsize="10.0",
+ shape=record,
+ fillcolor="yellow",
+ style="solid,filled"];
+
+/* TODO: multi schema tables */
+<#foreach table in cfg.getTableMappings()>
+ <#if table.isPhysicalTable()>
+ /* Node ${table.name} */
+ <@nodeName table/> [ label = "<@columnLabels name=table.name
columns=table.columnIterator/>" ]
+
+ <@propertyEdges root=table.name?replace(".","_dot_")
foreignKeys=table.foreignKeyIterator/>
+ </#if>
+</#foreach>
+
+}
+
+<#macro nodeName
table>${table.name?replace(".","_dot_")}</#macro>
+
+<#macro columnLabels name columns>
+<@compress single_line=true>
+ {
+ ${name?replace(".","\\.")}|
+ <#foreach p in columns>
+ <${p.name}>${p.name}\l
+ <#if p_has_next>|</#if>
+ </#foreach>
+ }</@compress></#macro>
+
+<#macro propertyEdges root foreignKeys>
+ /* edges/nodes for ${root} */
+ <#foreach fk in foreignKeys>
+ ${root} -> <@nodeName fk.referencedTable/> [
+ label="${fk.name}"
+ ]
+ </#foreach>
+</#macro>
\ No newline at end of file
Show replies by date