2
0
Fork 0

Added i18n lib and added paging on mongo and meta backends.

This commit is contained in:
Willem Cazander 2012-05-08 04:38:07 +02:00
parent fe5842768f
commit efcbdbd519
45 changed files with 1767 additions and 28 deletions

View file

@ -74,12 +74,41 @@ public class MetaModelVascBackend extends AbstractVascBackend {
return dataContext;
}
public List<Object> execute(VascBackendState state) throws VascException {
/**
* @see net.forwardfire.vasc.backend.AbstractVascBackend#isPageable()
*/
@Override
public boolean isPageable() {
return true;
}
/**
* @see net.forwardfire.vasc.backend.AbstractVascBackend#fetchTotalExecuteSize(net.forwardfire.vasc.backend.VascBackendState)
*/
@Override
public long fetchTotalExecuteSize(VascBackendState state) {
UpdateableDataContext dataContext = getUpdateableDataContext();
Schema schema = dataContext.getDefaultSchema();
Table t = schema.getTableByName(table);
Object qWhere = dataContext.query().from(t).select(t.getColumns());
Query q = createFilterQuery(state,t,true);
DataSet ds = dataContext.executeQuery(q);
if (ds.next()==false) {
ds.close();
return -1;
}
Row row = ds.getRow();
Number result = (Number)row.getValue(0);
ds.close();
return result.longValue();
}
private Query createFilterQuery(VascBackendState state,Table t,boolean count) {
Object qWhere = null;
if (count==false) {
qWhere = getUpdateableDataContext().query().from(t).select(t.getColumns());
} else {
qWhere = getUpdateableDataContext().query().from(t).selectCount();
}
Iterator<String> keys = state.getDataParameterKeys().iterator();
boolean first = true;
while (keys.hasNext()) {
@ -120,9 +149,19 @@ public class MetaModelVascBackend extends AbstractVascBackend {
}
first = false;
}
Query q = ((SatisfiedQueryBuilder<?>)qWhere).toQuery();
return q;
}
public List<Object> execute(VascBackendState state) throws VascException {
UpdateableDataContext dataContext = getUpdateableDataContext();
Schema schema = dataContext.getDefaultSchema();
Table t = schema.getTableByName(table);
Query q = createFilterQuery(state,t,false);
if (isPageable()) {
q.setFirstRow(state.getPageIndex());
q.setMaxRows(state.getPageSize());
}
DataSet ds = dataContext.executeQuery(q);
List<Object> result = new ArrayList<Object>(50);
while (ds.next()) {