[jboss-cvs] jboss-seam/examples/wiki/src/org/jboss/seam/wiki/core/users ...

Christian Bauer christian.bauer at jboss.com
Thu Feb 22 20:32:35 EST 2007


  User: cbauer  
  Date: 07/02/22 20:32:35

  Added:       examples/wiki/src/org/jboss/seam/wiki/core/users 
                        UserSearch.java
  Log:
  Member search feature
  
  Revision  Changes    Path
  1.1      date: 2007/02/23 01:32:35;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/src/org/jboss/seam/wiki/core/users/UserSearch.java
  
  Index: UserSearch.java
  ===================================================================
  package org.jboss.seam.wiki.core.users;
  
  import org.jboss.seam.annotations.*;
  import org.jboss.seam.annotations.datamodel.DataModel;
  import org.jboss.seam.ScopeType;
  import org.jboss.seam.core.FacesMessages;
  import org.jboss.seam.wiki.core.dao.UserDAO;
  
  import javax.faces.application.FacesMessage;
  import java.util.List;
  
  @Name("userSearch")
  @Scope(ScopeType.CONVERSATION)
  public class UserSearch {
  
      @In(create = true)
      private UserDAO userDAO;
  
      @In(create=true)
      private FacesMessages facesMessages;
  
      private User exampleUser;
      private String orderByProperty;
      private boolean orderDescending;
      private String[] ignoreProperties;
      private int rowCount;
      private int maxPageSize;
      private int pageSize;
      private int page;
  
      @DataModel
      private List<User> usersList;
  
      @Create
      @Begin(join = true)
      public void initialize() {
          pageSize = 10;
          maxPageSize = 1000;
          exampleUser = new User();
          orderByProperty = "username";
          orderDescending = false;
          ignoreProperties = new String[]{"passwordHash", "activated", "createdOn"};
      }
  
      public void find() {
          page = 0;
          queryRowCount();
          if (rowCount != 0) queryUsers();
      }
  
      public void nextPage() {
          page++;
          queryUsers();
      }
  
      public void previousPage() {
          page--;
          queryUsers();
      }
  
      public void firstPage() {
          page = 0;
          queryUsers();
      }
  
      public void lastPage() {
          page = (rowCount / pageSize);
          if (rowCount % pageSize == 0) page--;
          queryUsers();
      }
  
      private void queryRowCount() {
          rowCount = userDAO.getRowCountByExample(exampleUser, ignoreProperties);
          if (rowCount == 0) {
              facesMessages.addFromResourceBundleOrDefault(
                  FacesMessage.SEVERITY_INFO,
                  "noUserFound",
                  "No user with given attributes was found, please try again."
              );
          }
      }
  
      private void queryUsers() {
          usersList = userDAO.findByExample(exampleUser, orderByProperty, orderDescending, page * pageSize, pageSize, ignoreProperties);
      }
  
      public boolean isNextPageAvailable() {
          return usersList != null && rowCount > ((page * pageSize) + pageSize);
      }
  
      public boolean isPreviousPageAvailable() {
          return usersList != null && page > 0;
      }
      public int getPageSize() {
          return pageSize;
      }
  
      public void setPageSize(int pageSize) {
          this.pageSize = pageSize > maxPageSize ? maxPageSize : pageSize; // Prevent tampering
      }
  
      public int getRowCount() {
          return rowCount;
      }
  
      public User getExampleUser() {
          return exampleUser;
      }
  
      public void setExampleUser(User exampleUser) {
          this.exampleUser = exampleUser;
      }
  
      public String getOrderByProperty() {
          return orderByProperty;
      }
  
      public boolean isOrderDescending() {
          return orderDescending;
      }
  
      public void sortBy(String propertyName) {
          orderByProperty = propertyName;
          orderDescending = !isOrderDescending(); // Switch between ASC and DESC
          page = 0; // Reset to first page
          queryUsers();
      }
  
  }
  
  
  



More information about the jboss-cvs-commits mailing list