org.apache.velocity.runtime.resource.loader
Class DataSourceResourceLoader
public
class
DataSourceResourceLoader
extends ResourceLoader
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
)
Version: $Id: DataSourceResourceLoader.java,v 1.8.8.1 2004/03/03 23:23:02 geirm Exp $
Author: David Kinnvall Paulo Gaspar Sylwester Lachiewicz
private InitialContext ctx
private DataSource dataSource
private String dataSourceName
private String keyColumn
private String tableName
private String templateColumn
private String timestampColumn
private void closeDbConnection(Connection conn)
Closes connection to the datasource
public long getLastModified(
Resource resource)
public InputStream getResourceStream(String name)
Get an InputStream so that the Runtime can build a
template with it.
Parameters: name name of template
Returns: InputStream containing template
public void init(ExtendedProperties configuration)
public boolean isSourceModified(
Resource resource)
private Connection openDbConnection()
gets connection to the datasource specified through the configuration
parameters.
Returns: connection
private ResultSet readData(Connection conn, String columnNames, String templateName)
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()
Parameters: conn connection to datasource columnNames columns to fetch from datasource templateName name of template to fetch
Returns: result set from query
private long readLastModified(
Resource resource, String i_operation)
Fetches the last modification time of the resource
Parameters: resource Resource object we are finding timestamp of i_operation string for logging, indicating caller's intention
Returns: timestamp as long
Copyright B) 2002 Apache Software Foundation. All Rights Reserved.