Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package sk.seges.acris.reporting.server.datasource;
  
  import java.util.Iterator;
  
general data source class used for JavaBeanDataSources
list of CustomDataSource objects is used as net.sf.jasperreports.engine.JRParameter.REPORT_DATA_SOURCE in implementations of ReportDataSourceService, which are necessary imputs for JasperServer Bean DataSource

Parameters:
<T> usually a type of object which should be displayed as row in report
Author(s):
marta
 
 public class CustomDataSource<T> implements JRDataSource {
 
 	private Collection<T> rows;
 	private Iterator<T> iteratorOfRows;
 	private T actualRow;
 
 	public CustomDataSource() {}
 	
 	public CustomDataSource(Collection<T> rows) {
 		super();
 		init(rows);
 	}
 
 	public void init(Collection<T> rows) {
 		if (rows != null) {
 			this. = rows;
 		}
 	}
 
 	public Object getFieldValue(JRField jrFieldthrows JRException {
 		if ( == null)
 			return null;
 		Object value = null;
 		String fieldName = jrField.getName();
 		Class<T> clazz = (Class<T>) .getClass();
 		value = getFieldValueRecursive(clazzfieldName);
 		return value;
 	}
 
 	private Object getFieldValueRecursive(Class<?> clazzString fieldNamethrows JRException {
 		Object value = null;
 		Field[] fields = clazz.getDeclaredFields();
 		for (Field field : fields) {
 			if (field.getName().equals(fieldName)) {
 				try {
 					field.setAccessible(true);
 					value = field.get();
 				} catch (Exception e) {
 					throw new JRException(e);
 				}
 				return value;
 			}
 		}
 		if (clazz.getSuperclass() != null) {
 			return getFieldValueRecursive(clazz.getSuperclass(), fieldName);
 		}
 
 		return null;
 	}
 
 	public boolean next() throws JRException {
 		if ( == null) {
 			if ( != null)
 			else
 				return false;
 		}
 			return true;
 		}
 		//if it is at the end, we reset it to have it prepared for next time, but we return false, because end was achieved
 		if ( != null)
 		return false;
 	}
 
 	public Collection<T> getRows() {
 		return ;
 	}
 
	public void setRows(Collection<T> rows) {
		this. = rows;
	}
New to GrepCode? Check out our FAQ X