KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openbravo > erpCommon > utility > JRFieldProviderDataSource


1 /*
2  *************************************************************************
3  * The contents of this file are subject to the Openbravo Public License
4  * Version 1.0 (the "License"), being the Mozilla Public License
5  * Version 1.1 with a permitted attribution clause; you may not use this
6  * file except in compliance with the License. You may obtain a copy of
7  * the License at http://www.openbravo.com/legal/license.html
8  * Software distributed under the License is distributed on an "AS IS"
9  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
10  * License for the specific language governing rights and limitations
11  * under the License.
12  * The Original Code is Openbravo ERP.
13  * The Initial Developer of the Original Code is Openbravo SL
14  * All portions are Copyright (C) 2007 Openbravo SL
15  * All Rights Reserved.
16  * Contributor(s): ______________________________________.
17  ************************************************************************
18 */

19 package org.openbravo.erpCommon.utility;
20
21 import java.awt.Image JavaDoc;
22 import java.io.BufferedReader JavaDoc;
23 import java.io.ByteArrayInputStream JavaDoc;
24 import java.io.ByteArrayOutputStream JavaDoc;
25 import java.io.CharArrayReader JavaDoc;
26 import java.io.CharArrayWriter JavaDoc;
27 import java.io.IOException JavaDoc;
28 import java.io.InputStream JavaDoc;
29 import java.io.Reader JavaDoc;
30 import java.sql.Blob JavaDoc;
31 import java.sql.Clob JavaDoc;
32 import java.sql.SQLException JavaDoc;
33 import java.sql.Types JavaDoc;
34 import java.util.*;
35 import java.math.*;
36 import java.text.SimpleDateFormat JavaDoc;
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 JavaDoc INDEXED_COLUMN_PREFIX = "COLUMN_";
49   private static final int INDEXED_COLUMN_PREFIX_LENGTH = INDEXED_COLUMN_PREFIX.length();
50   
51   /**
52    *
53    */

54   private FieldProvider[] fieldProvider = null;
55   private static String JavaDoc strDateFormat;
56   private int index =-1;
57   
58
59   /**
60    *
61    */

62   public JRFieldProviderDataSource(FieldProvider[] fp, String JavaDoc strDateFormat)
63   {
64     fieldProvider = fp;
65     this.strDateFormat = strDateFormat;
66   }
67
68
69   /**
70    *
71    */

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       //else throw new JRException("Unable to get the FieldProvider.");
83
}
84     
85     return hasNext;
86   }
87
88
89   /**
90    *
91    */

92   public Object JavaDoc getFieldValue(JRField field) throws JRException
93   {
94     Object JavaDoc objValue = null;
95
96     if (field != null && fieldProvider != null)
97     {
98       String JavaDoc value = fieldProvider[index].getField(field.getName());
99       System.out.println("************* value: " + field.getName());
100       Class JavaDoc clazz = field.getValueClass();
101       try
102       {
103         if (clazz.equals(java.lang.Boolean JavaDoc.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 JavaDoc.class))
110         {
111           if (value != null && !value.equals("")){
112           objValue = new Byte JavaDoc(value);
113           } else objValue = null;
114         }
115         else if (clazz.equals(java.util.Date JavaDoc.class))
116         {
117           if (value != null && !value.equals("")){
118           SimpleDateFormat JavaDoc dateFormat = new SimpleDateFormat JavaDoc(strDateFormat);
119           try {
120             objValue = dateFormat.parse(value);
121           } catch (Exception JavaDoc e) {
122             throw new JRException("Unable to parse the date", e);
123           }
124           } else objValue = null;
125         }
126 /* else if (clazz.equals(java.sql.Timestamp.class))
127         {
128           objValue = resultSet.getTimestamp(columnIndex.intValue());
129           if(resultSet.wasNull())
130           {
131             objValue = null;
132           }
133         }*/

134 /* else if (clazz.equals(java.sql.Time.class))
135         {
136           objValue = resultSet.getTime(columnIndex.intValue());
137           if(resultSet.wasNull())
138           {
139             objValue = null;
140           }
141         }*/

142         else if (clazz.equals(java.lang.Double JavaDoc.class))
143         {
144           if (value != null && !value.equals("")){
145           objValue = new Double JavaDoc(value);
146           } else {
147             objValue = null;
148           }
149         }
150         else if (clazz.equals(java.lang.Float JavaDoc.class))
151         {
152           if (value != null && !value.equals("")){
153           objValue = new Float JavaDoc(value);
154           } else {
155             objValue = null;
156           }
157         }
158         else if (clazz.equals(java.lang.Integer JavaDoc.class))
159         {
160           if (value != null && !value.equals("")){
161           objValue = new Integer JavaDoc(value);
162           } else {
163             objValue = null;
164           }
165         }
166 /* else if (clazz.equals(java.io.InputStream.class))
167         {
168           byte[] bytes = readBytes(columnIndex);
169           
170           if(bytes == null)
171           {
172             objValue = null;
173           }
174           else
175           {
176             objValue = new ByteArrayInputStream(bytes);
177           }
178         }*/

179 /* else if (clazz.equals(java.lang.Long.class))
180         {
181           objValue = new Long(resultSet.getLong(columnIndex.intValue()));
182           if(resultSet.wasNull())
183           {
184             objValue = null;
185           }
186         }*/

187 /* else if (clazz.equals(java.lang.Short.class))
188         {
189           objValue = new Short(resultSet.getShort(columnIndex.intValue()));
190           if(resultSet.wasNull())
191           {
192             objValue = null;
193           }
194         }*/

195         else if (clazz.equals(java.math.BigDecimal JavaDoc.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 JavaDoc.class))
202         {
203           if (value != null && !value.equals("")){
204           objValue = new String JavaDoc(value);
205           } else objValue = null;
206         }
207  /* else if (clazz.equals(Clob.class))
208         {
209           objValue = resultSet.getClob(columnIndex.intValue());
210           if(resultSet.wasNull())
211           {
212             objValue = null;
213           }
214         }*/

215  /* else if (clazz.equals(Reader.class))
216         {
217           Reader reader = null;
218           long size = -1;
219           
220           int columnType = resultSet.getMetaData().getColumnType(columnIndex.intValue());
221           switch (columnType)
222           {
223             case Types.CLOB:
224               Clob clob = resultSet.getClob(columnIndex.intValue());
225               if (!resultSet.wasNull())
226               {
227                 reader = clob.getCharacterStream();
228                 size = clob.length();
229               }
230               break;
231               
232             default:
233               reader = resultSet.getCharacterStream(columnIndex.intValue());
234               if (resultSet.wasNull())
235               {
236                 reader = null;
237               }
238           }
239           
240           if (reader == null)
241           {
242             objValue = null;
243           }
244           else
245           {
246             objValue = getArrayReader(reader, size);
247           }
248         }*/

249  /* else if (clazz.equals(Blob.class))
250         {
251           objValue = resultSet.getBlob(columnIndex.intValue());
252           if(resultSet.wasNull())
253           {
254             objValue = null;
255           }
256         }*/

257  /* else if (clazz.equals(Image.class))
258         {
259           byte[] bytes = readBytes(columnIndex);
260           
261           if(bytes == null)
262           {
263             objValue = null;
264           }
265           else
266           {
267             objValue = JRImageLoader.loadImage(bytes);
268           }
269         }*/

270         else
271         {
272           if (value != null && !value.equals("")){
273           objValue = new String JavaDoc(value);
274           } else objValue = null;
275         }
276       }
277       catch (Exception JavaDoc 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