[hibernate-commits] Hibernate SVN: r10546 - in trunk/HibernateExt/tools/src/templates: . dot
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Tue Oct 3 18:21:17 EDT 2006
Author: max.andersen at 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
More information about the hibernate-commits
mailing list