1 package de.laures.cewolf.dp;
3 import java.io.Serializable;
4 import java.sql.Connection;
5 import java.sql.ResultSet;
8 import javax.naming.Context;
9 import javax.naming.InitialContext;
10 import javax.naming.NamingException;
11 import javax.sql.DataSource;
13 import org.jfree.data.xy.XYSeries;
15 import de.laures.cewolf.DatasetProduceException;
20 * To change this generated comment edit the template variable "typecomment":
21 * Window>Preferences>Java>Templates.
22 * To enable and disable the creation of type comments go to
23 * Window>Preferences>Java>Code Generation.
25 public class DataSourceXYSeries implements Serializable {
27 private String dataSourceName;
29 private String xCol = "x";
30 private String yCol = "y";
31 private String seriesName = "name";
34 * Constructor for DataSourceXYSeries.
36 public DataSourceXYSeries(String dataSourceName, String query) {
37 this.dataSourceName = dataSourceName;
41 protected DataSource getDataSource() throws NamingException {
42 Context initCtx = new InitialContext();
43 Context envCtx = (Context) initCtx.lookup("java:comp/env");
44 return (DataSource) envCtx.lookup(dataSourceName);
48 * @see de.laures.cewolf.DatasetProducer#produceDataset(Map)
50 public XYSeries produceXYSeries() throws DatasetProduceException {
51 XYSeries series = new XYSeries(seriesName);
53 DataSource ds = getDataSource();
54 Connection con = ds.getConnection();
55 ResultSet rs = con.createStatement().executeQuery(query);
56 int xColIndex = rs.findColumn(xCol);
57 int yColIndex = rs.findColumn(yCol);
59 series.add((Number)rs.getObject(xColIndex), (Number)rs.getObject(yColIndex));
61 } catch (Exception namingEx) {
62 namingEx.printStackTrace();
63 throw new DatasetProduceException(namingEx.getMessage());