dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #08996
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 2297: Apply pagination in User and UserRole lists.
------------------------------------------------------------
revno: 2297
committer: Quang <Quang@Quang-PC>
branch nick: trunk
timestamp: Mon 2010-12-06 21:13:48 +0700
message:
Apply pagination in User and UserRole lists.
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserStore.java
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/hibernate/HibernateUserStore.java
dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetRoleListAction.java
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetUserListAction.java
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/struts.xml
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/allRole.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/searchUser.vm
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserStore.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserStore.java 2010-10-30 08:20:17 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserStore.java 2010-12-06 14:13:48 +0000
@@ -29,6 +29,7 @@
import java.util.Collection;
+import org.hisp.dhis.dataelement.DataElement;
import org.hisp.dhis.organisationunit.OrganisationUnit;
/**
@@ -103,15 +104,16 @@
*/
void deleteUser( User user );
- Collection<User> getAllUsers( int from, int to );
-
Collection<UserCredentials> searchUsersByName( String key );
- Collection<UserCredentials> searchUsersByName( String key, int from, int to );
-
- int countNumberOfSearchUsersByName( String key );
-
- int countAllUsers();
+ Collection<UserCredentials> getUsersBetween( int first, int max );
+
+ Collection<UserCredentials> getUsersBetweenByName( String name, int first, int max );
+
+ int getUserCount();
+
+ int getUserCountByName( String name );
+
// -------------------------------------------------------------------------
// UserCredentials
@@ -253,5 +255,13 @@
* @param userSetting the UserSetting to delete.
*/
void deleteUserSetting( UserSetting userSetting );
-
+
+ Collection<UserAuthorityGroup> getUserRolesBetween( int first, int max );
+
+ Collection<UserAuthorityGroup> getUserRolesBetweenByName( String name, int first, int max );
+
+ int getUserRoleCount();
+
+ int getUserRoleCountByName( String name );
+
}
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/hibernate/HibernateUserStore.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/hibernate/HibernateUserStore.java 2010-10-30 08:20:17 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/hibernate/HibernateUserStore.java 2010-12-06 14:13:48 +0000
@@ -38,6 +38,8 @@
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
+import org.hisp.dhis.common.GenericIdentifiableObjectStore;
+import org.hisp.dhis.datadictionary.DataDictionary;
import org.hisp.dhis.organisationunit.OrganisationUnit;
import org.hisp.dhis.system.util.AuditLogLevel;
import org.hisp.dhis.system.util.AuditLogUtil;
@@ -76,6 +78,18 @@
{
this.currentUserService = currentUserService;
}
+
+ private GenericIdentifiableObjectStore<UserAuthorityGroup> userRoleStore;
+
+ public GenericIdentifiableObjectStore<UserAuthorityGroup> getUserRoleStore()
+ {
+ return userRoleStore;
+ }
+
+ public void setUserRoleStore( GenericIdentifiableObjectStore<UserAuthorityGroup> userRoleStore )
+ {
+ this.userRoleStore = userRoleStore;
+ }
// -------------------------------------------------------------------------
// User
@@ -122,14 +136,6 @@
return session.createQuery( "from User" ).list();
}
- @SuppressWarnings( "unchecked" )
- public Collection<User> getAllUsers( int from, int to )
- {
- Session session = sessionFactory.getCurrentSession();
-
- return session.createQuery( "from User" ).setFirstResult( from ).setMaxResults( to ).list();
- }
-
public Collection<User> getUsersByOrganisationUnit( OrganisationUnit organisationUnit )
{
Collection<User> users = getAllUsers();
@@ -188,17 +194,6 @@
User.class.getSimpleName(),
user.getName()) );
}
-
- public int countAllUsers()
- {
- Session session = sessionFactory.getCurrentSession();
-
- Query query = session.createQuery( "select count(*) from User" );
-
- Number rs = (Number) query.uniqueResult();
-
- return rs != null ? rs.intValue() : 0;
- }
// -------------------------------------------------------------------------
// UserCredentials
// -------------------------------------------------------------------------
@@ -367,28 +362,24 @@
return criteria.list();
}
- @SuppressWarnings( "unchecked" )
- public Collection<UserCredentials> searchUsersByName( String key, int from, int to ){
-
+ public int getUserCount()
+ {
Session session = sessionFactory.getCurrentSession();
-
- Criteria criteria = session.createCriteria( UserCredentials.class );
-
- criteria.add( Restrictions.ilike( "username", "%" + key + "%" ) );
- criteria.addOrder( Order.asc( "username" ) );
- criteria.setFirstResult( from );
- criteria.setMaxResults( to );
-
- return criteria.list();
+
+ Query query = session.createQuery( "select count(*) from User" );
+
+ Number rs = (Number) query.uniqueResult();
+
+ return rs != null ? rs.intValue() : 0;
}
-
- public int countNumberOfSearchUsersByName( String key )
+
+ public int getUserCountByName( String name )
{
Session session = sessionFactory.getCurrentSession();
Criteria criteria = session.createCriteria( UserCredentials.class );
- criteria.add( Restrictions.ilike( "username", "%" + key + "%" ) );
+ criteria.add( Restrictions.ilike( "username", "%" + name + "%" ) );
criteria.setProjection( Projections.rowCount() ).uniqueResult();
@@ -396,4 +387,45 @@
return rs != null ? rs.intValue() : 0;
}
+
+ public Collection<UserCredentials> getUsersBetween( int first, int max )
+ {
+ Session session = sessionFactory.getCurrentSession();
+
+ return session.createQuery( "from UserCredentials" ).setFirstResult( first ).setMaxResults( max ).list();
+ }
+
+ public Collection<UserCredentials> getUsersBetweenByName( String name, int first, int max )
+ {
+ Session session = sessionFactory.getCurrentSession();
+
+ Criteria criteria = session.createCriteria( UserCredentials.class );
+
+ criteria.add( Restrictions.ilike( "username", "%" + name + "%" ) );
+ criteria.addOrder( Order.asc( "username" ) );
+ criteria.setFirstResult( first );
+ criteria.setMaxResults( max );
+
+ return criteria.list();
+ }
+
+ public int getUserRoleCount()
+ {
+ return userRoleStore.getCount();
+ }
+
+ public int getUserRoleCountByName( String name )
+ {
+ return userRoleStore.getCountByName( name );
+ }
+
+ public Collection<UserAuthorityGroup> getUserRolesBetween( int first, int max )
+ {
+ return userRoleStore.getBetween( first, max );
+ }
+
+ public Collection<UserAuthorityGroup> getUserRolesBetweenByName( String name, int first, int max )
+ {
+ return userRoleStore.getBetweenByName( name, first, max );
+ }
}
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml 2010-11-27 09:37:29 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml 2010-12-06 14:13:48 +0000
@@ -186,6 +186,7 @@
<bean id="org.hisp.dhis.user.UserStore" class="org.hisp.dhis.user.hibernate.HibernateUserStore">
<property name="sessionFactory" ref="sessionFactory"/>
+ <property name="userRoleStore" ref="org.hisp.dhis.user.UserAuthorityGroupStore" />
<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
</bean>
@@ -203,6 +204,12 @@
class="org.hisp.dhis.aggregation.jdbc.JdbcAggregatedDataValueStore">
<property name="statementManager" ref="statementManager"/>
</bean>
+
+ <bean id="org.hisp.dhis.user.UserAuthorityGroupStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+ <property name="clazz" value="org.hisp.dhis.user.UserAuthorityGroup" />
+ <property name="sessionFactory" ref="sessionFactory" />
+ </bean>
+
<!-- Service definitions -->
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetRoleListAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetRoleListAction.java 2010-04-12 21:23:33 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetRoleListAction.java 2010-12-06 14:13:48 +0000
@@ -27,10 +27,15 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+import static org.apache.commons.lang.StringUtils.isNotBlank;
+
import java.util.ArrayList;
import java.util.List;
+import org.hisp.dhis.paging.ActionPagingSupport;
+import org.hisp.dhis.user.User;
import org.hisp.dhis.user.UserAuthorityGroup;
+import org.hisp.dhis.user.UserCredentials;
import org.hisp.dhis.user.UserStore;
import com.opensymphony.xwork2.Action;
@@ -40,7 +45,7 @@
* @version $Id: GetRoleListAction.java 4079 2007-11-20 11:42:23Z larshelg $
*/
public class GetRoleListAction
- implements Action
+ extends ActionPagingSupport<UserAuthorityGroup>
{
// -------------------------------------------------------------------------
// Dependencies
@@ -54,7 +59,7 @@
}
// -------------------------------------------------------------------------
- // Output
+ // Input & Output
// -------------------------------------------------------------------------
private List<UserAuthorityGroup> userAuthorityGroups;
@@ -63,6 +68,18 @@
{
return userAuthorityGroups;
}
+
+ private String key;
+
+ public void setKey( String key )
+ {
+ this.key = key;
+ }
+
+ public String getKey()
+ {
+ return key;
+ }
// -------------------------------------------------------------------------
// Action implementation
@@ -71,7 +88,19 @@
public String execute()
throws Exception
{
- userAuthorityGroups = new ArrayList<UserAuthorityGroup>( userStore.getAllUserAuthorityGroups() );
+
+ if ( isNotBlank( key ) ) // Filter on key only if set
+ {
+ this.paging = createPaging( userStore.getUserRoleCountByName( key ) );
+
+ userAuthorityGroups = new ArrayList<UserAuthorityGroup>( userStore.getUserRolesBetweenByName( key, paging.getStartPos(), paging.getPageSize() ) );
+ }
+ else
+ {
+ this.paging = createPaging( userStore.getUserRoleCount() );
+
+ userAuthorityGroups = new ArrayList<UserAuthorityGroup>( userStore.getUserRolesBetween( paging.getStartPos(), paging.getPageSize() ) );
+ }
return SUCCESS;
}
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetUserListAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetUserListAction.java 2010-10-30 08:20:17 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetUserListAction.java 2010-12-06 14:13:48 +0000
@@ -27,8 +27,9 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+import static org.apache.commons.lang.StringUtils.isNotBlank;
+
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -65,7 +66,7 @@
}
// -------------------------------------------------------------------------
- // Output
+ // Input & Output
// -------------------------------------------------------------------------
private List<UserCredentials> userCredentialsList;
@@ -101,47 +102,25 @@
public String execute()
throws Exception
{
- this.paging = createPaging( userStore.countAllUsers() );
-
- Collection<User> users = userStore.getAllUsers( paging.getStartPos(), paging.getPageSize() );
-
- userCredentialsList = new ArrayList<UserCredentials>();
-
- for ( User user : users )
- {
- UserCredentials userCredentials = userStore.getUserCredentials( user );
-
- userCredentials.getUser();
-
- userCredentialsList.add( userCredentials );
- }
-
- Collections.sort( userCredentialsList, new UsernameComparator() );
- User currentUser = userStore.getUser( currentUserService.getCurrentUser().getId() );
- UserCredentials userCredentials = userStore.getUserCredentials( currentUser );
-
- currentUserName = userCredentials.getUsername();
- return SUCCESS;
- }
-
- public String searchUserByName()
- {
- if ( key.isEmpty() )
- {
- return INPUT;
- }
-
- this.paging = createPaging( userStore.countNumberOfSearchUsersByName(key) );
-
- userCredentialsList = new ArrayList<UserCredentials>(userStore.searchUsersByName( key, paging.getStartPos(), paging.getPageSize() ));
-
- Collections.sort( userCredentialsList, new UsernameComparator() );
- User currentUser = userStore.getUser( currentUserService.getCurrentUser().getId() );
- UserCredentials userCredentials = userStore.getUserCredentials( currentUser );
-
- currentUserName = userCredentials.getUsername();
-
- return SUCCESS;
- }
-
+
+ if ( isNotBlank( key ) ) // Filter on key only if set
+ {
+ this.paging = createPaging( userStore.getUserCountByName( key ) );
+
+ userCredentialsList = new ArrayList<UserCredentials>( userStore.getUsersBetweenByName( key, paging.getStartPos(), paging.getPageSize() ) );
+ }
+ else
+ {
+ this.paging = createPaging( userStore.getUserCount() );
+
+ userCredentialsList = new ArrayList<UserCredentials>( userStore.getUsersBetween( paging.getStartPos(), paging.getPageSize() ) );
+ }
+
+ Collections.sort( userCredentialsList, new UsernameComparator() );
+ User currentUser = userStore.getUser( currentUserService.getCurrentUser().getId() );
+ UserCredentials userCredentials = userStore.getUserCredentials( currentUser );
+
+ currentUserName = userCredentials.getUsername();
+ return SUCCESS;
+ }
}
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/struts.xml'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/struts.xml 2010-12-03 05:41:34 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/struts.xml 2010-12-06 14:13:48 +0000
@@ -102,6 +102,7 @@
<param name="page">/dhis-web-maintenance-user/allRole.vm</param>
<param name="menu">/dhis-web-maintenance-user/menu.vm</param>
<param name="javascripts">javascript/role.js,javascript/filterTable.js</param>
+ <param name="stylesheets">../dhis-web-commons/paging/paging.css</param>
</action>
<action name="getRole" class="org.hisp.dhis.user.action.GetRoleAction">
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/allRole.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/allRole.vm 2010-12-03 05:41:34 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/allRole.vm 2010-12-06 14:13:48 +0000
@@ -7,7 +7,7 @@
<td style="vertical-align:top">
<table width="100%">
<tr>
- <td>$i18n.getString( "filter_by_role_name" ): <form style="display:inline" action="none" onsubmit="return false"><input type="text" onkeyup="filterValues( this.value )"/></form></td>
+ <td>#filterDiv( "allRole" )</td>
<td colspan="4" style="text-align:right"><input type="button" value="$i18n.getString( 'add_new' )" onclick="window.location.href='showAddRoleForm.action'"/></td>
</tr>
</table>
@@ -33,6 +33,11 @@
#end
</tbody>
</table>
+ <p></p>
+ <div class="paging-container">
+ #parse( "/dhis-web-commons/paging/paging.vm" )
+ </div>
+
</td>
<td style="width:20em; padding-left:2em; vertical-align:top">
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/searchUser.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/searchUser.vm 2010-12-03 05:41:34 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/searchUser.vm 2010-12-06 14:13:48 +0000
@@ -1,31 +1,9 @@
<table style="width:100%">
<tr>
- <td>
- <table width='100%'>
- <tr>
- <td colspan='5'>
- <div class="paging-container">
- #parse( "/dhis-web-commons/paging/paging.vm" )
- </div>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
<td style="vertical-align:top">
<table width='100%'>
<tr>
- <td>$i18n.getString( "filter_by_username" ):
- <form style="display:inline" action="none" onsubmit="return false">
- <div style="inline">
- <input type="text" id='key' value="$!key">
- <input type="button" value="$i18n.getString( "go" )" onclick="searchUserName();" />
- </div>
- </form>
- </td>
- <td></td>
- <td></td>
+ <td>#filterDiv( "alluser" )</td>
<td colspan="3" style="text-align:right"><input type="button" value="$i18n.getString( 'add_new' )" onclick="window.location.href='showAddUserForm.action'"/></td>
</tr>
</table>