⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jrlistdatasource.java

📁 一个基于Java的新闻发布系统
💻 JAVA
字号:
package com.hope.itissue.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 + -