Jump to content
We've recently updated our Privacy Statement, available here ×

bakebego

Members
  • Posts

    4
  • Joined

  • Last visited

 Content Type 

Profiles

Forum

Events

Featured Visualizations

Knowledge Base

Documentation (PDF Downloads)

Blog

Documentation (Test Area)

Documentation

Dr. Jaspersoft Webinar Series

Downloads

Everything posted by bakebego

  1. The Values I want to pass are the mean, the SD and the days to the report
  2. Hey good day, im having a hard time figuring out how to pass data from a custom JR Datasource to a chart, I got the data passed to the report however whenver I try to pass it to a chart it doesnt show anything. heres the code below for the datasource class: package MyDataAdapt; import java.sql.Date; import java.util.ArrayList; import java.util.HashMap; import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRField; public class GoImplementation implements JRDataSource { public GoImplementation() { // TODO Auto-generated constructor stub } /** * For this data adapter the informations are embedded in the code */ private static final Integer[] lotNum = {33301141,33301143 }; private static final Integer[] level= {1,3}; private static final double[] mean= {4.49,457.04}; private static final double[] SD= {0.30,22.58}; private static final double[] CV= {6.79,4.94}; private static final Integer[] N= {54,53}; private HashMap<String, String> capitalCities = new HashMap<String, String>(); private static final double[] mean2= {3.92,465.95}; private static final double[] SD2= {0.35,31.11}; private static final double[] CV2= {9.04,6.68}; private static final Integer[] N2= {333,340}; private static final String[] department = {"GENERAL"," "}; private static final String[] instruementArray = {"ARCHITECT cI4100-I1SR"," "}; private static final String[] test = {"Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL"," "}; private static final String[] method = {"NONE"," "}; private static final String[] reagentArray = {"ABBOTT"," "}; private static final String[] month = {"January, 2015"," "}; private static final String[] shift = {"All"," "}; private static final String[] qcProduct = {"MULTICHEM IA PLUS(05P76-10)"," "}; private static final Integer[] days = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30}; HashMap<String, Integer> lotp = new HashMap<String, Integer>(); HashMap<String, Double> meanp = new HashMap<String, Double>(); HashMap<String, Double> sdp= new HashMap<String, Double>(); HashMap<String,Integer> dayp = new HashMap<String, Integer>(); /** * Variable to store how much records were read */ private int counter = -1; /** * Variables to store the number of fields, and their names, in the report */ private HashMap<String, Integer> fieldsNumber = new HashMap<String, Integer>(); /** * Method used to know if there are records to read. */ private int lastFieldsAdded = 0; @Override public boolean next() throws JRException { if (counter<lotNum.length-1) { counter++; return true; } return false; } /** * This method is called for every field defined in the report. So if i have 2 fields it is called 2 times for every record, and * for each of them it must provide a value. * The parameter can be used to understand for which field is requested, in fact it contains the name of the requested field. This * data adapter is done with the goal of return two values, a name and an age. An easy option would be expect a field with the name * "Name" and one with name "Age". But we can do something more flexible, in this case we will enumerate all the fields requested and * and the first two will be assumed to be for name and age, for all the others will be returned an empty string. So we can have a report * with more than two fields, but the name and the age will be returned each time only for the first two. * * If this example is too much complex refer to the method getFieldValue2, where is shown the first explained, and simple solution, where we * expect two fields with a precise name. */ @Override public Object getFieldValue(JRField jrField) throws JRException { Integer fieldIndex; if (fieldsNumber.containsKey(jrField.getName())) { fieldIndex = fieldsNumber.get(jrField.getName()); System.out.println("WHat:"+fieldIndex); } else { fieldsNumber.put(jrField.getName(), lastFieldsAdded); fieldIndex = lastFieldsAdded; lastFieldsAdded ++; } if (fieldIndex == 0) return lotNum[counter]; else if (fieldIndex == 1) return level[counter]; else if (fieldIndex == 2) return mean[counter]; else if (fieldIndex == 3) return SD[counter]; else if (fieldIndex == 4) return CV[counter]; else if (fieldIndex == 5) return N[counter]; else if (fieldIndex == 6) return mean2[counter]; else if (fieldIndex == 7) return SD2[counter]; else if (fieldIndex == 8) return CV2[counter]; else if (fieldIndex == 9) return N2[counter]; else if (fieldIndex == 10) return department[0]; else if (fieldIndex == 11) return instruementArray[0]; else if (fieldIndex == 12) return test[0]; else if (fieldIndex == 13) return method[0]; else if (fieldIndex == 14) return reagentArray[0]; else if (fieldIndex == 15) return month[0]; else if (fieldIndex == 16) return shift[0]; else if (fieldIndex == 17) return qcProduct[0]; else if (fieldIndex == 18) return days; return ""; } /** * Example of a simpler getFieldValue, not actually used */ public Object getFieldValue2(JRField jrField) throws JRException { if (jrField.getName().equals("lotNum")) return lotNum[counter]; else if (jrField.getName().equals("level")) return level[counter]; lotp.put("lotnum",33301141); lotp.put("lotnum",33301141); meanp.put("Mean", 4.49); meanp.put("Mean",457.04); sdp.put("SD", 0.30); sdp.put("SD", 22.58); return ""; } /** * Return an instance of the class that implements the custom data adapter. */ public static JRDataSource getDataSource(){ return new GoImplementation(); } }
×
×
  • Create New...