org.apache.velocity.runtime.resource.loader
Class DataSourceResourceLoader
java.lang.Object
|
+--org.apache.velocity.runtime.resource.loader.ResourceLoader
|
+--org.apache.velocity.runtime.resource.loader.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 2002/02/10 18:46:58 geirm Exp $
- Author:
- David Kinnvall, Paulo Gaspar, Sylwester Lachiewicz
Method Summary |
private void |
closeDbConnection(java.sql.Connection conn)
Closes connection to the datasource |
long |
getLastModified(Resource resource)
Get the last modified time of the InputStream source
that was used to create the template. |
java.io.InputStream |
getResourceStream(java.lang.String name)
Get an InputStream so that the Runtime can build a
template with it. |
void |
init(org.apache.commons.collections.ExtendedProperties configuration)
Initialize the template loader with a
a resources class. |
boolean |
isSourceModified(Resource resource)
Given a template, check to see if the source of InputStream
has been modified. |
private java.sql.Connection |
openDbConnection()
gets connection to the datasource specified through the configuration
parameters. |
private java.sql.ResultSet |
readData(java.sql.Connection conn,
java.lang.String columnNames,
java.lang.String templateName)
Reads the data from the datasource. |
private long |
readLastModified(Resource resource,
java.lang.String i_operation)
Fetches the last modification time of the resource |
Methods inherited from class java.lang.Object |
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait |
dataSourceName
private java.lang.String dataSourceName
tableName
private java.lang.String tableName
keyColumn
private java.lang.String keyColumn
templateColumn
private java.lang.String templateColumn
timestampColumn
private java.lang.String timestampColumn
ctx
private javax.naming.InitialContext ctx
dataSource
private javax.sql.DataSource dataSource
DataSourceResourceLoader
public DataSourceResourceLoader()
init
public void init(org.apache.commons.collections.ExtendedProperties configuration)
- Description copied from class:
ResourceLoader
- Initialize the template loader with a
a resources class.
- Overrides:
init
in class ResourceLoader
isSourceModified
public boolean isSourceModified(Resource resource)
- Description copied from class:
ResourceLoader
- Given a template, check to see if the source of InputStream
has been modified.
- Overrides:
isSourceModified
in class ResourceLoader
getLastModified
public long getLastModified(Resource resource)
- Description copied from class:
ResourceLoader
- Get the last modified time of the InputStream source
that was used to create the template. We need the template
here because we have to extract the name of the template
in order to locate the InputStream source.
- Overrides:
getLastModified
in class ResourceLoader
getResourceStream
public java.io.InputStream getResourceStream(java.lang.String name)
throws ResourceNotFoundException
- Get an InputStream so that the Runtime can build a
template with it.
- Overrides:
getResourceStream
in class ResourceLoader
- Parameters:
name
- name of template- Returns:
- InputStream containing template
readLastModified
private long readLastModified(Resource resource,
java.lang.String i_operation)
- Fetches the last modification time of the resource
- Parameters:
resource
- Resource object we are finding timestamp ofi_operation
- string for logging, indicating caller's intention- Returns:
- timestamp as long
openDbConnection
private java.sql.Connection openDbConnection()
throws java.lang.Exception
- gets connection to the datasource specified through the configuration
parameters.
- Returns:
- connection
closeDbConnection
private void closeDbConnection(java.sql.Connection conn)
- Closes connection to the datasource
readData
private java.sql.ResultSet readData(java.sql.Connection conn,
java.lang.String columnNames,
java.lang.String templateName)
throws java.sql.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()
- Parameters:
conn
- connection to datasourcecolumnNames
- columns to fetch from datasourcetemplateName
- name of template to fetch- Returns:
- result set from query
Copyright © 2003 Apache Software Foundation. All Rights Reserved.