[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