1 19 package org.openbravo.erpCommon.utility; 20 21 import java.awt.Image ; 22 import java.io.BufferedReader ; 23 import java.io.ByteArrayInputStream ; 24 import java.io.ByteArrayOutputStream ; 25 import java.io.CharArrayReader ; 26 import java.io.CharArrayWriter ; 27 import java.io.IOException ; 28 import java.io.InputStream ; 29 import java.io.Reader ; 30 import java.sql.Blob ; 31 import java.sql.Clob ; 32 import java.sql.SQLException ; 33 import java.sql.Types ; 34 import java.util.*; 35 import java.math.*; 36 import java.text.SimpleDateFormat ; 37 import org.openbravo.data.FieldProvider; 38 39 import net.sf.jasperreports.engine.JRException; 40 import net.sf.jasperreports.engine.JRDataSource; 41 import net.sf.jasperreports.engine.util.JRImageLoader; 42 import net.sf.jasperreports.engine.JRField; 43 44 public class JRFieldProviderDataSource implements JRDataSource 45 { 46 47 48 private static final String INDEXED_COLUMN_PREFIX = "COLUMN_"; 49 private static final int INDEXED_COLUMN_PREFIX_LENGTH = INDEXED_COLUMN_PREFIX.length(); 50 51 54 private FieldProvider[] fieldProvider = null; 55 private static String strDateFormat; 56 private int index =-1; 57 58 59 62 public JRFieldProviderDataSource(FieldProvider[] fp, String strDateFormat) 63 { 64 fieldProvider = fp; 65 this.strDateFormat = strDateFormat; 66 } 67 68 69 72 public boolean next() throws JRException 73 { 74 boolean hasNext = false; 75 76 if (fieldProvider != null) 77 { 78 if (index < fieldProvider.length-1) { 79 index++; 80 hasNext = true; 81 } 82 } 84 85 return hasNext; 86 } 87 88 89 92 public Object getFieldValue(JRField field) throws JRException 93 { 94 Object objValue = null; 95 96 if (field != null && fieldProvider != null) 97 { 98 String value = fieldProvider[index].getField(field.getName()); 99 System.out.println("************* value: " + field.getName()); 100 Class clazz = field.getValueClass(); 101 try 102 { 103 if (clazz.equals(java.lang.Boolean .class)) 104 { 105 if (value != null && !value.equals("")){ 106 objValue = value.equals("Y") ? Boolean.TRUE : Boolean.FALSE; 107 } else objValue = null; 108 } 109 else if (clazz.equals(java.lang.Byte .class)) 110 { 111 if (value != null && !value.equals("")){ 112 objValue = new Byte (value); 113 } else objValue = null; 114 } 115 else if (clazz.equals(java.util.Date .class)) 116 { 117 if (value != null && !value.equals("")){ 118 SimpleDateFormat dateFormat = new SimpleDateFormat (strDateFormat); 119 try { 120 objValue = dateFormat.parse(value); 121 } catch (Exception e) { 122 throw new JRException("Unable to parse the date", e); 123 } 124 } else objValue = null; 125 } 126 134 142 else if (clazz.equals(java.lang.Double .class)) 143 { 144 if (value != null && !value.equals("")){ 145 objValue = new Double (value); 146 } else { 147 objValue = null; 148 } 149 } 150 else if (clazz.equals(java.lang.Float .class)) 151 { 152 if (value != null && !value.equals("")){ 153 objValue = new Float (value); 154 } else { 155 objValue = null; 156 } 157 } 158 else if (clazz.equals(java.lang.Integer .class)) 159 { 160 if (value != null && !value.equals("")){ 161 objValue = new Integer (value); 162 } else { 163 objValue = null; 164 } 165 } 166 179 187 195 else if (clazz.equals(java.math.BigDecimal .class)) 196 { 197 if (value != null && !value.equals("")){ 198 objValue = new BigDecimal(value); 199 } else objValue = null; 200 } 201 else if (clazz.equals(java.lang.String .class)) 202 { 203 if (value != null && !value.equals("")){ 204 objValue = new String (value); 205 } else objValue = null; 206 } 207 215 249 257 270 else 271 { 272 if (value != null && !value.equals("")){ 273 objValue = new String (value); 274 } else objValue = null; 275 } 276 } 277 catch (Exception e) 278 { 279 e.printStackTrace(); 280 throw new JRException("Unable to get value for field '" + field.getName() + "' of class '" + clazz.getName() + "' for value: " + value, e); 281 } 282 } 283 284 return objValue; 285 } 286 } 287 | Popular Tags |