This is a simple template file loader that loads templates
from a DataSource instead of plain files.
It can be configured with a datasource name, a table name,
id column (name), content column (the template body) and a
datetime column (for last modification info).
Example configuration snippet for velocity.properties:
resource.loader = file, ds
ds.resource.loader.public.name = DataSource
ds.resource.loader.description = Velocity DataSource Resource Loader
ds.resource.loader.class = org.apache.velocity.runtime.resource.loader.DataSourceResourceLoader
ds.resource.loader.resource.datasource = java:comp/env/jdbc/Velocity
ds.resource.loader.resource.table = tb_velocity_template
ds.resource.loader.resource.keycolumn = id_template
ds.resource.loader.resource.templatecolumn = template_definition
ds.resource.loader.resource.timestampcolumn = template_timestamp
ds.resource.loader.cache = false
ds.resource.loader.modificationCheckInterval = 60
Example WEB-INF/web.xml:
Velocity template DataSource
jdbc/Velocity
javax.sql.DataSource
Container
and Tomcat 4 server.xml file:
[...]
[...]
driverClassName
org.hsql.jdbcDriver
driverName
jdbc:HypersonicSQL:database
user
database_username
password
database_password
[...]
[...]
Example sql script:
CREATE TABLE tb_velocity_template (
id_template varchar (40) NOT NULL ,
template_definition text (16) NOT NULL ,
template_timestamp datetime NOT NULL
)
closeDbConnection
private void closeDbConnection(Connection conn)
Closes connection to the datasource
openDbConnection
private Connection openDbConnection()
throws Exception
gets connection to the datasource specified through the configuration
parameters.
readData
private ResultSet readData(Connection conn,
String columnNames,
String templateName)
throws SQLException
Reads the data from the datasource. It simply does the following query :
SELECT columnNames FROM tableName WHERE keyColumn
= 'templateName'
where keyColumn is a class member set in init()
conn
- connection to datasourcecolumnNames
- columns to fetch from datasourcetemplateName
- name of template to fetch
readLastModified
private long readLastModified(Resource resource,
String i_operation)
Fetches the last modification time of the resource
resource
- Resource object we are finding timestamp ofi_operation
- string for logging, indicating caller's intention