NC65 分页 工具类

分页数据查询类:

package nc.vo.pubapp.bill.pagination.util;

import nc.impl.pubapp.pattern.database.DataAccessUtils;
import nc.ui.querytemplate.querytree.IQueryScheme;
import nc.vo.pubapp.pattern.data.IRowSet;
import nc.vo.pubapp.query2.sql.process.QuerySchemeProcessor;
import nc.vo.pubapp.query2.sql.process.QuerySchemeUtils;

public class PageDataQueryUtils {
    
    
  public static String[] queryAllPksByQueryScheme(IQueryScheme queryScheme) {
    
    
    StringBuffer sql = new StringBuffer();
    QuerySchemeProcessor processor = new QuerySchemeProcessor(queryScheme);
    String mainAlias = processor.getMainTableAlias();
    String keyColumn =
        QuerySchemeUtils.getMainBean(queryScheme).getTable()
            .getPrimaryKeyName();
    sql.append(" select distinct ");
    sql.append(mainAlias);
    sql.append(".");
    sql.append(keyColumn);
    sql.append(processor.getFinalFromWhere());
    DataAccessUtils dao = new DataAccessUtils();
    IRowSet rowset = dao.query(sql.toString());
    String[] keys = rowset.toOneDimensionStringArray();
    return keys;
  }
}

分页工具类:

package nc.vo.pubapp.bill.pagination.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import nc.vo.pubapp.pattern.model.entity.bill.IBill;
import nc.vo.pubapp.pattern.pub.Constructor;

public class PaginationUtils {
    
    
  public static <T extends IBill> T[] filterNotExistBills(T[] bills,
      String[] pks) {
    
    
    if (bills == null || bills.length == 0) {
    
    
      return bills;
    }
    Map<String, T> billMap = PaginationUtils.wrappBillMap(bills);
    List<T> retBills = new ArrayList<T>();
    for (String id : pks) {
    
    
      if (billMap.containsKey(id) && billMap.get(id) != null) {
    
    
        retBills.add(billMap.get(id));
      }
      else {
    
    
        retBills.add(null);
      }
    }
    return (T[]) retBills
        .toArray(Constructor.construct(bills[0].getClass(), 0));
  }

  public static List<String> getFistPageNeedQryList(String[] objectPks,
      int pageSize) {
    
    
    return PaginationUtils.getNeedQryList(objectPks, 0, pageSize);
  }

  public static List<String> getNeedQryList(String[] objectPks, int pageIndex,
      int pageSize) {
    
    
    List<String> needQryPks = new ArrayList<String>();
    int upperIndex =
        PaginationUtils.getUpperIndex(objectPks, pageIndex, pageSize);
    for (int i = pageIndex * pageSize; i <= upperIndex; i++) {
    
    
      String pk = objectPks[i];
      needQryPks.add(pk);
    }

    return needQryPks;
  }

  public static <T extends IBill> Map<String, T> wrappBillMap(T[] bills) {
    
    
    Map<String, T> billMap = new HashMap<String, T>();
    for (T bill : bills) {
    
    
      billMap.put(bill.getPrimaryKey(), bill);
    }
    return billMap;
  }

  private static int getUpperIndex(String[] objectPks, int pageIndex,
      int pageSize) {
    
    
    int upperIndex =
        (pageIndex + 1) * pageSize - 1 > objectPks.length - 1 ? objectPks.length - 1
            : (pageIndex + 1) * pageSize - 1;
    return upperIndex;
  }
}

猜你喜欢

转载自blog.csdn.net/u010741112/article/details/129982504