@Statement
public Long selectMeterLogSum(OPersistenceSession session, final ListQueryParameterObject params) {
Map<String, Object> map = (Map<String, Object>) params.getParameter();
Query q = new Query().select(ProjectionFunction.count(Projection.projection("value")).as("value"))
.from(getSchemaClass());
List<Object> args = new ArrayList<>();
if(map.get("name")!=null) {
q.where(Clause.clause("name", Operator.EQ, Parameter.PARAMETER));
args.add(map.get("name"));
}
if(map.get("reporter")!=null) {
q.where(Clause.clause("reporter", Operator.EQ, Parameter.PARAMETER));
args.add(map.get("reporter"));
}
if(map.get("startDate")!=null) {
q.where(Clause.clause("timestamp", Operator.GT, Parameter.PARAMETER));
args.add(map.get("startDate"));
}
if(map.get("endDate")!=null) {
q.where(Clause.clause("timestamp", Operator.LT, Parameter.PARAMETER));
args.add(map.get("endDate"));
}
ODatabaseDocument db = session.getDatabase();
List<ODocument> ret = db.query(new OSQLSynchQuery<>(q.toString()), args.toArray());
return (Long)(ret!=null && !ret.isEmpty()? ret.get(0).field("value", OType.LONG):null);
}
}