亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? paginghelper.java

?? 一個JAVA分頁解決方案
?? JAVA
字號:
package com.ctic.core.pub.ui.support;

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

import javax.swing.DefaultListModel;

import com.ctic.core.pub.client.BaseClient;
import com.ctic.core.pub.common.ModuleIDs;
import com.ctic.core.pub.common.PagingUtils;
import com.ctic.core.pub.common.UserException;
import com.ctic.core.pub.ui.CExtList;
import com.ctic.core.pub.ui.CExtTable;
import com.ctic.core.pub.ui.PagingComponent.IPagingViewer;
import com.ctic.core.pub.ui.PagingComponent.IPagingWorker;
import com.ctic.core.pub.ui.table.SimpleTable;
import com.ctic.core.pub.ui.table.SimpleTableModel;

/**
 * 方便分頁控件使用的助手類
 * 
 * @author Tu_Minglei
 */
public class PagingHelper {
	private static final boolean debug = true;
	
	/**
	 * 為目標對象(控件或Model)創建<code>IPaginationViewer</code>實現,翻頁結果將自動顯示在目標對象中<br>
	 * <ul>當前支持的控件有:
	 * <li>CExtTable
	 * <li>CExtList
	 * </ul>
	 * <ul>當前支持的Model有:
	 * <li>CExtTableModel
	 * <li>DefaultListModel
	 * </ul>
	 * (注:1、SimpleTable和SimpleTableModel暫時支持不了;2、對其他控件或Model的支持可以按需添加)
	 * @param targetObject
	 * @return
	 */
	public static IPagingViewer createPagingViewerFor(Object targetObject){
		if(targetObject == null) throw new IllegalArgumentException("targetObject is NULL!");
		return new DefaultPaginationViewer(targetObject);
	}
	
	/**
	 * 用傳入記錄列表及(默認)每頁記錄數創建<code>IPagination</code>
	 * @param records
	 * @return
	 */
	public static IPagingWorker createPagingWorkerFor(List records){
		return new SimplePagingWorkerImpl(records);
	}
	
	/**
	 * 用傳入的準備好的方法及參數創建<code>IPagination</code>
	 * @param targetMethod
	 * @param paramObjects
	 * @return
	 * @throws UserException 
	 */
	public static IPagingWorker createPagingWorkerFor(int moduleId, String serviceId, String methodName,
			Class[] paramTypes, Object[] paramObjects) throws UserException {
		return new MethodPagingWorkerImpl(moduleId, serviceId, methodName, paramTypes)
					.setUserParamObjects(paramObjects);
	}
	
	/**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
	 * 						接口及內部類
	 **++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
	/**
	 * 通過傳入列表數據執行所需功能的<code>IPagingWorker</code>的簡單實現
	 * 
	 * @author Tu_Minglei
	 */
	static class SimplePagingWorkerImpl implements IPagingWorker {
		private List	records;
		
		public SimplePagingWorkerImpl(List records){
			this.records = records;
		}
		
		public int getTatalRecordCount() {
			return (records == null) ? 0 : records.size();
		}

		public List getRecords(int startRowNo, int count) {
			if((startRowNo <= 0) || (startRowNo > getTatalRecordCount()) || records == null) return null;
			return records.subList((startRowNo-1), Math.min(((startRowNo-1) + count), getTatalRecordCount()));
		}
		
	}
	
	/**
	 * 通過傳入方法、參數等執行所需功能的<code>IPagingWorker</code>實現
	 * 
	 * @author Tu_Minglei
	 */
	static class MethodPagingWorkerImpl implements IPagingWorker {
		private GeneralUserServiceAgent userAgent;
		private Map<String,Object> userRequestMap;
		
		private int 	cacheCapacity = 1000;
		
		private int		totalRecordCount;
		private	List	cachedRecords;
		private int 	firstRecordNo;
		
		public MethodPagingWorkerImpl(int moduleId, String serviceId, String methodName, Class[] paramTypes){
			this.userAgent = new GeneralUserServiceAgent(moduleId, serviceId, methodName, paramTypes);
			userRequestMap = new HashMap<String, Object>();
			userRequestMap.put("userModuleId", moduleId);
			userRequestMap.put("userServiceId", serviceId);
			userRequestMap.put("userMethodName", methodName);
			userRequestMap.put("userParamTypes", paramTypes);
		}
		
		public MethodPagingWorkerImpl setCacheCapacity(int cacheCapacity){
			this.cacheCapacity = cacheCapacity;
			return this;
		}
		
		public MethodPagingWorkerImpl setUserParamObjects(Object[] paramObjects) throws UserException {
			userRequestMap.put("userParamObjects", paramObjects);
			totalRecordCount = PagingServiceAgent.getInstance().executeForCount(userRequestMap);
			return this;
		}
		
		public List getRecords(int startRowNo, int count) {
			if((startRowNo <= 0) || (startRowNo > getTatalRecordCount())) return null;
			try {
				adjustCachedRecords(startRowNo, count);
				return cachedRecords.subList((startRowNo - firstRecordNo), 
						Math.min(((startRowNo - firstRecordNo) + count), cachedRecords.size()));
			} catch (Exception e) {
				return null;
			}
		}

		public int getTatalRecordCount() {
			return totalRecordCount;
		}
		
		private void adjustCachedRecords(int startRowNo, int count) {
			int cachedCount = (cachedRecords == null) ? 0 : cachedRecords.size();
			
			if((firstRecordNo < startRowNo) && (startRowNo + count < firstRecordNo + cachedCount)) {
				// 所需記錄范圍已在當前緩存記錄范圍內,無需調整
				return;
			}
			
			if(startRowNo < firstRecordNo) //需要向前滑動緩存范圍窗口
				firstRecordNo = Math.max(1, (firstRecordNo - cacheCapacity / 2));
			if(startRowNo + count > firstRecordNo + cachedCount) // 需要向后滑動緩存范圍窗口
				firstRecordNo = Math.min(startRowNo, (firstRecordNo + cacheCapacity / 2));
			
			// 把最新的分頁信息存入用戶參數對象中
			if(userRequestMap.get("userParamObjects") != null){
				for(Object obj : (Object[])userRequestMap.get("userParamObjects")){
					if(PagingUtils.canSupportPaging(obj)){
						PagingUtils.setSkipResults(obj, firstRecordNo - 1);
						PagingUtils.setMaxResults(obj, cacheCapacity);
						break;
					}
				}
			}
			cachedRecords = (List)userAgent.execute((Object[])userRequestMap.get("userParamObjects"));
			if(cachedRecords == null) cachedRecords = new ArrayList();
		}
	}
	
	/**
	 * Assistant class for MethodPagingWorkerImpl
	 * @author Tu_Minglei
	 */
	static class GeneralUserServiceAgent extends BaseClient {
		private String 	userServiceId;
		private String 	userMethodName;
		private Class[] userParamTypes;

		public GeneralUserServiceAgent(int moduleId, String serviceId, String methodName, Class[] paramTypes) {
			super(moduleId);
			this.userServiceId= serviceId;
			this.userMethodName=methodName;
			this.userParamTypes=paramTypes;
		}
		
		public Object execute(Object[] userParamObjects) {
			try {
				return super.invokeServer(userServiceId, userMethodName, userParamObjects, userParamTypes);
			} catch (UserException e) {
				return null;
			}
		}		
	}
	
	/**
	 * Assistant class for MethodPagingWorkerImpl
	 * @author Tu_Minglei
	 */
	static class PagingServiceAgent extends BaseClient {
		private static PagingServiceAgent instance;
		
		public PagingServiceAgent(){
			super(ModuleIDs.MODULE_PROD);
		}
		
		public static PagingServiceAgent getInstance(){
			if(instance == null) instance = new PagingServiceAgent();
			return instance;
		}
		
		public int executeForCount(Map<String,Object> userRequestMap) throws UserException{
			return (Integer)super.invokeServer("pagingService", "getTotalRecordCount",
					new Object[] { userRequestMap }, new Class[] { Map.class });
		}
	}
	
	/**
	 * <code>IPaginationViewer</code>的默認實現,可以把翻頁結果自動顯示在目標對象中
	 * <ul>當前支持的控件有:
	 * <li>CExtTable
	 * <li>CExtList
	 * </ul>
	 * <ul>當前支持的Model有:
	 * <li>CExtTableModel
	 * <li>DefaultListModel
	 * </ul>
	 * (注:1、SimpleTable和SimpleTableModel暫時支持不了;2、對其他控件或Model的支持可以按需添加)
	 * 
	 * @author Tu_Minglei
	 */
	static class DefaultPaginationViewer implements IPagingViewer {
		private Object targetObject;
		
		public DefaultPaginationViewer(Object targetObject){
			if(!canSupport(targetObject)) 
				throw new IllegalArgumentException("Unsupported object: "+targetObject.getClass().getName());
			this.targetObject = targetObject;
		}

		public void showRecords(List records) {
			if(targetObject instanceof CExtTable){
				((CExtTable)targetObject).removeAllRowBeans();
				((CExtTable)targetObject).addRowBeans(records);
				return;
			}
			if(targetObject instanceof CExtList){
				((CExtList)targetObject).removeAllElements();
				((CExtList)targetObject).addElements(records);
				return;
			}
			
			if(targetObject instanceof CExtTableModel){
				((CExtTableModel)targetObject).removeAllRowBeans();
				((CExtTableModel)targetObject).addRowBeans(records);
				return;
			}
			if(targetObject instanceof DefaultListModel){
				((DefaultListModel)targetObject).removeAllElements();
				if(records != null){
					for(Object record : records){
						((DefaultListModel)targetObject).addElement(record);
					}
				}
			}
			
//			if(targetObject instanceof SimpleTable){
//				((SimpleTable)targetObject).setObjects(new Object[0], Object.class);
//				if(records != null){
//					((SimpleTable)targetObject).setObjects(records.toArray(), records.get(0).getClass());
//				}
//			}
		}
		
		private boolean canSupport(Object targetObject){
			if(targetObject instanceof CExtTable) return true;
			if(targetObject instanceof CExtList) return true;
			if(targetObject instanceof CExtTableModel) return true;
			if(targetObject instanceof DefaultListModel) return true;
			
//			if(targetObject instanceof SimpleTable) return true;
//			if(targetObject instanceof SimpleTableModel) return true;
			
			return false;
		}
	}
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
3d成人动漫网站| 欧美电影一区二区三区| 欧美性受极品xxxx喷水| 日韩一区二区在线看片| 亚洲免费视频成人| 国产成人综合亚洲网站| 在线观看视频一区二区欧美日韩| 精品黑人一区二区三区久久| 一区二区视频在线| 国产精品综合一区二区| 成人蜜臀av电影| 亚洲精品一区二区三区福利| 婷婷综合五月天| 欧美性色综合网| 亚洲丝袜另类动漫二区| 国产成人在线视频网站| 久久日一线二线三线suv| 亚洲不卡av一区二区三区| 国产成人综合亚洲网站| 成人免费视频网站在线观看| 日韩欧美资源站| 亚洲成人精品在线观看| 美女视频第一区二区三区免费观看网站 | 久久日韩粉嫩一区二区三区| 蜜臀av一区二区在线观看| 欧美日韩一区三区四区| 亚洲综合清纯丝袜自拍| 国产成人在线电影| 国产亚洲一区二区三区在线观看 | 在线免费观看视频一区| 中文字幕在线不卡| 国产91露脸合集magnet| 久久奇米777| 国产精品资源网| 欧美极品xxx| 亚洲综合在线视频| 9人人澡人人爽人人精品| 国产精品不卡在线| 色哟哟一区二区在线观看| 艳妇臀荡乳欲伦亚洲一区| 色视频一区二区| 亚洲国产视频直播| 欧美一区二区三区的| 韩日av一区二区| 国产人成一区二区三区影院| 一本大道久久a久久综合婷婷| 一区二区三区波多野结衣在线观看| 风间由美一区二区av101| 亚洲欧洲成人av每日更新| 91蜜桃在线观看| 亚洲大片在线观看| 欧美精品久久天天躁| 激情综合一区二区三区| 欧美日韩国产综合视频在线观看| 日韩综合小视频| 日本中文字幕一区二区有限公司| 欧美一区二区精品在线| 奇米影视在线99精品| 欧美成人女星排名| 国产乱人伦偷精品视频不卡 | 欧美aaaaaa午夜精品| 欧美刺激脚交jootjob| 五月天激情小说综合| 欧美一区二区三级| 一区二区不卡在线视频 午夜欧美不卡在| 在线亚洲一区观看| 狂野欧美性猛交blacked| 欧美激情综合五月色丁香| 欧美丝袜自拍制服另类| 奇米色777欧美一区二区| 精品免费日韩av| 99精品久久久久久| 午夜久久久影院| 国产午夜亚洲精品不卡| 欧美日韩高清不卡| 国产激情一区二区三区桃花岛亚洲| 国产精品视频免费看| 91精品国产全国免费观看| 国产成人精品亚洲午夜麻豆| 亚洲综合偷拍欧美一区色| 欧美成人一区二区| 在线观看不卡视频| 国产成人av电影在线播放| 日本伊人色综合网| 亚洲乱码国产乱码精品精98午夜| 国产精品久久久久天堂| 在线播放一区二区三区| 91小视频在线免费看| 久久99国产精品免费| 亚洲一区影音先锋| 亚洲欧洲日产国产综合网| 欧美tickling网站挠脚心| 欧美日韩国产小视频在线观看| 成人福利视频在线| 国产又黄又大久久| 亚洲三级电影网站| 欧美一区二区三区在| 欧美三级电影网站| 国产成人自拍网| 黑人巨大精品欧美一区| 日本不卡高清视频| 日韩成人一区二区三区在线观看| 亚洲精品视频观看| 亚洲人成网站精品片在线观看| 国产亚洲一本大道中文在线| 久久视频一区二区| 久久先锋资源网| 蜜臀av一区二区在线观看| 免费观看久久久4p| 青娱乐精品在线视频| 日本在线不卡视频一二三区| 日日夜夜精品免费视频| 青青草91视频| 久久超碰97中文字幕| 理论片日本一区| 老司机午夜精品99久久| 激情亚洲综合在线| 国产精品中文字幕日韩精品| 91亚洲精华国产精华精华液| 国产乱妇无码大片在线观看| 国产自产2019最新不卡| 国产精品一级二级三级| 国产成人av一区二区三区在线| 国产一区不卡视频| www.欧美色图| 91成人在线精品| 欧美精品乱码久久久久久| 日韩欧美成人午夜| 国产婷婷精品av在线| 中文字幕在线不卡一区| www.性欧美| 欧美视频在线观看一区二区| 欧美一区二区在线视频| 国产亚洲精品资源在线26u| 国产精品第五页| 一区二区不卡在线播放 | 国产精品理伦片| 成人av影视在线观看| 在线亚洲一区二区| 欧美成人精品福利| 中文字幕免费在线观看视频一区| 亚洲丝袜精品丝袜在线| 日本不卡高清视频| 国产91对白在线观看九色| 欧美羞羞免费网站| 精品国产三级电影在线观看| 国产精品伦理在线| 五月综合激情婷婷六月色窝| 国产福利一区二区三区视频| 欧美国产亚洲另类动漫| 亚洲激情av在线| 久久精品国产免费| 国产 欧美在线| 欧美色综合影院| 久久久久久久久久久久电影 | 香蕉影视欧美成人| 国内外成人在线视频| 色94色欧美sute亚洲线路二| 欧美sm极限捆绑bd| 青青草原综合久久大伊人精品 | 国产成人免费在线观看不卡| 99久久精品99国产精品| 欧美一区二区在线免费观看| 中文字幕在线不卡一区| 开心九九激情九九欧美日韩精美视频电影| 日本视频一区二区| 青青草国产精品97视觉盛宴| 成人国产精品免费观看| 日韩三级精品电影久久久| 一区二区在线观看视频| 韩国v欧美v日本v亚洲v| 欧美日韩色一区| 18涩涩午夜精品.www| 理论片日本一区| 91精品国产一区二区三区香蕉| 亚洲欧洲中文日韩久久av乱码| 精久久久久久久久久久| 这里只有精品电影| 欧美国产一区二区在线观看| 亚洲综合一二三区| eeuss影院一区二区三区| 久久久亚洲高清| 久久狠狠亚洲综合| 欧美色中文字幕| 亚洲综合色在线| 日本道在线观看一区二区| 国产精品国产成人国产三级| 国产成人综合网站| 久久精品亚洲乱码伦伦中文| 九九国产精品视频| 欧美一区午夜视频在线观看 | 国产蜜臀97一区二区三区| 久久精品国产精品亚洲精品| 欧美一二三四在线| 亚洲欧美日韩一区| 91黄色免费网站| 一区二区三区在线视频观看| 在线观看一区不卡| 亚洲mv大片欧洲mv大片精品| 99久久伊人精品|