biz.hammurapi.sqlc
Class StatementCompilerTask

java.lang.Object
  extended by Task
      extended by biz.hammurapi.sqlc.StatementCompilerTask

public class StatementCompilerTask
extends Task

Compiles SQL query to interface and engine classes using metadata obtained from the database.

SQLC uses BCEL and ANTLR for code generation. If you have hgcommons.jar, bcel-5.1.jar and antlr.jar in the system classpath or in Ant lib directory then SQLC task can be defined as
<taskdef name="sqlc" classname="biz.hammurapi.sqlc.StatementCompilerTask"/>
Otherwise jars which are not in the classpath shall be specified in task definition classpath. SQLC connects to the target database during generation, therefore database driver shall also be present in the classpath
<taskdef name="sqlc" classname="biz.hammurapi.sqlc.StatementCompilerTask">
<classpath>
<fileset dir="${tools}/bcel-5.1" includes="bcel-5.1.jar"/>
<fileset dir="${tools}/ANTLR" includes="antlr.jar"/>
<fileset dir="${tools}/hgcommons/java-1.4" includes="hgcommons.jar"/>
<fileset dir="${tools}/hsqldb/lib" includes="hsqldb.jar"/>
</classpath>
</taskdef>
Usage:
<sqlc 
script="src/biz/hammurapi/jsel/impl/Hypersonic.sql"
dir="sqlc_generated"
docDir="sqlcDoc"
package="biz.hammurapi.jsel.impl.sql"
masterEngine="Engine"
>
<query name="CompilationUnit" singleRow="yes">
SELECT * FROM COMPILATION_UNIT WHERE ID=?
</query>

<query name="CompilationUnitByStoreLevel">
SELECT * FROM COMPILATION_UNIT C
WHERE REPOSITORY=? AND C.STORE_LEVEL=? AND
EXISTS(SELECT * FROM COMPILATION_UNIT_SCAN S
WHERE S.COMPILATION_UNIT_ID=C.ID AND
S.REPOSITORY=C.REPOSITORY AND S.SCAN_ID=?)
</query>

<update name="DeleteCompilationUnit">
DELETE FROM COMPILATION_UNIT WHERE ID=?
</update>
</sqlc>

Version:
$Revision: 1.14 $
Author:
Pavel Vlasov

Constructor Summary
StatementCompilerTask()
           
 
Method Summary
 void addConfiguredDbStatements(DbStatementsEntry queries)
          Statements from the database.
 void addConfiguredInterface(InterfaceEntry entry)
          Interface which generated interfaces shall try to extend.
 void addConfiguredScript(ScriptEntry scriptEntry)
           
 void addConfiguredStatements(StatementsEntry queries)
          Statements xml file.
 void addConnection(biz.hammurapi.ant.ConnectionEntry ce)
          Database connection.
 void addQuery(QueryEntry query)
          Query to compile
 void addTable(TableEntry tableEntry)
          Table entry to generate statements from table metadata and then compile them.
 void addUpdate(UpdateEntry update)
          Query to compile
 biz.hammurapi.ant.ObjectEntry createGenerationPolicy()
          Generation policy.
 StatementCompilerTask createSqlc()
          Subtask.
 void execute()
           
protected  boolean isToBeGenerated(TableDescriptor td, TableEntry te)
           
 void setDir(java.io.File dir)
          Directory to output compiled classes
 void setDocDir(java.io.File docDir)
          Directory to output HTML documentation.
 void setEngineMethodsVisibility(java.lang.String engineMethodsVisibility)
          Visibility of engine methods.
 void setEngineVisibility(java.lang.String engineVisibility)
          Visibility of engine class.
 void setIndexName(java.lang.String indexName)
          Documentation index file name.
 void setInheritMetadata(boolean inheritMetadata)
          Use parent's metadata file if any.
 void setInterfaceImplVisibility(java.lang.String interfaceImplVisibility)
          Visibility of interface implementation classes.
 void setMasterEngine(java.lang.String masterEngineName)
          Class name for master engine.
 void setMetadata(java.io.File metadataFile)
          Metadata file
 void setNameMap(boolean useNameMap)
          If this attribute is true then: 1) All queries and updates generated for tables will have table and schema name enclosed into ${ and } e.g.
 void setNameMapFile(java.io.File nameMapFile)
          Reads name map from property file.
 void setPackage(java.lang.String packageName)
          Package for generated classes
 void setScript(java.io.File script)
          DDL script file.
 void setSmartBase(java.lang.String smartBase)
          Base class (fully qualified name) for generated smart implementations.
 void setUseSqlTypes(boolean useSqlTypes)
          If true then generated classes will use setObject(int, Object, int) method instead of setObject(int, Object) to set parameters of object type.
 void setXmlDoc(boolean xmlDoc)
          If true documentation will be generated in XML format for further styling.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StatementCompilerTask

public StatementCompilerTask()
Method Detail

setInheritMetadata

public void setInheritMetadata(boolean inheritMetadata)
Use parent's metadata file if any. Valid for nested tasks. Default is false.

Parameters:
inheritMetadata -

setEngineMethodsVisibility

public void setEngineMethodsVisibility(java.lang.String engineMethodsVisibility)
Visibility of engine methods. Valid values are "public" (default), "protected" and "" (empty string for default/package visibility).

Parameters:
engineMethodsVisibility -

setUseSqlTypes

public void setUseSqlTypes(boolean useSqlTypes)
If true then generated classes will use setObject(int, Object, int) method instead of setObject(int, Object) to set parameters of object type. Nested tasks inherit parent setting unless overriden.

Parameters:
useSqlTypes -

setMetadata

public void setMetadata(java.io.File metadataFile)
Metadata file

Parameters:
metadataFile -

setIndexName

public void setIndexName(java.lang.String indexName)
Documentation index file name. Defaults to 'index.xml' for XML output and 'index.html' for HTML output.

Parameters:
indexName -

setEngineVisibility

public void setEngineVisibility(java.lang.String engineVisibility)
Visibility of engine class. Valid values are "public" (default), and "" (empty string for default/package visibility).

Parameters:
engineVisibility -

setInterfaceImplVisibility

public void setInterfaceImplVisibility(java.lang.String interfaceImplVisibility)
Visibility of interface implementation classes. Valid values are "public" (default), and "" (empty string for default/package visibility).


createGenerationPolicy

public biz.hammurapi.ant.ObjectEntry createGenerationPolicy()
Generation policy. Must implement biz.hammurapi.sql.metadata.GenerationPolicy interface.

Returns:

setNameMap

public void setNameMap(boolean useNameMap)
If this attribute is true then: 1) All queries and updates generated for tables will have table and schema name enclosed into ${ and } e.g. ${BANK}.${ACCOUNT} 2) SQLProcessor used to obtain This attribute creates blank name map, if you need a prepopulated name map use

Parameters:
useNameMap -

setNameMapFile

public void setNameMapFile(java.io.File nameMapFile)
Reads name map from property file.


addConfiguredInterface

public void addConfiguredInterface(InterfaceEntry entry)
Interface which generated interfaces shall try to extend.

Parameters:
entry -

setXmlDoc

public void setXmlDoc(boolean xmlDoc)
If true documentation will be generated in XML format for further styling.


addConnection

public void addConnection(biz.hammurapi.ant.ConnectionEntry ce)
Database connection.

Parameters:
ce -

setScript

public void setScript(java.io.File script)
DDL script file. Statements shall be separated by semicolons. If this attribute is set then in-memory Hypersonic database is created, gets populated using script and query is compiled against this database. If neither connection nor script is specified the uninitialized Hypersonic in-memory database will be used. It can be useful if several sqlc tasks are executed in a row against the same database.

Parameters:
script -

addConfiguredScript

public void addConfiguredScript(ScriptEntry scriptEntry)

setDir

public void setDir(java.io.File dir)
Directory to output compiled classes

Parameters:
dir -

setPackage

public void setPackage(java.lang.String packageName)
Package for generated classes

Parameters:
packageName -

addQuery

public void addQuery(QueryEntry query)
Query to compile

Parameters:
query -

addUpdate

public void addUpdate(UpdateEntry update)
Query to compile

Parameters:
update -

addConfiguredStatements

public void addConfiguredStatements(StatementsEntry queries)
Statements xml file. Top element should be 'statements', containing 'query' and 'update' elements which have the same format as nested 'query' and 'update' elements.

Parameters:
queries -

addConfiguredDbStatements

public void addConfiguredDbStatements(DbStatementsEntry queries)
Statements from the database.

Parameters:
queries -

execute

public void execute()
             throws BuildException
Throws:
BuildException

createSqlc

public StatementCompilerTask createSqlc()
Subtask. Inherits output directory, documentation directory, database connection, skipIndices attribute, outputXml attribute and injected/generated interfaces from the parent task.

Returns:

setDocDir

public void setDocDir(java.io.File docDir)
Directory to output HTML documentation.

Parameters:
documentation -

setMasterEngine

public void setMasterEngine(java.lang.String masterEngineName)
Class name for master engine. Set this attribute if you want all engine methods be held in one class and avoid generation of an engine class per statement.

Parameters:
masterEngineName -

addTable

public void addTable(TableEntry tableEntry)
Table entry to generate statements from table metadata and then compile them.

Parameters:
generateForTables -

isToBeGenerated

protected boolean isToBeGenerated(TableDescriptor td,
                                  TableEntry te)
Returns:

setSmartBase

public void setSmartBase(java.lang.String smartBase)
Base class (fully qualified name) for generated smart implementations. Default is biz.hammurapi.sql.DatabaseObject The base class is supposed to have same constructors and methods as DatabaseObject. The idea is to subclass DatabaseObject to introduce additional qualities like audit, metrics, security, ... whithout changing class' contract. This setting is not inherited from the parent task.

Parameters:
smartBase - The smartBase to set.


Copyright © 2003 Hammurapi Group. All Rights Reserved.