📄 jrlistdatasource.java~1~
字号:
package com.hope.speedway.shared;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;
import java.util.*;
import java.sql.*;
import java.io.*;
import java.math.BigDecimal;
//实现数据不足一页时填充空白表格,需要传入ResultSet 对象和每页能显示的最大记录条数。
public class JRListDataSource
implements JRDataSource {
private Map currentRecord = null;
private Collection records = null;
private Iterator iterator = null;
private ResultSet rs = null;
// private int pageCount = 0;
private int pageSize = 0;
public JRListDataSource(ResultSet rs, int pageSize) {
this.rs = rs;
this.pageSize = pageSize;
records = this.rsToCollection();
if (records != null) {
iterator = records.iterator();
}
}
private Collection rsToCollection() {
Collection col = new ArrayList();
Object objValue = null;
if (rs == null) {
for (int i = 0; i < pageSize; i++) {
HashMap ahm = new HashMap();
ahm.put("", "");
col.add(ahm);
}
return col;
}
try {
while (rs.next()) {
Map hm = new HashMap();
ResultSetMetaData rsmd = rs.getMetaData();
int colnum = rsmd.getColumnCount();
for (int i = 1; i <= colnum; i++) {
String colValue = rs.getString(i);
String colName = rsmd.getColumnName(i);
hm.put(colName, colValue);
}
col.add(hm);
}
int colSize = col.size();
if (col.size() < pageSize) {
for (int j = 0; j < (pageSize - colSize); j++) {
HashMap h = new HashMap();
h.put("", "");
col.add(h);
}
}
else {
if ( (colSize % pageSize) != 0) {
for (int i = 0; i < pageSize - (colSize % pageSize); i++) {
HashMap tmp = new HashMap();
tmp.put("", "");
col.add(tmp);
}
}
}
}
catch (SQLException se) {
for (int i = 0; i < pageSize; i++) {
HashMap tmphm = new HashMap();
tmphm.put("", "");
col.add(tmphm);
}
return col;
}
return col;
}
public boolean next() throws net.sf.jasperreports.engine.JRException {
boolean hasNext = false;
if (iterator != null) {
hasNext = iterator.hasNext();
if (hasNext) {
currentRecord = (Map) iterator.next();
}
}
return hasNext;
}
public Object getFieldValue(JRField field) throws net.sf.jasperreports.engine.
JRException {
Object value = null;
Object v = null;
if (currentRecord != null) {
if (field != null) {
v = currentRecord.get(field.getName());
Class clazz = field.getValueClass();
try {
if (clazz.equals(java.lang.Object.class)) {
value = v;
}
else if (clazz.equals(java.lang.Boolean.class)) {
if ( (v != null) && (!v.equals(""))) {
// to do later
}
}
else if (clazz.equals(java.lang.Byte.class)) {
if ( (v != null) && (!v.equals(""))) {
value = new Byte(Byte.parseByte(String.valueOf(v)));
}
}
else if (clazz.equals(java.util.Date.class)) {
if ( (v != null) && (!v.equals(""))) {
value = v;
}
}
else if (clazz.equals(java.sql.Timestamp.class)) {
if ( (v != null) && (!v.equals(""))) {
value = v;
}
}
else if (clazz.equals(java.sql.Time.class)) {
if ( (v != null) && (!v.equals(""))) {
value = v;
}
}
else if (clazz.equals(java.lang.Double.class)) {
if ( (v != null) && (!v.equals(""))) {
value = new Double(Double.parseDouble(String.valueOf(v)));
}
else {
value = new Double(0);
}
}
else if (clazz.equals(java.lang.Float.class)) {
if ( (v != null) && (!v.equals(""))) {
value = new Float(Float.parseFloat(String.valueOf(v)));
}
else {
value = new Float(0);
}
}
else if (clazz.equals(java.lang.Integer.class)) {
if ( (v != null) && (!v.equals(""))) {
value = new Integer(Integer.parseInt(String.valueOf(v)));
}
else {
value = new Integer(0);
}
}
else if (clazz.equals(java.io.InputStream.class)) {
if ( (v != null) && (!v.equals(""))) {
value = v;
}
else {
InputStream is = (InputStream) value;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] bytes = new byte[1000];
int ln = 0;
try {
while ( (ln = is.read(bytes)) > 0) {
baos.write(bytes, 0, ln);
}
baos.flush();
}
finally {
try {
baos.close();
}
catch (IOException e) {
}
}
value = new ByteArrayInputStream(baos.toByteArray());
}
}
else if (clazz.equals(java.lang.Long.class)) {
if ( (v != null) && (!v.equals(""))) {
value = new Long(Long.parseLong(String.valueOf(v)));
}
else {
value = new Long(0);
}
}
else if (clazz.equals(java.lang.Short.class)) {
if ( (v != null) && (!v.equals(""))) {
value = new Short(Short.parseShort(String.valueOf(v)));
}
else {
value = new Short("0");
}
}
else if (clazz.equals(java.math.BigDecimal.class)) {
if ( (v != null) && (!v.equals(""))) {
value = (String.valueOf(v));
}
else {
value = BigDecimal.valueOf(0);
}
}
else if (clazz.equals(java.lang.String.class)) {
if ( (v != null) && (!v.equals(""))) {
value = v;
}
}
}
catch (Exception e) {
throw new JRException("Unable to get value for field '" +
field.getName() +
"' of class '" + clazz.getName() + "'", e);
}
}
}
return value;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -