You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by Apache Wiki <wi...@apache.org> on 2007/10/01 14:41:19 UTC
[Tapestry Wiki] Update of "ContribTableExample" by pantertro
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Tapestry Wiki" for change notification.
The following page has been changed by pantertro:
http://wiki.apache.org/tapestry/ContribTableExample
New page:
this is a simple implementation of contrib:table. for those of you looking for example code:
{{{
How to implement tapestry contrib:Table
=======================================
HTML part
---------
::
<table jwcid="table@contrib:Table"
source="ognl:model"
columns="ognl:columnModel"
pageSize="50"
class="style-normal"
pagesClass="style-normal"
columnsClass="style-normal"
rowsClass="style-normal"
valuesClass="style-normal">
</table>
Java component part
-------------------
::
public abstract class Logs extends BasePage implements PageBeginRenderListener {
//getter and setters for data and column model:
public abstract IBasicTableModel getModel();
public abstract void setModel(IBasicTableModel model);
public abstract ITableColumnModel getColumnModel();
public abstract void setColumnModel(ITableColumnModel columnModel);
//persist model for request scope
public void pageBeginRender(final PageEvent event) {
final IBasicTableModel newModel = createDataModel();
final ITableColumnModel columnModel = getLogsLogic().createColumnModel();
setModel(newModel);
setColumnModel(columnModel);
}
private IBasicTableModel createDataModel() {
return new IBasicTableModel() {
private List list;
private long count = -1;
public Iterator getCurrentPageRows(final int offset,
final int pageSize,
final ITableColumn iTableColumn,
final boolean orderDirection) {
if (null == list) {
//retrieve data on a row basis from business logic
list = getLogsLogic().retrieveDbData(offset, pageSize, iTableColumn, orderDirection);
}
return list.iterator();
}
public int getRowCount() {
if (-1 == count) {
count = getLogsLogic().retrieveDbDataCount();
}
return (int) count;
}
};
}
//map business logic service
public abstract LogsLogic getLogsLogic();
}
Java business logic part
------------------------
::
public List retrieveDbData(int offset,
int pageSize,
ITableColumn orderColumn,
boolean ascending) {
String queryString = "select \n" +
" t.id, \n" + //0
" t.targetIdAsString, \n" + //1
" c.id, \n" + //2
" ts.id, \n" + //3
" ts.type, \n" + //4
" ts.status, \n" + //5
" ts.startOccurrence, \n" + //6
" ts.endOccurrence, \n" + //7
" tss.id, \n" + //8
" tss.type, \n" + //9
" tss.occurrence, \n" + //10
" tss.message\n" + //11
"from \n" +
" Target t, \n" +
" ChainRun c, \n" +
" Task ts, \n" +
" TaskStep tss \n" +
"where t.id = c.targetId \n" +
"and c.id = ts.chainRunId \n" +
"and ts.id = tss.taskId";
if (null != orderColumn) {
queryString += " order by " + orderColumn.getColumnName() + (ascending ? " ASC" : " DESC");
}
final org.hibernate.classic.Session session = HibernateTool.getSessionFactory().getCurrentSession();
session.beginTransaction();
final Query query = session.createQuery(queryString);
query.setFirstResult(offset);
query.setMaxResults(pageSize);
final List list = query.list();
return list;
}
public long retrieveDbDataCount(){
String queryString = "select count(*)\n" +
"from \n" +
" Target t, \n" +
" ChainRun c, \n" +
" Task ts, \n" +
" TaskStep tss \n" +
"where t.id = c.targetId \n" +
"and c.id = ts.chainRunId \n" +
"and ts.id = tss.taskId";
final org.hibernate.classic.Session session = HibernateTool.getSessionFactory().getCurrentSession();
session.beginTransaction();
final Query query = session.createQuery(queryString);
final Long count = (Long) query.uniqueResult();
return count;
}
public ITableColumnModel createColumnModel() {
return new MyColumnModel();
}
private static class MyColumnModel implements ITableColumnModel {
//use a sorted set to have the columns sorted by key...
private SortedMap<Integer, ITableColumn> mapping = new TreeMap<Integer, ITableColumn>();
private MyColumnModel() {
final ITableColumnEvaluator columnEvaluator = new ITableColumnEvaluator() {
public Object getColumnValue(final ITableColumn iTableColumn, final Object row) {
final Object[] dataSet = (Object[]) row;
for (final Integer idx : mapping.keySet()) {
if (mapping.get(idx).getColumnName().equals(iTableColumn.getColumnName())) {
final Object value = dataSet[idx];
if (value instanceof Date)
return DateUtil.dateTimeFormatCH.format(value);
else
return value;
}
}
return null;
}
};
mapping.put(1, new SimpleTableColumn("t.targetIdAsString", "LIID", columnEvaluator, true));
mapping.put(2, new SimpleTableColumn("c.id", "Chain Run Id", columnEvaluator, true));
mapping.put(4, new SimpleTableColumn("ts.type", "Task Type", columnEvaluator, true));
mapping.put(5, new SimpleTableColumn("ts.status", "Status", columnEvaluator, true));
mapping.put(9, new SimpleTableColumn("tss.type", "Type", columnEvaluator, true));
mapping.put(10, new SimpleTableColumn("tss.occurrence", "Occurrence", columnEvaluator, true));
mapping.put(11, new SimpleTableColumn("tss.message", "Message", columnEvaluator, true));
}
public ITableColumn getColumn(final String s) {
for (final ITableColumn iTableColumn : mapping.values()) {
if (iTableColumn.getColumnName().equals(s))
return iTableColumn;
}
return null;
}
public int getColumnCount() {
return mapping.size();
}
public Iterator getColumns() {
return mapping.values().iterator();
}
}
}}}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org