Jump to content

custom data source in iReport


2006 IR Open Dicussion

Recommended Posts

By: Angelos Yannopoulos - a_yannopoulos

custom data source in iReport

2006-01-03 04:07

Dear Forum,

 

I am trying to use a "custom data source" in iReport; I need iReport to

automatically find which fields are available to the report from the

datasource class; my factory and datasource classes are quoted below.

 

Under Datasource menu, Connections / Datasources menu item, I register a

Custom JRDataSource with Factory class angFactory and satic get method

getTheDataSource. Clicking on Test produces "Connection test

successful!", BUT then (and with this datasource set as the active

connection in the Build menu) under Datasource menu, Report query menu

item, I go to the Use DataSource Provider tab and click the Get fields

from datasource button: instead of getting the fields in

CustomDataSource, i just get an error message: "the active connection is

not a JasperReports DataSource provider".

 

Any hints as to what I might be doing wrong?

 

Thanks!!!

 

Agelos

 

 

//////////////////// angFactory.java

////////////////////////////////////////////////////////////

import net.sf.jasperreports.engine.JRDataSource;

 

public class angFactory{

 

public static JRDataSource getTheDataSource() {

return (JRDataSource)(new CustomDataSource());

};

}

//////////////////// end angFactory.java

////////////////////////////////////////////////////////////

 

 

 

//////////////////// CustomDataSource.java (copied from the datasource

example in JasperReports)

////////////////////////////////////////////////////////////

import net.sf.jasperreports.engine.JRDataSource;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JRField;

 

public class CustomDataSource implements JRDataSource

{

private Object[][] data =

{

{"Berne", new Integer(22), "Bill Ott", "250 - 20th Ave."},

{"Berne", new Integer(9), "James Schneider", "277 Seventh Av."},

{"Boston", new Integer(32), "Michael Ott", "339 College Av."},

{"Boston", new Integer(23), "Julia Heiniger", "358 College

Av."},

{"Chicago", new Integer(39), "Mary Karsen", "202 College Av."},

{"Chicago", new Integer(35), "George Karsen", "412 College

Av."},

{"Chicago", new Integer(11), "Julia White", "412 Upland Pl."},

{"Dallas", new Integer(47), "Janet Fuller", "445 Upland Pl."},

{"Dallas", new Integer(43), "Susanne Smith", "2 Upland Pl."},

{"Dallas", new Integer(40), "Susanne Miller", "440 - 20th

Ave."},

{"Dallas", new Integer(36), "John Steel", "276 Upland Pl."},

{"Dallas", new Integer(37), "Michael Clancy", "19 Seventh Av."},

{"Dallas", new Integer(19), "Susanne Heiniger", "86 - 20th

Ave."},

{"Dallas", new Integer(10), "Anne Fuller", "135 Upland Pl."},

{"Dallas", new Integer(4), "Sylvia Ringer", "365 College Av."},

{"Dallas", new Integer(0), "Laura Steel", "429 Seventh Av."},

{"Lyon", new Integer(38), "Andrew Heiniger", "347 College Av."},

{"Lyon", new Integer(28), "Susanne White", "74 - 20th Ave."},

{"Lyon", new Integer(17), "Laura Ott", "443 Seventh Av."},

{"Lyon", new Integer(2), "Anne Miller", "20 Upland Pl."},

{"New York", new Integer(46), "Andrew May", "172 Seventh Av."},

{"New York", new Integer(44), "Sylvia Ott", "361 College Av."},

{"New York", new Integer(41), "Bill King", "546 College Av."},

{"Oslo", new Integer(45), "Janet May", "396 Seventh Av."},

{"Oslo", new Integer(42), "Robert Ott", "503 Seventh Av."},

{"Paris", new Integer(25), "Sylvia Steel", "269 College Av."},

{"Paris", new Integer(18), "Sylvia Fuller", "158 - 20th Ave."},

{"Paris", new Integer(5), "Laura Miller", "294 Seventh Av."},

{"San Francisco", new Integer(48), "Robert White", "549

Seventh Av."},

{"San Francisco", new Integer(7), "James Peterson", "231

Upland Pl."}

};

 

private int index = -1;

 

public CustomDataSource()

{

}

 

public boolean next() throws JRException

{

index++;

 

return (index < data.length);

}

 

public Object getFieldValue(JRField field) throws JRException

{

Object value = null;

 

String fieldName = field.getName();

 

if ("the_city".equals(fieldName))

{

value = data[index][0];

}

else if ("id".equals(fieldName))

{

value = data[index][1];

}

else if ("name".equals(fieldName))

{

value = data[index][2];

}

else if ("street".equals(fieldName))

{

value = data[index][3];

}

 

return value;

}

}

//////////////////// end CustomDataSource.java

////////////////////////////////////////////////////////////

 

 

 

 

By: Jason Lycklama - jlycklama

RE: custom data source in iReport

2006-01-03 16:01

Field names are not supported JRDataSource class but rather by the JRDataSourceProvider class. Also to use this class the type of connection must be set to JRDataSourceProvider

 

 

 

 

By: Angelos Yannopoulos - a_yannopoulos

RE: custom data source in iReport

2006-01-04 07:44

Thanx!

Link to comment
Share on other sites

  • Replies 0
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Popular Days

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...