[cvs] expresso commit by lhamel: add override for count() that
takes into
JCorporate Ltd
jcorp at jcorporate.com
Sat Jun 24 02:34:04 UTC 2006
Log Message:
-----------
add override for count() that takes into effect permissions to read
Modified Files:
--------------
expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj:
RowSecuredDBObject.java
Revision Data
-------------
Index: RowSecuredDBObject.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/RowSecuredDBObject.java,v
retrieving revision 1.54
retrieving revision 1.55
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/RowSecuredDBObject.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/RowSecuredDBObject.java -u -r1.54 -r1.55
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/RowSecuredDBObject.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/RowSecuredDBObject.java
@@ -1006,7 +1006,27 @@
isRowAllowed(UPDATE);
super.update();
}
- /* update() */
+
+ /**
+ * count only items user has permissions to see
+ *
+ * @return the count
+ * @throws com.jcorporate.expresso.core.db.DBException
+ * or security exception
+ * if search permissions is not allowed
+ */
+ public synchronized int count() throws DBException {
+ // todo after redesign of security system, rewrite to be a join that uses SQL count
+
+ // set just one field to be retrieved. whatever is the first field in the list
+ DBField field = (DBField) getDef().getAllFieldsIterator().next();
+
+ RowSecuredDBObject search = (RowSecuredDBObject) getThisDBObj();
+ search.setFieldsToRetrieve(field.getName());
+ search.copyAllFields(this);
+
+ return search.searchAndRetrieveList().size();
+ }
/**
* check delete privilege for all detail records; different than superclass
More information about the cvs
mailing list