📄 pagedlistholdertests.java
字号:
n = ((MockSourceProvider) holder.getSourceProvider()).getNrOfCalls();
assertTrue("Correct number of times called: " + n, n == 1);
// Go to the fourth page
holder.setPage(3);
s = ((TestBean)holder.getPageList().get(0)).getName();
assertTrue("E:page list contents0: " + s, s.equals("Giuseppe"));
s = ((TestBean)holder.getPageList().get(1)).getName();
assertTrue("E:page list contents1: " + s, s.equals("Jesus"));
n = holder.getFirstLinkedPage();
assertTrue("E:first display page: " + n, n == 2);
n = holder.getLastLinkedPage();
assertTrue("E:last display page: " + n, n == 4);
// Filter the name
cmd.clear();
cmd.put("filter.name", "G");
bw.setPropertyValues(cmd);
holder.refresh(false);
n = holder.getNrOfPages();
assertTrue("F:number of pages: " + n, n == 1);
n = holder.getPageSize();
assertTrue("F:page size: " + n, n == 2);
n = holder.getPage();
assertTrue("F:page number: " + n, n == 0);
n = holder.getFirstLinkedPage();
assertTrue("F:first display page: " + n, n == 0);
n = holder.getLastLinkedPage();
assertTrue("F:last display page: " + n, n == 0);
n = holder.getFirstElementOnPage();
assertTrue("F:first element: " + n, n == 0);
n = holder.getLastElementOnPage();
assertTrue("F:last element: " + n, n == 1);
n = holder.getPageList().size();
assertTrue("F:page list size: " + n, n == 2);
s = ((TestBean)holder.getPageList().get(0)).getName();
assertTrue("F:page list contents0: " + s, s.equals("Garcia"));
s = ((TestBean)holder.getPageList().get(1)).getName();
assertTrue("F:page list contents1: " + s, s.equals("Giuseppe"));
s = ((MockFilter) holder.getFilter()).getName();
assertTrue("F:filter name: " + s, s.equals("G"));
n = ((MockSourceProvider) holder.getSourceProvider()).getNrOfCalls();
assertTrue("Correct number of times called: " + n, n == 2);
// Request sort on name will reverse the sort
cmd.clear();
cmd.put("sort.property", "name");
bw.setPropertyValues(cmd);
holder.refresh(false);
s = ((TestBean)holder.getPageList().get(0)).getName();
assertTrue("G:page list contents0: " + s, s.equals("Giuseppe"));
s = ((TestBean)holder.getPageList().get(1)).getName();
assertTrue("G:page list contents1: " + s, s.equals("Garcia"));
// Filter the age
cmd.clear();
cmd.put("filter.age", "34");
bw.setPropertyValues(cmd);
holder.refresh(false);
n = holder.getLastElementOnPage();
assertTrue("H:last element: " + n, n == 0);
n = holder.getPageList().size();
assertTrue("H:page list size: " + n, n == 1);
s = ((TestBean)holder.getPageList().get(0)).getName();
assertTrue("H:page list contents0: " + s, s.equals("Garcia"));
s = ((MockFilter) holder.getFilter()).getAge();
assertTrue("H:filter age: " + s, s.equals("34"));
s = ((MockFilter) holder.getFilter()).getName();
assertTrue("H:filter name: " + s, s.equals("G"));
n = ((MockSourceProvider) holder.getSourceProvider()).getNrOfCalls();
assertTrue("Correct number of times called: " + n, n == 3);
// Remove the name filter
// The sort is always name reversed
cmd.clear();
cmd.put("filter.name", "");
bw.setPropertyValues(cmd);
holder.refresh(false);
n = holder.getPageList().size();
assertTrue("I:page list size: " + n, n == 2);
s = ((MockFilter) holder.getFilter()).getName();
assertTrue("H:filter name: " + s, s.equals(""));
s = ((TestBean)holder.getPageList().get(0)).getName();
assertTrue("I:page list contents0: " + s, s.equals("Garcia"));
s = ((TestBean)holder.getPageList().get(1)).getName();
assertTrue("I:page list contents1: " + s, s.equals("Djamel"));
n = ((MockSourceProvider) holder.getSourceProvider()).getNrOfCalls();
assertTrue("Correct number of times called: " + n, n == 4);
// Go to the alternative list
// The extendedInfo is provided to eventually pass a contextual data on the
// source provider. BUT, BY ITSELF, IT DOESN'T IMPLY THE REFRESH OF THE LIST.
cmd.clear();
cmd.put("filter.extendedInfo", "F");
bw.setPropertyValues(cmd);
n = holder.getPageList().size();
assertTrue("I:page list size: " + n, n == 2);
s = ((TestBean)holder.getPageList().get(0)).getName();
assertTrue("I:page list contents0: " + s, s.equals("Garcia"));
s = ((TestBean)holder.getPageList().get(1)).getName();
assertTrue("I:page list contents1: " + s, s.equals("Djamel"));
// When the list is reloaded for any reason, the source provider
// can use the extendedInfo.
holder.refresh(true);
n = holder.getPageList().size();
assertTrue("J:page list size: " + n, n == 1);
s = ((TestBean)holder.getPageList().get(0)).getName();
assertTrue("J:page list contents0: " + s, s.equals("Catherine"));
n = ((MockSourceProvider) holder.getSourceProvider()).getNrOfCalls();
assertTrue("Correct number of times called: " + n, n == 5);
// The locale change imply a refresh of the list.
// In this test the list will be empty if a locale is provided
cmd.clear();
cmd.put("locale", "en_US");
bw.setPropertyValues(cmd);
holder.refresh(false);
n = holder.getPageList().size();
assertTrue("K:page list size: " + n, n == 0);
n = holder.getNrOfPages();
assertTrue("K:number of pages: " + n, n == 1);
n = holder.getFirstElementOnPage();
assertTrue("K:first element: " + n, n == 0);
n = holder.getLastElementOnPage();
assertTrue("K:last element: " + n, n == -1);
n = holder.getPage();
assertTrue("K:page number: " + n, n == 0);
n = holder.getFirstLinkedPage();
assertTrue("K:first display page: " + n, n == 0);
n = holder.getLastLinkedPage();
assertTrue("K:last display page: " + n, n == 0);
n = ((MockSourceProvider) holder.getSourceProvider()).getNrOfCalls();
assertTrue("Correct number of times called: " + n, n == 6);
// The locale remains the same, no new request expected
cmd.clear();
cmd.put("locale", "en_US");
n = ((MockSourceProvider) holder.getSourceProvider()).getNrOfCalls();
assertTrue("Correct number of times called: " + n, n == 6);
}
public static class MockFilter {
private String name = "";
private String age = "";
private String extendedInfo = "";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getExtendedInfo() {
return extendedInfo;
}
public void setExtendedInfo(String extendedInfo) {
this.extendedInfo = extendedInfo;
}
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof MockFilter)) return false;
final MockFilter mockFilter = (MockFilter) o;
if (!age.equals(mockFilter.age)) return false;
if (!extendedInfo.equals(mockFilter.extendedInfo)) return false;
if (!name.equals(mockFilter.name)) return false;
return true;
}
public int hashCode() {
int result;
result = name.hashCode();
result = 29 * result + age.hashCode();
result = 29 * result + extendedInfo.hashCode();
return result;
}
}
/**
* Normally it's an internal class in the Controller using business services
* for searching data from a database and using filters
* and/or extendedInfo for determining the parameters/method.
* The extendedInfo will generally be null or the HttpRequest.
*/
private static class MockSourceProvider implements PagedListSourceProvider {
private List internalList;
private List altList;
private int nrOfCalls;
public MockSourceProvider() {
internalList = new ArrayList();
internalList.add(new TestBean("Calogero",33));
internalList.add(new TestBean("Giuseppe",38));
internalList.add(new TestBean("Francesco",41));
internalList.add(new TestBean("Djamel",34));
internalList.add(new TestBean("Jesus",48));
internalList.add(new TestBean("Cedric",30));
internalList.add(new TestBean("amid",35));
internalList.add(new TestBean("John",54));
internalList.add(new TestBean("Aziz",26));
internalList.add(new TestBean("Garcia",34));
internalList.add(new TestBean("Toma",38));
internalList.add(new TestBean("Sergio",50));
altList = new ArrayList();
altList.add(new TestBean("Cecile",36));
altList.add(new TestBean("Elizabeth",49));
altList.add(new TestBean("Denise",28));
altList.add(new TestBean("Catherine",34));
}
public int getNrOfCalls() {
return nrOfCalls;
}
public List loadList(Locale locale, Object filter) {
nrOfCalls++;
MockFilter mf = (MockFilter) filter;
List baseList = internalList;
if (null != mf.getExtendedInfo() && "F".equals(mf.getExtendedInfo())) {
baseList = altList;
}
if ("".equals(mf.getName()) && "".equals(mf.getAge())) {
return internalList;
}
List list = new ArrayList();
Iterator it = baseList.iterator();
while (it.hasNext()) {
TestBean b = (TestBean)it.next();
String fName = mf.getName();
String tmp = mf.getAge();
int fAge = -1;
if (!"".equals(tmp)) {
fAge = Integer.parseInt(tmp);
}
if (
("".equals(fName) || b.getName().startsWith(fName)) &&
(fAge < 0 || b.getAge() == fAge) &&
locale == null
) {
list.add(b);
}
}
return list;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -