# -------------------------------------------------------------------
# 
# T O R Q U E  C O N F I G U R A T I O N  F I L E
# 
# -------------------------------------------------------------------

# -------------------------------------------------------------------
# 
#  T U R B I N E  P R O J E C T
#
# -------------------------------------------------------------------
# This is the name of your Turbine project. Your generated sources
# will be named using the project name selected below. If your
# project=killerapp then you will have a generated:
#
# killerapp-schema.sql
#
# IMPORTANT!
# This means that your project schema MUST be named
# killerapp-schema.xml and it MUST be placed in the
# schema directory for Torque to work property.
#
# The object model sources generated are independent of
# the project name selected.
# -------------------------------------------------------------------

project=project

# -------------------------------------------------------------------
# 
#  T A R G E T  D A T A B A S E
#
# -------------------------------------------------------------------
# This is the target database, only considered when generating
# the SQL for your Turbine project. Your possible choices are
#
# db2
# hypersonic
# mysql
# oracle
# postgresql
# mssql
#
# Default: none
# -------------------------------------------------------------------

database=mysql

# -------------------------------------------------------------------
# 
#  O B J E C T  M O D E L  I N F O R M A T I O N
#
# -------------------------------------------------------------------
# These settings will allow you to customize the way your
# Peer-based object model is created.
# -------------------------------------------------------------------
# addSaveMethod=true, adds tracking code to determine how to save an
# object
# set objectModelType=complex to generate an om with collection
# support, (not tested - please help to debug)
# set addTimeStamp to false to not include time stamps in
# generated files
# -------------------------------------------------------------------

targetPackage=org.apache.turbine
addSaveMethod=true
addGetByNameMethod=true
complexObjectModel=true
basePrefix=Base
addTimeStamp=true

# -------------------------------------------------------------------
# 
#  D A T A B A S E  S E T T I N G S
#
# -------------------------------------------------------------------
# JDBC connection settings. This is used by the JDBCToXML task that
# will create an XML database schema from JDBC metadata. These
# settings are also used by the SQL Ant task to initialize your
# Turbine system with the generated SQL.
# -------------------------------------------------------------------

databaseUrl = jdbc:mysql://127.0.0.1/turbine
databaseDriver = org.gjt.mm.mysql.Driver
databaseUser = user
databasePassword = password
databaseHost = 127.0.0.1

# Tells JDBC task that javaName attribute for the tables and columns
# should be made same as SQL name.
sameJavaName=false

# -------------------------------------------------------------------
# You should NOT have to edit anything below here.
# -------------------------------------------------------------------

# -------------------------------------------------------------------
# 
#  C O N F I G U R A T I O N  D I R E C T O R Y
#
# -------------------------------------------------------------------
# This is the directory that Torque looks in the find
# its torque.props file.
#
# Default: none
# -------------------------------------------------------------------

configDir=./config

# -------------------------------------------------------------------
# 
#  T E M P L A T E  P A T H
#
# -------------------------------------------------------------------

templatePath = templates

# -------------------------------------------------------------------
# 
#  C O N T R O L  T E M P L A T E S
#
# -------------------------------------------------------------------

SQLControlTemplate = sql/base/Control.vm
OMControlTemplate = om/Control.vm
IntakeControlTemplate = intake/Control.vm
ServiceControlTemplate = service/Control.vm
idTableControlTemplate = sql/id-table/Control.vm
DataDTDControlTemplate = data/Control.vm
DataDumpControlTemplate = data/dump/Control.vm
DataSQLControlTemplate = sql/load/Control.vm

# -------------------------------------------------------------------
# 
#  O U T P U T  D I R E C T O R Y
#
# -------------------------------------------------------------------

outputDirectory=src

# -------------------------------------------------------------------
# 
#  S C H E M A  D I R E C T O R Y
#
# -------------------------------------------------------------------

schemaDirectory=schema
