📄 accountiteratorimpl.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 + -