Created
March 31, 2014 09:26
-
-
Save DemkaAge/9888663 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package ru.brbpm.lecm.shared.filenet.ce.util; | |
import java.io.Serializable; | |
import java.util.ArrayList; | |
import java.util.Arrays; | |
import java.util.List; | |
/** | |
* User: dshahovkin | |
* Date: 19.03.13 | |
* Time: 10:28 | |
* <p/> | |
* <p/> | |
* Структура для постраничной передачи данных. <p/> | |
* Общий подход. Сервис должен реализовывать два метода: | |
* <ul> | |
* <li> | |
* init ( входные данные, количество строк на странице : int) : K extends CePage<T> | |
* </li> | |
* <li> | |
* nextPage ( чекПоинт : byte[]) : K extends CePage<T> | |
* </li> | |
* </ul> | |
* <p/> | |
* Перебор данных для сервлета/ejb. | |
* <pre> | |
* {@code | |
* | |
* for (CePage<T> page = <service >.init(...); page.hasNextPage(); page = <service>.nextPage(page.getCheckPoint())) | |
* { | |
* List<T> data = page.getData(); | |
* for(T t: data) | |
* { | |
* //TODO logic | |
* } | |
* } | |
* } | |
* </pre> | |
* <p/> | |
* GWT клиент должен использовать {@link ru.brbpm.lecm.utils.client.filenet.ce.CeAsyncDataProvider}. | |
* | |
* @since 1.0.6 | |
*/ | |
public class CePage<T extends Serializable> implements Serializable { | |
private static final long serialVersionUID = -6133508129676864300L; | |
/** | |
* Одна страница данных. | |
*/ | |
protected List<T> data; | |
/** | |
* ЧекПоинт для восстановления FileNet PageIterator. | |
*/ | |
protected byte[] checkPoint; | |
public CePage() { | |
} | |
public CePage(List<T> data, byte[] checkPoint) { | |
this.data = data; | |
this.checkPoint = checkPoint; | |
} | |
public List<T> getData() { | |
if(data == null) | |
data = new ArrayList<T>(); | |
return data; | |
} | |
public void setData(List<T> data) { | |
this.data = data; | |
} | |
public byte[] getCheckPoint() { | |
return checkPoint; | |
} | |
public void setCheckPoint(byte[] checkPoint) { | |
this.checkPoint = checkPoint; | |
} | |
public boolean hasNextPage() { | |
return checkPoint != null; | |
} | |
@Override | |
public String toString() { | |
return "CePage{" + | |
"data=" + data + | |
", checkPoint=" + Arrays.toString(checkPoint) + | |
'}'; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment