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

📄 accountiteratorimpl.java

📁 基于corba的资源池,实现了实例池供客户端调用,并且实例池对实例的分配采用策略模式支持随即抽取,最近使用和循环抽取三个不同策略.(在visibroke下面开发的)
💻 JAVA
字号:
 package interfaceImpl;

import database.DatabaseAccess;
import java.sql.*;
import java.util.*;
//import java.lang.*;

import Bank.AccountInfo;

/**
 * @author XuYing
 *
 */
public class AccountIteratorImpl extends Bank.AccountIteratorPOA
{
	int nowPage;
	private int itemCount = 50;
    private DatabaseAccess dbAccess;
    String DatabaseSource ="jdbc:odbc:BankingDataSource";
    ArrayList pageList = new ArrayList();
    //AccountInfo[] al = new AccountInfo[itemCount]; 
    int resultSize = 0;

	public AccountIteratorImpl() {
		super();
		this.dbAccess = new DatabaseAccess(DatabaseSource);
	}
	
	public ArrayList saveItem(String sql){
		try{
			ResultSet rs = dbAccess.query(sql);
			//int resultSize = 0;
			while(rs.next()){
				resultSize++;
			}
			if(resultSize == 0){
				return null;
			}
			System.out.println(resultSize);
			rs = dbAccess.query(sql);
			
			if(resultSize%itemCount == 0){			//得到的结果数目正好可以整除每页显示数目
				for(int i=0; i<=(resultSize/itemCount);i++){
					AccountInfo[] al = new AccountInfo[itemCount];
					for(int j=0; j<itemCount; j++){
						if(rs.next()){
							AccountInfo record = new AccountInfo();  
							record.id = rs.getString("id");
							record.name = rs.getString("name");
							record.balance = rs.getFloat("balance");
							//System.out.println(record.id);
							al[j] = record;
						}else break;
					}
					pageList.add(al);
				}
			}else if(resultSize/itemCount == 0){	//得到的结果不足一页
				int i=0;
				AccountInfo[] al = new AccountInfo[resultSize];
				while(rs.next()){
					AccountInfo record = new AccountInfo();  
					record.id = rs.getString("id");
					record.name = rs.getString("name");
					record.balance = rs.getFloat("balance");
					al[i] = record;
					i++;
				}
				pageList.add(al);

			}else{									//得到的结果超过一页,超过显示项目数
				for(int i=0; i<=(resultSize/itemCount);i++){
					AccountInfo[] al;
					if(i == (resultSize/itemCount)){
						al = new AccountInfo[resultSize%itemCount];
					}else{
						al = new AccountInfo[itemCount];
					}
					for(int j=0; j<itemCount; j++){
						if(rs.next()){
							AccountInfo record = new AccountInfo();  
							record.id = rs.getString("id");
							record.name = rs.getString("name");
							record.balance = rs.getFloat("balance");
							//System.out.println(record.id + "where!");
							al[j] = record;
						}else break;
					}
					pageList.add(al);
				}
			}
		}catch(SQLException e){
			System.out.println("数据库连接出错!");
			e.printStackTrace();
		}
		
		return pageList;
	}
	
	//判断迭代器中向后是否还有数据
	public boolean hasNext(){
		return nowPage<pageList.size();
	}
	
	//判断迭代器中向前是否还有数据
	public boolean hasPre(){
		return (nowPage !=1);
	}
	
	//返回下一组数据
	public AccountInfo[] next(String sql){
		
		if(pageList.isEmpty()){
			pageList = saveItem(sql);
			if(pageList == null){
				AccountInfo accNull = new AccountInfo();
				accNull.id = "null";
				accNull.name = "";
				accNull.balance = 0;
				AccountInfo[] accInfoNull = new AccountInfo[1];
				accInfoNull[0] = accNull;
				return accInfoNull;
			}
		}
		
		if(hasNext()){
			AccountInfo[] aa = (AccountInfo[])pageList.get(nowPage++); 
			return aa;
		}
		return null;
	}
	
	//返回上一组数据
	public AccountInfo[] pre(){
		if(hasPre()){
			return (AccountInfo[])pageList.get(--nowPage);
		}
		return null;
	}
	
	public AccountInfo[] returnFirstPage(){
		return (AccountInfo[])pageList.get(0);
	}
	
	public AccountInfo[] returnLastPage(){
		return (AccountInfo[])pageList.get((pageList.size()-2));
	}
	
	public int getNowPage() {
		return nowPage;
	}
	
	public int getTotalPage() {
		if(resultSize%itemCount == 0){
			return (resultSize/itemCount);
		}else if(resultSize/itemCount == 0){
			return 1;
		}else{
			return (resultSize/itemCount+1);
		}
	}
	
	public void clean(){
		nowPage = 0;
	    pageList = new ArrayList();
	    resultSize = 0;
		
	}

	public void setNowPage(int nowPage) {
		this.nowPage = nowPage;
	}



}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -