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()) {

View file

@ -60,16 +60,43 @@ public class MongodbVascBackend extends AbstractVascBackend {
logger = Logger.getLogger(MongodbVascBackend.class.getName());
}
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) {
DBCollection coll = getDBCollection();
DBObject query = createFilterQuery(state);
long result = coll.count(query);
return result;
}
private DBObject createFilterQuery(VascBackendState state) {
DBObject query = new BasicDBObject();
for (String key:state.getDataParameterKeys()) {
Object value = state.getDataParameter(key);
query.put(key, value);
logger.finer("Setting query parameter key: '"+key+"' value: '"+value+"'");
}
return query;
}
public List<Object> execute(VascBackendState state) throws VascException {
DBCollection coll = getDBCollection();
DBObject query = createFilterQuery(state);
DBCursor cur = coll.find(query);
//cur.count();
if (isPageable()) {
cur.limit(state.getPageSize());
cur.skip(state.getPageIndex());
}
List<Object> result = new ArrayList<Object>(cur.count());
while (cur.hasNext()) {
DBObject row = cur.next();