Hi, I'm using my implementation of a DataView to display list of objects that are own by another object. I wrote my IDataProvider and LoadableDetachableModel so I can page through the list - the list is quite long it can even have 5000, 6000 objects. I'm displaying 10 rows on each page. When I run application locally from my eclipse, everything is fine but when I run it on a server the delay during page changing is significant e.g. 3 or more seconds. Could someone advise me on this issue? I'm attaching code snippets.
class MyObjectDataProvider implements IDataProvider { private static final long serialVersionUID = -254289478999293765L; private List<MyObject> myObjects; public MyObjectDataProvider(List<MyObject> myObjects){ this.myObjects = myObjects; } public Iterator<MyObject> iterator(int first, int count) { return new ArrayList<MyObject>(myObjects.subList(first, first+count)).iterator(); } public IModel model(Object arg0) { return new MyObjectModel((MyObject)arg0); } public int size() { return myObjects.size(); } public void setMyObjects( List<MyObject> myObjects) { this.myObjects = myObjects; } private final class MyObjectModel extends LoadableDetachableModel{ private static final long serialVersionUID = 8575601860619558208L; private MyObject psc; public MyObjectModel(MyObject psc){ this.psc = psc; } @Override protected Object load() { return psc; } @Override public int hashCode(){ return psc.hashCode(); } @Override public boolean equals(Object o){ if(this == o){ return true; } if(o instanceof MyObjectModel){ MyObjectModel that = (MyObjectModel)o; if(this.psc == null ? that.psc==null: this.psc.equals(that.psc)){ return true; } } return false; } } } class MyObjectDataView extends DataView { private static final long serialVersionUID = -5679706549137629007L; /** * Constructor. * * @param name of this Component * @param myObjectModel model containing list of MyObject objects */ public MyObjectDataView(String name, IDataProvider myObjectDataProvider) { super(name, myObjectDataProvider); } @Override protected void populateItem(Item item) { MyObject psc = (MyObject)item.getModelObject(); TextField field1 = new TextField("field1",new PropertyModel(psc,"field1")); site.setEnabled(false); TextField field2 = new TextField("field2",new PropertyModel(psc,"field2")); currency.setEnabled(false); item.add(field1); item.add(field2); item.add(new TextField("field3",new PropertyModel(psc,"field3")))); item.add(new TextField("field4",new PropertyModel(psc,"field4")))); item.add(new TextField("field5",new PropertyModel(psc,"field5")))); item.add(new CheckBox("field6",new PropertyModel(psc,"field6")))); } } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This message is intended only for the personal and confidential use of the designated recipient(s) named above. If you are not the intended recipient of this message you are hereby notified that any review, dissemination, distribution or copying of this message is strictly prohibited. This communication is for information purposes only and should not be regarded as an offer to sell or as a solicitation of an offer to buy any financial product, an official confirmation of any transaction, or as an official statement of Lehman Brothers. Email transmission cannot be guaranteed to be secure or error-free. Therefore, we do not represent that this information is complete or accurate and it should not be relied upon as such. All information is subject to change without notice. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]