1 /** 2 * 3 */ 4 package ar.com.jiji.kaya.reports; 5 6 import java.util.Iterator; 7 import java.util.List; 8 9 import net.sf.jasperreports.engine.JRDataSource; 10 import net.sf.jasperreports.engine.JRException; 11 import net.sf.jasperreports.engine.JRField; 12 13 /** 14 * copiado de http://www.hibernate.org/79.html * TODO: documentar y hacer tests 15 * 16 * @author unascribed 17 * 18 */ 19 public class HibernateQueryResultDataSource implements JRDataSource { 20 21 private String[] fields; 22 23 private Iterator iterator; 24 25 private Object currentValue; 26 27 public HibernateQueryResultDataSource(List list, String[] fields) { 28 this.fields = fields; 29 this.iterator = list.iterator(); 30 } 31 32 public Object getFieldValue(JRField field) throws JRException { 33 Object value = null; 34 int index = getFieldIndex(field.getName()); 35 if (index > -1) { 36 Object[] values = (Object[]) currentValue; 37 value = values[index]; 38 } 39 return value; 40 } 41 42 public boolean next() throws JRException { 43 currentValue = iterator.hasNext() ? iterator.next() : null; 44 return (currentValue != null); 45 } 46 47 private int getFieldIndex(String field) { 48 int index = -1; 49 for (int i = 0; i < fields.length; i++) { 50 if (fields[i].equals(field)) { 51 index = i; 52 break; 53 } 54 } 55 return index; 56 } 57 58 }