[jboss-cvs] JBossAS SVN: r97071 - in projects/snowdrop/trunk/documentation/samples/sportsclub: sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria and 6 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Nov 27 02:36:04 EST 2009
Author: marius.bogoevici
Date: 2009-11-27 02:36:03 -0500 (Fri, 27 Nov 2009)
New Revision: 97071
Added:
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/AccountSearchCriteria.java
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/PersonSearchCriteria.java
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/Range.java
Modified:
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/AccountRepository.java
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/PersonRepository.java
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/Repository.java
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/HibernateAccountRepository.java
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/HibernateMembershipRepository.java
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/HibernatePersonRepository.java
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/HibernateRepository.java
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/initializer/DatabaseInitializer.java
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-ejb/src/main/java/org/jboss/snowdrop/samples/sportsclub/ejb/SubscriptionService.java
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-ejb/src/main/java/org/jboss/snowdrop/samples/sportsclub/ejb/SubscriptionServiceImpl.java
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/AccountSearch.java
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/WEB-INF/faces-config.xml
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/WEB-INF/web.xml
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/index.xhtml
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/searchForm.xhtml
projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/searchResult.xhtml
Log:
Enhancing the DAO logic and fleshing out the UI.
Modified: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/AccountRepository.java
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/AccountRepository.java 2009-11-27 07:33:10 UTC (rev 97070)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/AccountRepository.java 2009-11-27 07:36:03 UTC (rev 97071)
@@ -3,6 +3,7 @@
import java.util.List;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.AccountSearchCriteria;
/**
* @author <a href="mailto:mariusb at redhat.com">Marius Bogoevici</a>
@@ -10,4 +11,8 @@
public interface AccountRepository extends Repository<Account, Integer>
{
List<Account> findByPersonName(String name);
+
+ int countByCriteria(AccountSearchCriteria accountSearchCriteria);
+
+ List<Account> findByCriteria(AccountSearchCriteria accountSearchCriteria);
}
Modified: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/PersonRepository.java
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/PersonRepository.java 2009-11-27 07:33:10 UTC (rev 97070)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/PersonRepository.java 2009-11-27 07:36:03 UTC (rev 97071)
@@ -1,6 +1,9 @@
package org.jboss.snowdrop.samples.sportsclub.domain.repository;
+import java.util.Collection;
+
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Person;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.AccountSearchCriteria;
/**
* @author <a href="mailto:mariusb at redhat.com">Marius Bogoevici</a>
Modified: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/Repository.java
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/Repository.java 2009-11-27 07:33:10 UTC (rev 97070)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/Repository.java 2009-11-27 07:36:03 UTC (rev 97071)
@@ -14,4 +14,6 @@
void delete(T object);
Collection<T> findAll();
+
+ int countAll();
}
Added: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/AccountSearchCriteria.java
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/AccountSearchCriteria.java (rev 0)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/AccountSearchCriteria.java 2009-11-27 07:36:03 UTC (rev 97071)
@@ -0,0 +1,34 @@
+package org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria;
+
+/**
+ * @author <a href="mailto:mariusb at redhat.com">Marius Bogoevici</a>
+ */
+public class AccountSearchCriteria
+{
+ private PersonSearchCriteria personSearchCriteria;
+
+ private Range range;
+
+
+ public PersonSearchCriteria getPersonSearchCriteria()
+ {
+ return personSearchCriteria;
+ }
+
+ public void setPersonSearchCriteria(PersonSearchCriteria personSearchCriteria)
+ {
+ this.personSearchCriteria = personSearchCriteria;
+ }
+
+ public Range getRange()
+ {
+ return range;
+ }
+
+ public void setRange(Range range)
+ {
+ this.range = range;
+ }
+
+
+}
Added: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/PersonSearchCriteria.java
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/PersonSearchCriteria.java (rev 0)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/PersonSearchCriteria.java 2009-11-27 07:36:03 UTC (rev 97071)
@@ -0,0 +1,43 @@
+package org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria;
+
+/**
+ * @author <a href="mailto:mariusb at redhat.com">Marius Bogoevici</a>
+ */
+public class PersonSearchCriteria
+{
+ private String name;
+
+ private String city;
+
+ private Range range;
+
+ public Range getRange()
+ {
+ return range;
+ }
+
+ public void setRange(Range range)
+ {
+ this.range = range;
+ }
+
+ public String getCity()
+ {
+ return city;
+ }
+
+ public void setCity(String city)
+ {
+ this.city = city;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+}
\ No newline at end of file
Added: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/Range.java
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/Range.java (rev 0)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/Range.java 2009-11-27 07:36:03 UTC (rev 97071)
@@ -0,0 +1,32 @@
+package org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria;
+
+/**
+ * @author <a href="mailto:mariusb at redhat.com">Marius Bogoevici</a>
+ */
+public class Range
+{
+ private int minIndex;
+
+ private int maxIndex;
+
+ public Range(int minIndex, int length)
+ {
+ this.maxIndex = minIndex + length;
+ this.minIndex = minIndex;
+ }
+
+ public int getMaxIndex()
+ {
+ return maxIndex;
+ }
+
+ public int getMinIndex()
+ {
+ return minIndex;
+ }
+
+ public int length()
+ {
+ return maxIndex - minIndex;
+ }
+}
Modified: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/HibernateAccountRepository.java
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/HibernateAccountRepository.java 2009-11-27 07:33:10 UTC (rev 97070)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/HibernateAccountRepository.java 2009-11-27 07:36:03 UTC (rev 97071)
@@ -1,12 +1,24 @@
package org.jboss.snowdrop.samples.stayfit.dao.hibernate;
+import static org.hibernate.criterion.Restrictions.eq;
+import static org.hibernate.criterion.Restrictions.eqProperty;
+import static org.hibernate.criterion.Restrictions.ilike;
+import static org.hibernate.criterion.Restrictions.or;
+
import java.util.List;
+import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
-import org.hibernate.SessionFactory;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.criterion.MatchMode;
+import org.hibernate.criterion.Projection;
+import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Restrictions;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
import org.jboss.snowdrop.samples.sportsclub.domain.repository.AccountRepository;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.AccountSearchCriteria;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.PersonSearchCriteria;
/**
* @author <a href="mailto:mariusb at redhat.com">Marius Bogoevici</a>
@@ -28,4 +40,45 @@
query.setString("name", "%" + name + "%");
return (List<Account>)query.list();
}
+
+
+ public int countByCriteria(AccountSearchCriteria accountSearchCriteria)
+ {
+ Criteria criteria = convert(accountSearchCriteria);
+ criteria.setProjection(Projections.count("id"));
+ return (Integer)criteria.uniqueResult();
+ }
+
+ private Criteria convert(AccountSearchCriteria accountSearchCriteria)
+ {
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Account.class);
+ if (accountSearchCriteria.getPersonSearchCriteria() != null)
+ {
+ PersonSearchCriteria personSearchCriteria = accountSearchCriteria.getPersonSearchCriteria();
+ Criteria personCriteria = criteria.createCriteria("subscriber");
+ if (personSearchCriteria.getName() != null)
+ {
+ personCriteria.add(
+ or(ilike("name.firstName", personSearchCriteria.getName(), MatchMode.ANYWHERE),
+ or(ilike("name.lastName", personSearchCriteria.getName(), MatchMode.ANYWHERE),
+ ilike("name.middleName", personSearchCriteria.getName(), MatchMode.ANYWHERE))));
+ }
+ if (personSearchCriteria.getCity() != null)
+ {
+ personCriteria.add(ilike("address.city", personSearchCriteria.getCity(), MatchMode.ANYWHERE));
+ }
+ }
+ return criteria;
+ }
+
+ public List<Account> findByCriteria(AccountSearchCriteria accountSearchCriteria)
+ {
+ Criteria criteria = convert(accountSearchCriteria);
+ if (accountSearchCriteria.getRange()!=null)
+ {
+ criteria.setFirstResult(accountSearchCriteria.getRange().getMinIndex());
+ criteria.setMaxResults(accountSearchCriteria.getRange().length());
+ }
+ return (List<Account>) criteria.list();
+ }
}
Modified: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/HibernateMembershipRepository.java
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/HibernateMembershipRepository.java 2009-11-27 07:33:10 UTC (rev 97070)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/HibernateMembershipRepository.java 2009-11-27 07:36:03 UTC (rev 97071)
@@ -1,6 +1,7 @@
package org.jboss.snowdrop.samples.stayfit.dao.hibernate;
import org.hibernate.Query;
+import org.hibernate.criterion.Projections;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Membership;
import org.jboss.snowdrop.samples.sportsclub.domain.repository.MembershipRepository;
@@ -22,4 +23,9 @@
Query query = getCurrentSession().createQuery("from Membership m where m.active");
return query.list();
}
+
+ public int countAll()
+ {
+ return (Integer)getCurrentSession().createCriteria(Membership.class).setProjection(Projections.count("code")).uniqueResult();
+ }
}
Modified: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/HibernatePersonRepository.java
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/HibernatePersonRepository.java 2009-11-27 07:33:10 UTC (rev 97070)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/HibernatePersonRepository.java 2009-11-27 07:36:03 UTC (rev 97071)
@@ -1,6 +1,7 @@
package org.jboss.snowdrop.samples.stayfit.dao.hibernate;
-import org.hibernate.SessionFactory;
+import static org.hibernate.criterion.Restrictions.ilike;
+
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Person;
import org.jboss.snowdrop.samples.sportsclub.domain.repository.PersonRepository;
Modified: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/HibernateRepository.java
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/HibernateRepository.java 2009-11-27 07:33:10 UTC (rev 97070)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/HibernateRepository.java 2009-11-27 07:36:03 UTC (rev 97071)
@@ -2,6 +2,7 @@
import org.hibernate.Session;
import org.hibernate.SessionFactory;
+import org.hibernate.criterion.Projections;
import org.jboss.snowdrop.samples.sportsclub.domain.repository.Repository;
import java.io.Serializable;
@@ -10,7 +11,7 @@
/**
* @author <a href="mailto:mariusb at redhat.com">Marius Bogoevici</a>
*/
-public class HibernateRepository<T, I extends Serializable> implements Repository<T, I>
+public abstract class HibernateRepository<T, I extends Serializable> implements Repository<T, I>
{
protected SessionFactory sessionFactory;
@@ -51,4 +52,11 @@
return (Collection<T>)getCurrentSession().createCriteria(clazz).list();
}
+
+ public int countAll()
+ {
+ return (Integer)getCurrentSession().createCriteria(clazz).setProjection(Projections.count("id")).uniqueResult();
+ }
+
+
}
Modified: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/initializer/DatabaseInitializer.java
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/initializer/DatabaseInitializer.java 2009-11-27 07:33:10 UTC (rev 97070)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/stayfit/dao/hibernate/initializer/DatabaseInitializer.java 2009-11-27 07:36:03 UTC (rev 97071)
@@ -1,5 +1,6 @@
package org.jboss.snowdrop.samples.stayfit.dao.hibernate.initializer;
+import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.*;
@@ -42,6 +43,11 @@
{
Session session = sessionFactory.getCurrentSession();
+ Query query = session.createQuery("select count(m) from Membership m");
+
+ if (((Long) query.uniqueResult()) > 0 )
+ return null;
+
Membership silverMembership = createMembership("SILVER", "600.0");
save(session, silverMembership);
Membership goldMembership = createMembership("GOLD", "900.0");
@@ -60,8 +66,18 @@
person = createPerson("Havelock", "Vetinari", "1 Bloor", "Toronto", "Ontario", "Canada");
save(session, person);
+ save(session, createAccount(platinumMembership, BillingType.BIWEEKLY, person));
+
+ person = createPerson("Nobby", "Nobbs", "1 Dufferin", "Toronto", "Ontario", "Canada");
+ save(session, person);
save(session, createAccount(goldMembership, BillingType.BIWEEKLY, person));
+ person = createPerson("Carrot", "Ironfoundersson", "1 King", "Toronto", "Ontario", "Canada");
+ save(session, person);
+ save(session, createAccount(platinumMembership, BillingType.BIWEEKLY, person));
+
+
+
return null;
}
});
Modified: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-ejb/src/main/java/org/jboss/snowdrop/samples/sportsclub/ejb/SubscriptionService.java
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-ejb/src/main/java/org/jboss/snowdrop/samples/sportsclub/ejb/SubscriptionService.java 2009-11-27 07:33:10 UTC (rev 97070)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-ejb/src/main/java/org/jboss/snowdrop/samples/sportsclub/ejb/SubscriptionService.java 2009-11-27 07:36:03 UTC (rev 97071)
@@ -12,7 +12,9 @@
@Local
public interface SubscriptionService
{
- List<Account> findAccountsBySubscriberName(String name);
+ Account createAccountForPerson(Person person);
- Account createAccountForPerson(Person person);
+ int countAccountsBySubscriberName(String name);
+
+ List<Account> findAccountsBySubscriberName(String name, int minIndex, int maxIndex);
}
Modified: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-ejb/src/main/java/org/jboss/snowdrop/samples/sportsclub/ejb/SubscriptionServiceImpl.java
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-ejb/src/main/java/org/jboss/snowdrop/samples/sportsclub/ejb/SubscriptionServiceImpl.java 2009-11-27 07:33:10 UTC (rev 97070)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-ejb/src/main/java/org/jboss/snowdrop/samples/sportsclub/ejb/SubscriptionServiceImpl.java 2009-11-27 07:36:03 UTC (rev 97071)
@@ -10,6 +10,9 @@
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Person;
import org.jboss.snowdrop.samples.sportsclub.domain.repository.AccountRepository;
import org.jboss.snowdrop.samples.sportsclub.domain.repository.PersonRepository;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.AccountSearchCriteria;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.PersonSearchCriteria;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.Range;
import org.jboss.snowdrop.samples.sportsclub.ejb.SubscriptionService;
import org.jboss.spring.callback.SpringLifecycleInterceptor;
@@ -27,11 +30,25 @@
@Spring(bean = "personRepository", jndiName = "SpringDao")
private PersonRepository personRepository;
- public List<Account> findAccountsBySubscriberName(String name)
+ public List<Account> findAccountsBySubscriberName(String name, int minIndex, int maxIndex)
{
- return accountRepository.findByPersonName(name);
+ PersonSearchCriteria personSearchCriteria = new PersonSearchCriteria();
+ personSearchCriteria.setName(name);
+ AccountSearchCriteria accountSearchCriteria = new AccountSearchCriteria();
+ accountSearchCriteria.setPersonSearchCriteria(personSearchCriteria);
+ accountSearchCriteria.setRange(new Range(minIndex, maxIndex));
+ return accountRepository.findByCriteria(accountSearchCriteria);
}
+ public int countAccountsBySubscriberName(String name)
+ {
+ PersonSearchCriteria personSearchCriteria = new PersonSearchCriteria();
+ personSearchCriteria.setName(name);
+ AccountSearchCriteria accountSearchCriteria = new AccountSearchCriteria();
+ accountSearchCriteria.setPersonSearchCriteria(personSearchCriteria);
+ return accountRepository.countByCriteria(accountSearchCriteria);
+ }
+
public Account createAccountForPerson(Person person)
{
Account account = new Account();
Modified: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/AccountSearch.java
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/AccountSearch.java 2009-11-27 07:33:10 UTC (rev 97070)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/AccountSearch.java 2009-11-27 07:36:03 UTC (rev 97071)
@@ -1,16 +1,24 @@
package org.jboss.snowdrop.samples.sportsclub.jsf.beans;
+import org.ajax4jsf.model.DataVisitor;
+import org.ajax4jsf.model.ExtendedDataModel;
+import org.ajax4jsf.model.Range;
+import org.ajax4jsf.model.SequenceRange;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
import org.jboss.snowdrop.samples.sportsclub.ejb.SubscriptionService;
import javax.ejb.EJB;
+import javax.faces.context.FacesContext;
+import java.io.IOException;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* @author <a href="mailto:mariusb at redhat.com">Marius Bogoevici</a>
*/
-public class AccountSearch
+public class AccountSearch extends ExtendedDataModel
{
@EJB
private SubscriptionService subscriptionService;
@@ -19,6 +27,13 @@
private List<Account> accounts = Collections.<Account>emptyList();
+ private int currentPage;
+ private int currentRow;
+ private Long currentId;
+
+ private Map<Long, Account> accountsMap = new HashMap<Long, Account>();
+ private Integer rowCount;
+
public String getName()
{
return name;
@@ -31,15 +46,116 @@
public String searchAccounts()
{
- accounts = subscriptionService.findAccountsBySubscriberName(name);
+// List<Account> list = subscriptionService.findAccountsBySubscriberName(name);
+// accountsMap = new HashMap<Long, Account>();
+// for (Account row : list)
+// {
+// Long id = row.getId();
+// accountsMap.put(id, row);
+// }
+ rowCount = subscriptionService.countAccountsBySubscriberName(name);
return "success";
}
public List<Account> getAccounts()
{
-
return accounts;
+ }
+ public int getCurrentPage()
+ {
+ return currentPage;
}
-
+
+ public void setCurrentPage(int currentPage)
+ {
+ this.currentPage = currentPage;
+ }
+
+ @Override
+ public Object getRowKey()
+ {
+ return currentId;
+ }
+
+ @Override
+ public void setRowKey(Object key)
+ {
+ if (key != null)
+ currentId = (Long) key;
+ }
+
+ @Override
+ public boolean isRowAvailable()
+ {
+ if (currentId == null)
+ return false;
+ if (accountsMap.containsKey(currentId))
+ return true;
+ return false;
+ }
+
+ @Override
+ public int getRowCount()
+ {
+ if (rowCount == null)
+ {
+ rowCount = subscriptionService.countAccountsBySubscriberName(name);
+ }
+ else
+ {
+ return rowCount;
+ }
+ return rowCount;
+ }
+
+ public boolean isSearchInfoAvailable()
+ {
+ return name != null;
+ }
+
+ @Override
+ public Object getRowData()
+ {
+ return accountsMap.get(currentId);
+ }
+
+ @Override
+ public void walk(FacesContext context, DataVisitor visitor, Range range, Object argument) throws IOException
+ {
+ int firstResult = ((SequenceRange) range).getFirstRow();
+ int maxResults = ((SequenceRange) range).getRows();
+ List<Account> list = subscriptionService.findAccountsBySubscriberName(name, firstResult, maxResults);
+ accountsMap = new HashMap<Long, Account>();
+ for (Account row : list)
+ {
+ Long id = row.getId();
+ accountsMap.put(id, row);
+ visitor.process(context, id, argument);
+ }
+ }
+
+ @Override
+ public int getRowIndex()
+ {
+ return currentRow;
+ }
+
+ @Override
+ public void setRowIndex(int rowIndex)
+ {
+ this.currentRow = rowIndex;
+ }
+
+ @Override
+ public Object getWrappedData()
+ {
+ throw new UnsupportedOperationException("Not supported");
+ }
+
+ @Override
+ public void setWrappedData(Object data)
+ {
+ throw new UnsupportedOperationException("Not supported");
+ }
}
Modified: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/WEB-INF/faces-config.xml 2009-11-27 07:33:10 UTC (rev 97070)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/WEB-INF/faces-config.xml 2009-11-27 07:36:03 UTC (rev 97071)
@@ -8,7 +8,7 @@
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>
<managed-bean>
- <managed-bean-name>accountManager</managed-bean-name>
+ <managed-bean-name>accountSearch</managed-bean-name>
<managed-bean-class>org.jboss.snowdrop.samples.sportsclub.jsf.beans.AccountSearch</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
@@ -17,13 +17,13 @@
<managed-bean-class>org.jboss.snowdrop.samples.sportsclub.jsf.beans.AccountCreate</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
+ <!--<navigation-rule>-->
+ <!--<from-view-id>/searchForm.xhtml</from-view-id>-->
+ <!--<navigation-case>-->
+ <!--<to-view-id>/searchResult.xhtml</to-view-id>-->
+ <!--</navigation-case>-->
+ <!--</navigation-rule>-->
<navigation-rule>
- <from-view-id>/searchForm.xhtml</from-view-id>
- <navigation-case>
- <to-view-id>/searchResult.xhtml</to-view-id>
- </navigation-case>
- </navigation-rule>
- <navigation-rule>
<from-view-id>/createForm.xhtml</from-view-id>
<navigation-case>
<to-view-id>/createResult.xhtml</to-view-id>
Modified: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/WEB-INF/web.xml
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/WEB-INF/web.xml 2009-11-27 07:33:10 UTC (rev 97070)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/WEB-INF/web.xml 2009-11-27 07:36:03 UTC (rev 97071)
@@ -43,6 +43,19 @@
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
+
+ <filter>
+ <display-name>Ajax4jsf Filter</display-name>
+ <filter-name>ajax4jsf</filter-name>
+ <filter-class>org.ajax4jsf.Filter</filter-class>
+ </filter>
+ <filter-mapping>
+ <filter-name>ajax4jsf</filter-name>
+ <servlet-name>Faces Servlet</servlet-name>
+ <dispatcher>REQUEST</dispatcher>
+ <dispatcher>FORWARD</dispatcher>
+ <dispatcher>INCLUDE</dispatcher>
+ </filter-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
@@ -52,5 +65,13 @@
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
-
+ <servlet-mapping>
+ <servlet-name>Faces Servlet</servlet-name>
+ <url-pattern>*.xhtml</url-pattern>
+ </servlet-mapping>
+
+
+ <welcome-file-list>
+ <welcome-file>index.xhtml</welcome-file>
+ </welcome-file-list>
</web-app>
Modified: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/index.xhtml
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/index.xhtml 2009-11-27 07:33:10 UTC (rev 97070)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/index.xhtml 2009-11-27 07:36:03 UTC (rev 97071)
@@ -7,6 +7,7 @@
template="layout/template.xhtml">
<ui:define name="content">
<h:outputLink value="searchForm.jsf"><h:outputText value="Search"/></h:outputLink>
+ <rich:separator/>
<h:outputLink value="createForm.jsf"><h:outputText value="Create"/></h:outputLink>
</ui:define>
</ui:composition>
\ No newline at end of file
Modified: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/searchForm.xhtml
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/searchForm.xhtml 2009-11-27 07:33:10 UTC (rev 97070)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/searchForm.xhtml 2009-11-27 07:36:03 UTC (rev 97071)
@@ -6,13 +6,56 @@
xmlns:a4j="http://richfaces.org/a4j"
template="layout/template.xhtml">
<ui:define name="content">
+
+
<rich:panel>
-
- <h:form>
- <h:inputText value="#{accountManager.name}" label="Search name"/>
- <h:commandButton action="#{accountManager.searchAccounts}"/>
- </h:form>
+ <f:facet name="header">Search for an account</f:facet>
+ <h:form>
+ <h:inputText value="#{accountSearch.name}" label="Search name"/>
+ <a4j:commandButton value="Search" action="#{accountSearch.searchAccounts}"
+ reRender="searchResults"/>
+ </h:form>
+ </rich:panel>
- </rich:panel>
+
+ <a4j:outputPanel id="searchResults">
+ <h:form>
+ <rich:panel header="Search results" rendered="#{accountSearch.searchInfoAvailable}">
+
+ <rich:dataTable id="searchResultsTable" value="#{accountSearch}" var="account" rows="2">
+ <rich:column>
+ <f:facet name="header">
+ <h:outputText value="First Name"/>
+ </f:facet>
+ <h:outputText value="#{account.subscriber.name.firstName}"/>
+ </rich:column>
+ <rich:column>
+ <f:facet name="header">
+ <h:outputText value="Last Name"/>
+ </f:facet>
+ <h:outputText value="#{account.subscriber.name.lastName}"/>
+ </rich:column>
+ <rich:column>
+ <f:facet name="header">
+ <h:outputText value="City"/>
+ </f:facet>
+ <h:outputText value="#{account.subscriber.address.city}"/>
+ </rich:column>
+ <rich:column>
+ <f:facet name="header">
+ <h:outputText value="Membership"/>
+ </f:facet>
+ <h:outputText value="#{account.membership.code}"/>
+ </rich:column>
+ <f:facet name="footer">
+ <rich:datascroller id="sc2" for="searchResultsTable" maxPages="5"
+ page="#{accountSearch.currentPage}"/>
+ </f:facet>
+ </rich:dataTable>
+ </rich:panel>
+ </h:form>
+ </a4j:outputPanel>
+
+
</ui:define>
</ui:composition>
\ No newline at end of file
Modified: projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/searchResult.xhtml
===================================================================
--- projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/searchResult.xhtml 2009-11-27 07:33:10 UTC (rev 97070)
+++ projects/snowdrop/trunk/documentation/samples/sportsclub/sportsclub-subscriptions-web/src/main/webapp/searchResult.xhtml 2009-11-27 07:36:03 UTC (rev 97071)
@@ -6,7 +6,7 @@
xmlns:a4j="http://richfaces.org/a4j"
template="layout/template.xhtml">
<ui:define name="content">
- <h:dataTable value="#{accountManager.accounts}" var="account">
+ <h:dataTable value="#{accountSearch.accounts}" var="account">
<h:column>
#{account.subscriber.name.firstName}
</h:column>
More information about the jboss-cvs-commits
mailing list