Customization

Customization of HTML report

You can customize the HTML report by making your Velocity template file. Register your template file at the workbench preference dialog.

The preference page of HTML generator

The default template included AmaterasERD is below:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>$msg.get("title")</title></head>
<style type="text/css">
th {
  background-color: #DDDDDD;
  border: 1px solid black;
}

td {
  border: 1px solid black;
}
</style>
<body>
#foreach($table in $model.children)
<a name="$util.escapeHTML($table.tableName)" />
<table width="100%">
  <tr>
    <th width="20%">$msg.get("table.logicalName")</th>
    <td>$util.escapeHTML2($table.logicalName)</td>
  </tr>
  <tr>
    <th>$msg.get("table.physicalName")</th>
    <td>$util.escapeHTML2($table.tableName)</td>
  </tr>
  <tr>
    <th>$msg.get("table.description")</th>
    <td>$util.escapeHTML2($table.description)</td>
  </tr>
</table>
<table width="100%">
  <tr>
    <th width="3%">$msg.get("column.rownum")</th>
    <th width="3%">$msg.get("column.primaryKey")</th>
    <th width="14%">$msg.get("column.logicalName")</th>
    <th width="14%">$msg.get("column.physicalName")</th>
    <th width="10%">$msg.get("column.type")</th>
    <th width="5%">$msg.get("column.size")</th>
    <th width="3%">$msg.get("column.null")</th>
    <th width="3%">$msg.get("column.defaultValue")</th>
    <th width="18%">$msg.get("column.foreignKey")</th>
    <th width="30%">$msg.get("column.description")</th>
  </tr>
  #foreach($column in $table.columns)
  <tr>
    <td align="right">$velocityCount</td>
    <td align="center">
    #if($column.primaryKey == true)
      true
    #else
       
    #end
    </td>
    <td>$util.escapeHTML2($column.logicalName)</td>
    <td>$util.escapeHTML2($column.columnName)</td>
    <td>$util.escapeHTML2($column.columnType.name)</td>
    <td align="right">$column.size</td>
    <td align="center">
    #if($column.notNull == true)
      false
    #else
      true
    #end
    </td>
    <td>$util.escapeHTML2($column.defaultValue)</td>
    <td>
    #foreach($conn in $table.modelSourceConnections)
      #foreach($mapping in $conn.mapping)
        #if($mapping.refer == $column)
          <a href="#$util.escapeHTML($conn.target.tableName)">${util.escapeHTML($conn.target.tableName)}.${util.escapeHTML($mapping.target.columnName)}</a>
        #end
      #end
    #end
     
    </td>
    <td>
    #if($column.autoIncrement == true)
      AUTO INCREMENT<br>
    #end
    #if($column.description!="")
      $util.escapeHTML($column.description)
    #elseif($column.autoIncrement == false)
       
    #end
    </td>
  </tr>
  #end
</table>
<br>
#end
</body>
</html>

Adding new dialect

You can add supportted database through the extension point net.java.amateras.db.dialects.AbstractDialect. AmaterasERD supports HSQLDB, Apache Derby, MySQL, PostgreSQL and Oracle in default. See the plugin.xml of AmaterasERD.

<extension
      point="net.java.amateras.db.dialects">
   <dialect
         class="net.java.amateras.db.view.dialect.HsqldbDialect"
         name="hsqldb"/>
   <dialect
         class="net.java.amateras.db.view.dialect.DerbyDialect"
         name="Derby"/>
   <dialect
         class="net.java.amateras.db.view.dialect.MySQLDialect"
         name="MySQL"/>
   <dialect
         class="net.java.amateras.db.view.dialect.PostgreSQLDialect"
         name="PostgreSQL"/>
   <dialect
         class="net.java.amateras.db.view.dialect.OracleDialect"
         name="Oracle"/>
</extension>

Specified dialect classes must extends net.java.amateras.db.view.dialect.AbstractDialect.

Adding new generator

AmaterasERD can generate DDL and HTML report from diagram models. You can add other generator through the extension point net.java.amateras.db.generators.

<extension
      point="net.java.amateras.db.generators">
   <generator
         class="net.java.amateras.db.visual.generate.DDLGenerater">
   </generator>
   <generator
         class="net.java.amateras.db.visual.generate.HTMLGenerator">
   </generator>
</extension>

Specified generator classes must implement net.java.amateras.db.visual.generate.IGenerator.