01: package simpleorm.simplewebapp.eg.simple;
02:
03: import simpleorm.simplewebapp.core.*;
04: import simpleorm.simplewebapp.scalarFields.WFieldString;
05: import simpleorm.simplewebapp.scalarFields.WFieldInteger;
06:
07: import java.util.*;
08:
09: /**
10: * A simple demonstration of a List page.
11: * The implementation of the logic is very manual, see WUserAutoListPage
12: * for a more automated version.<p>
13: *
14: * (This is subtyped by WManualListPage and WAutoListPage just to
15: * demonstrate two ways of implementing JSPs. This style would not normally be
16: * subtyped at all.)
17: */
18: class WListPage extends WPage {
19:
20: public final WListPageletEg pagelet = new WListPageletEg(this );
21:
22: protected @Override
23: void onInitialize() throws Exception {
24: WTestDatabase.db.beginTransaction();
25: }
26:
27: protected @Override
28: void onFinalize() throws Exception {
29: WTestDatabase.db.endTransaction();
30: }
31:
32: public static class WListPageletEg extends WPageletList {
33: // Needs to be static class as newed by WManualListCrudPage
34:
35: final WFieldString nameWord = addField(searchFields,
36: new WFieldString("nameWord"));
37:
38: final WField id = addField(listFields, new WFieldString("id")
39: .setNotRetrieved(true));
40: final WField name = addField(listFields, new WFieldString(
41: "name").setNotRetrieved(true));
42: final WField color = addField(listFields, new WFieldString(
43: "color").setNotRetrieved(true));
44: final WField count = addField(listFields, new WFieldInteger(
45: "count").setNotRetrieved(true));
46:
47: Class<? extends WPage> crudClass;
48:
49: public WListPageletEg(WPage wpage) {
50: // wpage parameter rather than non-static inner class as also used from WManualListCrudPage
51: super (wpage, "list");
52: }
53:
54: Iterator iter;
55:
56: public @Override
57: void onWasSubmitted() throws Exception {
58: //Thread.sleep(1000); //Test to prove JSPs dont lock sessions even if there is session state.
59: // PostProcess to ensure any onSubmits in other Crud pagelets completes.
60: iter = WTestDatabase.db.getIterator(nameWord.getText(),
61: sorter.getText());
62: }
63:
64: public @Override
65: boolean onListRow() {
66: if (iter == null || !iter.hasNext())
67: return false;
68: WBeanUtils.retrieveBeanProperties(iter.next(), listFields
69: .getFields().values());
70: listFields.setAnchorHRefFields(id);
71: getPage().logPage();
72: return true;
73: }
74: }
75: }
|