...
- StaticConnectionProvider carries an user-provided connection object. The connection contained in the provider must be open and will be controlled by the data factory.
- DriverConnectionProvider: A JDBC-Driver implementation is used to create a connection to the database.
Code Examples:
Defining a SQL-DataSource in XML:
Code Block |
---|
<?xml version="1.0"?>
<!--
~ Copyright (c) 2006, Pentaho Corporation. All Rights Reserved.
-->
<sql-datasource
xmlns="http://jfreereport.sourceforge.net/namespaces/datasources/sql"
xmlns:html="http://www.w3.org/1999/xhtml">
<connection>
<driver>org.hsqldb.jdbcDriver</driver>
<url>jdbc:hsqldb:./sql/sampledata</url>
<properties>
<property name="user">sa</property>
<property name="pass"></property>
</properties>
</connection>
<!-- First query: get all regions .. -->
<query name="default">
SELECT DISTINCT
QUADRANT_ACTUALS.REGION
FROM
QUADRANT_ACTUALS
ORDER BY
REGION
</query>
<query name="actuals-by-region">
SELECT
QUADRANT_ACTUALS.REGION,
QUADRANT_ACTUALS.DEPARTMENT,
QUADRANT_ACTUALS.POSITIONTITLE,
QUADRANT_ACTUALS.ACTUAL,
QUADRANT_ACTUALS.BUDGET,
QUADRANT_ACTUALS.VARIANCE
FROM
QUADRANT_ACTUALS
WHERE
REGION = ${REGION}
ORDER BY
REGION, DEPARTMENT, POSITIONTITLE
</query>
</sql-datasource>
|
Parsing the file can be done using the common LibLoader code:
Code Block |
---|
JFreeReport report; // created elsewhere
Object sourceObject; // either a valid URL, File or String object
ResourceManager manager = new ResourceManager();
Resource resource = manager.createDirectly
(sourceObject, ReportDataFactory.class);
ReportDataFactory dataFactory = (ReportDataFactory) resource.getResource();
report.setDataFactory(dataFactory);
|
The SQLDataFactory can also be created using the API.
Code Block |
---|
DriverConnectionProvider provider = new DriverConnectionProvider();
provider.setDriver("your.database.jdbc.Driver");
provider.setProperty("user", "joe_user");
provider.setProperty("pass", "secret");
provider.setUrl("jdbc:yourdb://host/database");
SQLReportDataFactory dataFactory = new SQLReportDataFactory(provider);
dataFactory.setQuery("default",
"SELECT DISTINCT REGION FROM QUADRANT_ACTUALS");
dataFactory.setQuery("actuals-by-region",
"SELECT * FROM QUADRANT_ACTUALS WHERE REGION=${REGION}");
|
Table-Data-Factories
Functions and Expressions
...