Added i18n lib and added paging on mongo and meta backends.
This commit is contained in:
parent
fe5842768f
commit
efcbdbd519
45 changed files with 1767 additions and 28 deletions
|
|
@ -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()) {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue