[jboss-user] [JBoss Seam] - Re: Here is a Richfaces Ajax Datascroler and Seam Example

2008-02-02 Thread supernovasoftware.com
Here is a more recent version of the code.  This time I have the query return a 
List of maps for an HQL query.

I just override get id and it works.  Try this more recent version.  Are you 
using Seam 2.0.x?

I have not seen too much interest in my method.  If people like the technique 
employed, I can post an example when I get some time.



  | 
  | import java.io.IOException;
  | import java.io.Serializable;
  | import java.util.ArrayList;
  | import java.util.HashMap;
  | import java.util.List;
  | import java.util.Map;
  | 
  | import javax.faces.context.FacesContext;
  | 
  | import org.ajax4jsf.model.DataVisitor;
  | import org.ajax4jsf.model.ExtendedDataModel;
  | import org.ajax4jsf.model.Range;
  | import org.ajax4jsf.model.SequenceRange;
  | import org.jboss.seam.annotations.Logger;
  | import org.jboss.seam.log.Log;
  | 
  | import com.xxx.ui.Idable;
  | 
  | public abstract class BaseExtendedDataModel 
extends ExtendedDataModel implements  BaseExtendedDataModelDAO{
  | 
  | private @Logger Log log;
  | 
  | int rowNum=-1;  
  | 
  | public int getRowNum()
  | { 
  |   return ++rowNum;
  | }
  | 
  | public List listRow;
  | 
  | private ID currentId;
  | private Map wrappedData = new HashMap();
  | private List wrappedKeys;
  | private Long rowCount; // better to buffer row count locally
  | 
  | public abstract Long getCount();
  | public abstract List getList(Integer firstRow, Integer maxResults);
  | public abstract T findById(ID id);
  | 
  | public ID getId(T row)
  | {
  | Idable idable = (Idable) row;
  | ID id = (ID) idable.getId();
  | return id;
  | }
  | 
  | public void wrap(FacesContext context, DataVisitor visitor, Range 
range, Object argument, List list) throws IOException
  | {
  | wrappedKeys = new ArrayList();
  | wrappedData = new HashMap();
  | for (T row : list)
  | {
  | ID id = getId(row);
  | wrappedKeys.add(id);
  | wrappedData.put(id, row);
  | visitor.process(context, id, argument);
  | }   
  | }   
  | 
  | public boolean hasById(ID id) 
  | {
  | for (T row : listRow) 
  | {
  | ID rowId = getId(row);
  | if (rowId.equals(id))
  | {
  | return true;
  | }
  | }
  | return false;   
  | }
  | 
  | @Override
  | public void walk(FacesContext context, DataVisitor visitor, Range 
range, Object argument) throws IOException
  | {   
  | int firstRow = ((SequenceRange) range).getFirstRow();
  | int maxResults = ((SequenceRange) range).getRows();
  | log.info("("+firstRow +", "+ maxResults+")");
  | wrap(context, visitor, range, argument, getList(firstRow, 
maxResults));
  | }
  | 
  | /*
  |  * This method normally called by Visitor before request Data Row.
  |  */ 
  | @Override
  | public void setRowKey(Object key) 
  | {
  | this.currentId = (ID) key;
  | }
  | 
  | @Override
  | public int getRowCount() 
  | {
  |   if(rowCount == null) 
  | return (rowCount = this.getCount()).intValue();  
  |   else 
  | return rowCount.intValue();
  | }
  | 
  | @Override
  | public boolean isRowAvailable() 
  | {
  | if (currentId == null) {
  | return false;
  | } else {
  | return hasById(currentId);
  | }
  | }
  | 
  | /**
  |  * This is main way to obtain data row. It is intensively used by 
framework.
  |  * We strongly recommend use of local cache in that method.
  |  */
  | @Override
  | public Object getRowData() {
  | if (currentId == null) {
  | return null;
  | } else {
  | T ret = wrappedData.get(currentId);
  | if (ret == null) {
  | ret = this.findById(currentId);
  | wrappedData.put(currentId, ret);
  | return ret;
  | } else {
  | return ret;
  | }
  | }
  | }
  | 
  | 
  | // Unused rudiment from old JSF staff. 
  | @Override public int getRowIndex() { throw new 
UnsupportedOperationException(); }
  | @Override public void setRowIndex(int rowIndex) { throw new 
UnsupportedOperationException(); }
  | @Override public Object getWrappedData() { throw new 
UnsupportedOperationException(); }
  | @Override public void setWrappedData(Objec

[jboss-user] [JBoss Seam] - Re: Here is a Richfaces Ajax Datascroler and Seam Example

2008-02-01 Thread baspet
I tried to run your code but i am getting NotSupportedException because 
setRowIndex is called. Is that expected?. Any idea?

Thanks,
V.


View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4125583#4125583

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4125583
___
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user


[jboss-user] [JBoss Seam] - Re: Here is a Richfaces Ajax Datascroler and Seam Example

2007-12-28 Thread brachie
@supernovasoftware.com
Thanks for offering your help :-)

As far as I understand the code, I would need a separate seam component 
(representing the DataModel and extending BaseExtendedDataModel) for each query 
of which result I want to page through the results.

I will give it a try if I have time and keep you updated.

Regards,

Alexander

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4115899#4115899

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4115899
___
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user


[jboss-user] [JBoss Seam] - Re: Here is a Richfaces Ajax Datascroler and Seam Example

2007-12-17 Thread supernovasoftware.com
Yes.  You should be able to just override the methods with your custom queries.

Please let me know how it goes as I want to improve on this, but do not have 
the time currently to spend.

If you have problems I will try to help.

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4113454#4113454

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4113454
___
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user


[jboss-user] [JBoss Seam] - Re: Here is a Richfaces Ajax Datascroler and Seam Example

2007-12-15 Thread brachie
Hi,

thanks you for the code.. lazy loading with Richfaces datatable is really 
helpul for me. But I am not using DAO's to access my Entities. I am using the 
normal EntityManager.createQuery(..) method.

I would have to make 2 queries one for getCount and one for getList (and a 
third for getId), correct?

Regards,

Alexander

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4113176#4113176

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4113176
___
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user


[jboss-user] [JBoss Seam] - Re: Here is a Richfaces Ajax Datascroler and Seam Example

2007-12-14 Thread supernovasoftware.com
If your object does not implement Idable you can override the methods shown 
below.  These are the only methods that depend on this.  I will need to do this 
in some cases where I am returning a list of maps instead a list of entities. 


  | public void wrap(FacesContext context, DataVisitor visitor, Range range, 
Object argument, List list) throws IOException;
  | public boolean hasById(ID id); 
  | 

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4113005#4113005

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4113005
___
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user