[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