[jboss-cvs] JBossAS SVN: r100972 - in projects/snowdrop/examples/trunk/sportsclub: sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria and 7 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Feb 15 10:45:13 EST 2010
Author: lvlcek at redhat.com
Date: 2010-02-15 10:45:12 -0500 (Mon, 15 Feb 2010)
New Revision: 100972
Added:
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/RangeCriteria.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/AbstractExtendedDataModelHelper.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/AccountFilter.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/EquipmentFilter.java
Removed:
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/AbstractRangeCriteria.java
Modified:
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/EquipmentRepository.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/AccountSearchCriteria.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/PersonSearchCriteria.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/ReservationSearchCriteria.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernateEquipmentRepository.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/JpaEquipmentRepository.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-spring/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/AccountService.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-spring/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/AccountServiceImpl.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-spring/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/EquipmentService.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-spring/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/EquipmentServiceImpl.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/ReservationCreate.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/ReservationSearch.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/WEB-INF/spring-beans.xml
projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/createReservation.xhtml
projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/layout/template.xhtml
projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/searchReservation.xhtml
Log:
JBQA-3031 WIP
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/EquipmentRepository.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/EquipmentRepository.java 2010-02-15 15:34:31 UTC (rev 100971)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/EquipmentRepository.java 2010-02-15 15:45:12 UTC (rev 100972)
@@ -2,9 +2,11 @@
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Equipment;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.EquipmentType;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.RangeCriteria;
import java.util.List;
import java.util.Date;
+import java.util.Collection;
/**
*
@@ -16,4 +18,5 @@
*/
public EquipmentType[] getEquipmentTypes();
+ Collection<Equipment> findByCriteria(RangeCriteria criteria);
}
Deleted: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/AbstractRangeCriteria.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/AbstractRangeCriteria.java 2010-02-15 15:34:31 UTC (rev 100971)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/AbstractRangeCriteria.java 2010-02-15 15:45:12 UTC (rev 100972)
@@ -1,18 +0,0 @@
-package org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria;
-
-/**
- */
-public abstract class AbstractRangeCriteria
-{
- private Range range;
-
- public Range getRange()
- {
- return range;
- }
-
- public void setRange(Range range)
- {
- this.range = range;
- }
-}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/AccountSearchCriteria.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/AccountSearchCriteria.java 2010-02-15 15:34:31 UTC (rev 100971)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/AccountSearchCriteria.java 2010-02-15 15:45:12 UTC (rev 100972)
@@ -3,7 +3,7 @@
/**
* @author <a href="mailto:mariusb at redhat.com">Marius Bogoevici</a>
*/
-public class AccountSearchCriteria extends AbstractRangeCriteria
+public class AccountSearchCriteria extends RangeCriteria
{
private PersonSearchCriteria personSearchCriteria;
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/PersonSearchCriteria.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/PersonSearchCriteria.java 2010-02-15 15:34:31 UTC (rev 100971)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/PersonSearchCriteria.java 2010-02-15 15:45:12 UTC (rev 100972)
@@ -3,7 +3,7 @@
/**
* @author <a href="mailto:mariusb at redhat.com">Marius Bogoevici</a>
*/
-public class PersonSearchCriteria extends AbstractRangeCriteria
+public class PersonSearchCriteria extends RangeCriteria
{
private String name;
Copied: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/RangeCriteria.java (from rev 100959, projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/AbstractRangeCriteria.java)
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/RangeCriteria.java (rev 0)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/RangeCriteria.java 2010-02-15 15:45:12 UTC (rev 100972)
@@ -0,0 +1,18 @@
+package org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria;
+
+/**
+ */
+public class RangeCriteria
+{
+ private Range range;
+
+ public Range getRange()
+ {
+ return range;
+ }
+
+ public void setRange(Range range)
+ {
+ this.range = range;
+ }
+}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/ReservationSearchCriteria.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/ReservationSearchCriteria.java 2010-02-15 15:34:31 UTC (rev 100971)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/criteria/ReservationSearchCriteria.java 2010-02-15 15:45:12 UTC (rev 100972)
@@ -7,7 +7,7 @@
/**
*/
-public class ReservationSearchCriteria extends AbstractRangeCriteria
+public class ReservationSearchCriteria extends RangeCriteria
{
private Date fromDate;
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernateEquipmentRepository.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernateEquipmentRepository.java 2010-02-15 15:34:31 UTC (rev 100971)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernateEquipmentRepository.java 2010-02-15 15:45:12 UTC (rev 100972)
@@ -1,11 +1,12 @@
package org.jboss.snowdrop.samples.sportsclub.dao.hibernate;
+import org.hibernate.Criteria;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Equipment;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.EquipmentType;
import org.jboss.snowdrop.samples.sportsclub.domain.repository.EquipmentRepository;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.RangeCriteria;
-import java.util.List;
-import java.util.Date;
+import java.util.Collection;
public class HibernateEquipmentRepository extends HibernateRepository<Equipment, Long> implements EquipmentRepository
{
@@ -19,4 +20,21 @@
{
return EquipmentType.values();
}
+
+ public Collection<Equipment> findByCriteria(RangeCriteria rangeCriteria)
+ {
+ Criteria criteria = convert(rangeCriteria);
+ return criteria.list();
+ }
+
+ private Criteria convert(RangeCriteria rangeCriteria)
+ {
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Equipment.class);
+ if (rangeCriteria.getRange() != null)
+ {
+ criteria.setFirstResult(rangeCriteria.getRange().getMinIndex());
+ criteria.setMaxResults(rangeCriteria.getRange().length());
+ }
+ return criteria;
+ }
}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/JpaEquipmentRepository.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/JpaEquipmentRepository.java 2010-02-15 15:34:31 UTC (rev 100971)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/JpaEquipmentRepository.java 2010-02-15 15:45:12 UTC (rev 100972)
@@ -3,8 +3,13 @@
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Equipment;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.EquipmentType;
import org.jboss.snowdrop.samples.sportsclub.domain.repository.EquipmentRepository;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.RangeCriteria;
import org.springframework.stereotype.Repository;
+import javax.persistence.Query;
+import java.util.Collection;
+import java.util.List;
+
/**
* @author Marius Bogoevici
*/
@@ -18,4 +23,16 @@
public EquipmentType[] getEquipmentTypes() {
return EquipmentType.values();
}
+
+ public Collection<Equipment> findByCriteria(RangeCriteria criteria)
+ {
+ Query q = entityManager.createQuery("FROM " + Equipment.class.getSimpleName());
+ List<Equipment> list = q.getResultList();
+ if (criteria.getRange() != null)
+ {
+ int max = (criteria.getRange().getMaxIndex() > list.size() ? list.size() : criteria.getRange().getMaxIndex());
+ list = list.subList(criteria.getRange().getMinIndex(), max);
+ }
+ return list;
+ }
}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-spring/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/AccountService.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-spring/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/AccountService.java 2010-02-15 15:34:31 UTC (rev 100971)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-spring/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/AccountService.java 2010-02-15 15:45:12 UTC (rev 100972)
@@ -3,13 +3,48 @@
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
import java.util.Collection;
+import java.util.List;
/**
* @author <a href="mailto:lvlcek at redhat.com">Lukas Vlcek</a>
*/
public interface AccountService
{
+ /**
+ * Get {#link Account} having specific id.
+ * @param id
+ * @return
+ */
Account getAccountById(long id);
+ /**
+ * Get all instances of {#link Account}s.
+ * @return
+ */
Collection<Account> getAllAccounts();
+
+ /**
+ * Filter {#link Account}s according to given parameters.
+ * @param min
+ * @param max
+ * @param nameFragment fragment of subscriber name (first, middle or last name)
+ * @return
+ */
+ List<Account> findAccounts(int min, int max, String nameFragment);
+
+ /**
+ * Count number of {#link Account}s according to given parameters.
+ * @param min
+ * @param max
+ * @param nameFragment fragment of subscriber name (first, middle or last name)
+ * @return
+ */
+ Long countAccounts(int min, int max, String nameFragment);
+
+ /**
+ * Count number of {#link Account}s according to given parameters.
+ * @param nameFragment fragment of subscriber name (first, middle or last name)
+ * @return
+ */
+ Long countAccounts(String nameFragment);
}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-spring/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/AccountServiceImpl.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-spring/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/AccountServiceImpl.java 2010-02-15 15:34:31 UTC (rev 100971)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-spring/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/AccountServiceImpl.java 2010-02-15 15:45:12 UTC (rev 100972)
@@ -1,10 +1,14 @@
package org.jboss.snowdrop.samples.sportsclub.service;
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.Range;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.PersonSearchCriteria;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
+import java.util.List;
/**
* @author <a href="mailto:lvlcek at redhat.com">Lukas Vlcek</a>
@@ -24,6 +28,33 @@
return accountRepository.findAll();
}
+ public List<Account> findAccounts(int min, int max, String nameFragment)
+ {
+ return accountRepository.findByCriteria(getCriteria(min, max, nameFragment));
+ }
+
+ public Long countAccounts(int min, int max, String nameFragment)
+ {
+ return accountRepository.countByCriteria(getCriteria(min, max, nameFragment));
+ }
+
+ private AccountSearchCriteria getCriteria(Integer min, Integer max, String nameFragment)
+ {
+ AccountSearchCriteria criteria = new AccountSearchCriteria();
+ if (min != null && max != null) criteria.setRange(new Range(min, max));
+ if (nameFragment != null && nameFragment.trim().length() > 0)
+ {
+ criteria.setPersonSearchCriteria(new PersonSearchCriteria());
+ criteria.getPersonSearchCriteria().setName(nameFragment);
+ }
+ return criteria;
+ }
+
+ public Long countAccounts(String nameFragment)
+ {
+ return accountRepository.countByCriteria(getCriteria(null, null, nameFragment));
+ }
+
public AccountRepository getAccountRepository()
{
return accountRepository;
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-spring/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/EquipmentService.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-spring/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/EquipmentService.java 2010-02-15 15:34:31 UTC (rev 100971)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-spring/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/EquipmentService.java 2010-02-15 15:45:12 UTC (rev 100972)
@@ -15,4 +15,8 @@
public Equipment findEquipmentById(long id);
public Collection<Equipment> getAllEquipments();
+
+ public Long countAllEquipments();
+
+ public Collection<Equipment> getAllEquipments(int firstResult, int maxResults);
}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-spring/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/EquipmentServiceImpl.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-spring/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/EquipmentServiceImpl.java 2010-02-15 15:34:31 UTC (rev 100971)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-spring/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/EquipmentServiceImpl.java 2010-02-15 15:45:12 UTC (rev 100972)
@@ -3,6 +3,8 @@
import org.jboss.snowdrop.samples.sportsclub.domain.entity.EquipmentType;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Equipment;
import org.jboss.snowdrop.samples.sportsclub.domain.repository.EquipmentRepository;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.RangeCriteria;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.Range;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
@@ -30,6 +32,18 @@
return equipmentRepository.findAll();
}
+ public Long countAllEquipments()
+ {
+ return equipmentRepository.countAll();
+ }
+
+ public Collection<Equipment> getAllEquipments(int firstResult, int maxResults)
+ {
+ RangeCriteria criteria = new RangeCriteria();
+ criteria.setRange(new Range(firstResult, maxResults));
+ return equipmentRepository.findByCriteria(criteria);
+ }
+
public EquipmentRepository getEquipmentRepository()
{
return equipmentRepository;
Added: projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/AbstractExtendedDataModelHelper.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/AbstractExtendedDataModelHelper.java (rev 0)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/AbstractExtendedDataModelHelper.java 2010-02-15 15:45:12 UTC (rev 100972)
@@ -0,0 +1,125 @@
+package org.jboss.snowdrop.samples.sportsclub.jsf.beans;
+
+import org.ajax4jsf.model.ExtendedDataModel;
+import org.ajax4jsf.model.Range;
+import org.ajax4jsf.model.DataVisitor;
+import org.richfaces.model.selection.Selection;
+
+import javax.faces.context.FacesContext;
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * Abstract helper class for JSF backing beans serving {#link ExtendedDataModel} implementations.
+ *
+ * @author <a href="mailto:lvlcek at redhat.com">Lukas Vlcek</a>
+ */
+public abstract class AbstractExtendedDataModelHelper extends ExtendedDataModel
+{
+ private int currentPage;
+ private int currentRow;
+ private Long currentId;
+ private Long currentRowCount;
+ private Selection selection;
+
+ abstract public Map<Long,? extends Object> getDomainObjectMap();
+
+ abstract public Long getCurrentRowCount();
+
+ public Long getCurrentId()
+ {
+ return currentId;
+ }
+
+ @Override
+ public Object getRowKey()
+ {
+ return currentId;
+ }
+
+ @Override
+ public void setRowKey(Object key)
+ {
+ if (key != null)
+ currentId = (Long) key;
+ }
+
+ @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");
+ }
+
+ @Override
+ public int getRowCount()
+ {
+ if (currentRowCount == null)
+ {
+ currentRowCount = getCurrentRowCount();
+ }
+ return currentRowCount.intValue();
+ }
+
+ /**
+ * Implementing // TODO
+ */
+ public void resetCurrentRowCount()
+ {
+ currentRowCount = null;
+ }
+
+ @Override
+ public Object getRowData()
+ {
+ return getDomainObjectMap().get(currentId);
+ }
+
+ @Override
+ public boolean isRowAvailable()
+ {
+ if (currentId == null)
+ return false;
+ if (getDomainObjectMap().containsKey(currentId))
+ return true;
+ return false;
+ }
+
+ public int getCurrentPage()
+ {
+ return currentPage;
+ }
+
+ public void setCurrentPage(int currentPage)
+ {
+ this.currentPage = currentPage;
+ }
+
+ public Selection getSelection()
+ {
+ return selection;
+ }
+
+ public void setSelection(Selection selection)
+ {
+ System.out.println("Setting selection " + selection);
+ this.selection = selection;
+ }
+}
Added: projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/AccountFilter.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/AccountFilter.java (rev 0)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/AccountFilter.java 2010-02-15 15:45:12 UTC (rev 100972)
@@ -0,0 +1,98 @@
+package org.jboss.snowdrop.samples.sportsclub.jsf.beans;
+
+import org.ajax4jsf.model.DataVisitor;
+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.service.AccountService;
+import org.richfaces.model.selection.Selection;
+
+import javax.faces.context.FacesContext;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:lvlcek at redhat.com">Lukas Vlcek</a>
+ */
+public class AccountFilter extends AbstractExtendedDataModelHelper
+{
+ private AccountService accountService;
+
+ private String subscriberNameFragment;
+ private Map<Long, Account> accountMap = new HashMap<Long, Account>();
+
+ public AccountFilter()
+ {
+ super();
+ }
+
+ public void walk(FacesContext facesContext, DataVisitor dataVisitor, Range range, Object argument) throws IOException
+ {
+ int firstResult = ((SequenceRange) range).getFirstRow();
+ int maxResults = ((SequenceRange) range).getRows();
+ List<Account> accounts = accountService.findAccounts(firstResult, maxResults, subscriberNameFragment);
+ accountMap = new HashMap<Long, Account>();
+ for (Account a : accounts)
+ {
+ Long id = a.getId();
+ accountMap.put(id, a);
+ dataVisitor.process(facesContext, id, argument);
+ }
+ }
+
+ public Map<Long, ? extends Object> getDomainObjectMap()
+ {
+ return accountMap;
+ }
+
+ private Long getSelectedKey()
+ {
+ if (getSelection() == null || getSelection().size() == 0)
+ return null;
+ else
+ return ((Long) getSelection().getKeys().next());
+ }
+
+ public Account getSelectedAccount()
+ {
+ if (getSelection() != null && getSelection().size() > 0)
+ return accountMap.get(getSelectedKey());
+ else
+ return null;
+ }
+
+ public Long getCurrentRowCount()
+ {
+ return accountService.countAccounts(subscriberNameFragment);
+ }
+
+ public String searchAccounts()
+ {
+ resetCurrentRowCount();
+ getRowCount();
+ setCurrentPage(1);
+ return "success";
+ }
+
+ public String getSubscriberNameFragment()
+ {
+ return subscriberNameFragment;
+ }
+
+ public void setSubscriberNameFragment(String subscriberNameFragment)
+ {
+ this.subscriberNameFragment = subscriberNameFragment;
+ }
+
+ public AccountService getAccountService()
+ {
+ return accountService;
+ }
+
+ public void setAccountService(AccountService accountService)
+ {
+ this.accountService = accountService;
+ }
+}
Added: projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/EquipmentFilter.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/EquipmentFilter.java (rev 0)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/EquipmentFilter.java 2010-02-15 15:45:12 UTC (rev 100972)
@@ -0,0 +1,76 @@
+package org.jboss.snowdrop.samples.sportsclub.jsf.beans;
+
+import org.ajax4jsf.model.DataVisitor;
+import org.ajax4jsf.model.Range;
+import org.ajax4jsf.model.SequenceRange;
+import org.jboss.snowdrop.samples.sportsclub.service.EquipmentService;
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Equipment;
+
+import javax.faces.context.FacesContext;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.List;
+import java.io.IOException;
+
+/**
+ * @author <a href="mailto:lvlcek at redhat.com">Lukas Vlcek</a>
+ */
+public class EquipmentFilter extends AbstractExtendedDataModelHelper
+{
+ private EquipmentService equipmentService;
+ private Map<Long, Equipment> equipmentMap = new HashMap<Long, Equipment>();
+
+ public EquipmentFilter()
+ {
+ super();
+ }
+
+ public Map<Long, ? extends Object> getDomainObjectMap()
+ {
+ return equipmentMap;
+ }
+
+ public Long getCurrentRowCount()
+ {
+ return equipmentService.countAllEquipments();
+ }
+
+ public void walk(FacesContext facesContext, DataVisitor dataVisitor, Range range, Object argument) throws IOException
+ {
+ int firstResult = ((SequenceRange) range).getFirstRow();
+ int maxResults = ((SequenceRange) range).getRows();
+ List<Equipment> equipments = (List<Equipment>) equipmentService.getAllEquipments(firstResult, maxResults);
+ for (Equipment e : equipments)
+ {
+ Long id = e.getId();
+ equipmentMap.put(id, e);
+ dataVisitor.process(facesContext, id, argument);
+ }
+ }
+
+ private Long getSelectedKey()
+ {
+ if (getSelection() == null || getSelection().size() == 0)
+ return null;
+ else
+ return ((Long) getSelection().getKeys().next());
+ }
+
+ public Equipment getSelectedEquipment()
+ {
+ if (getSelection() != null && getSelection().size() > 0)
+ return equipmentMap.get(getSelectedKey());
+ else
+ return null;
+ }
+
+ public EquipmentService getEquipmentService()
+ {
+ return equipmentService;
+ }
+
+ public void setEquipmentService(EquipmentService equipmentService)
+ {
+ this.equipmentService = equipmentService;
+ }
+}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/ReservationCreate.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/ReservationCreate.java 2010-02-15 15:34:31 UTC (rev 100971)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/ReservationCreate.java 2010-02-15 15:45:12 UTC (rev 100972)
@@ -1,7 +1,6 @@
package org.jboss.snowdrop.samples.sportsclub.jsf.beans;
import org.jboss.snowdrop.samples.sportsclub.service.ReservationService;
-import org.jboss.snowdrop.samples.sportsclub.service.EquipmentService;
import org.jboss.snowdrop.samples.sportsclub.service.AccountService;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Reservation;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
@@ -18,6 +17,9 @@
*/
public class ReservationCreate
{
+ private AccountFilter accountFilter;
+ private EquipmentFilter equipmentFilter;
+
private ReservationService reservationService;
private AccountService accountService;
@@ -64,6 +66,20 @@
return "success";
}
+ public void updateSelectedAccount()
+ {
+ System.out.println("Current account = " + reservation.getAccount());
+ Account account = accountFilter.getSelectedAccount();
+ System.out.println("setting account " + account.getId());
+ reservation.setAccount(account);
+ }
+
+ public void updateSelectedEquipment()
+ {
+ Equipment equipment = getEquipmentFilter().getSelectedEquipment();
+ reservation.setEquipment(equipment);
+ }
+
public ReservationService getReservationService()
{
return reservationService;
@@ -93,4 +109,24 @@
{
this.accountService = accountService;
}
+
+ public AccountFilter getAccountFilter()
+ {
+ return accountFilter;
+ }
+
+ public void setAccountFilter(AccountFilter accountFilter)
+ {
+ this.accountFilter = accountFilter;
+ }
+
+ public EquipmentFilter getEquipmentFilter()
+ {
+ return equipmentFilter;
+ }
+
+ public void setEquipmentFilter(EquipmentFilter equipmentFilter)
+ {
+ this.equipmentFilter = equipmentFilter;
+ }
}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/ReservationSearch.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/ReservationSearch.java 2010-02-15 15:34:31 UTC (rev 100971)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/ReservationSearch.java 2010-02-15 15:45:12 UTC (rev 100972)
@@ -1,7 +1,6 @@
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.Reservation;
@@ -18,25 +17,19 @@
/**
* @author <a href="mailto:lvlcek at redhat.com">Lukas Vlcek</a>
*/
-public class ReservationSearch extends ExtendedDataModel
+public class ReservationSearch extends AbstractExtendedDataModelHelper
{
private ReservationService reservationService;
-
private ReservationSearchOptions reservationSearchOptions;
- private int currentPage;
- private int currentRow;
- private Long currentId;
-
private Map<Long, Reservation> reservationsMap = new HashMap<Long, Reservation>();
- private Long rowCount;
private ReservationTableState tableState;
- private Selection selection;
private boolean editing;
- public ReservationSearch() {
+ public ReservationSearch()
+ {
super();
}
@@ -50,59 +43,22 @@
this.reservationService = reservationService;
}
- public int getCurrentPage()
- {
- return currentPage;
- }
-
- public void setCurrentPage(int currentPage)
- {
- this.currentPage = currentPage;
- }
-
@Override
- public Object getRowKey()
+ public Map<Long,? extends Object> getDomainObjectMap()
{
- return currentId;
+ return reservationsMap;
}
@Override
- public void setRowKey(Object key)
+ public Long getCurrentRowCount()
{
- if (key != null)
- currentId = (Long) key;
- }
-
- @Override
- public boolean isRowAvailable()
- {
- if (currentId == null)
- return false;
- if (reservationsMap.containsKey(currentId))
- return true;
- return false;
- }
-
- @Override
- public int getRowCount()
- {
- if (rowCount == null)
- {
- rowCount = reservationService.countReservationsForRange(
+ return reservationService.countReservationsForRange(
reservationSearchOptions.getFromDate(),
reservationSearchOptions.getToDate(),
reservationSearchOptions.getSelectedEquipmentTypes());
- }
- return rowCount.intValue();
}
@Override
- public Object getRowData()
- {
- return reservationsMap.get(currentId);
- }
-
- @Override
public void walk(FacesContext facesContext, DataVisitor dataVisitor, Range range, Object argument) throws IOException
{
int firstResult = ((SequenceRange) range).getFirstRow();
@@ -120,34 +76,11 @@
}
}
- @Override
- public int getRowIndex()
+ public String equipmentTypeCheckboxChanged()
{
- return currentRow;
+ return null; // TODO ?
}
- @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");
- }
-
- public String equipmentTypeCheckboxChanged() {
- return null;
- }
-
public ReservationTableState getTableState()
{
return tableState;
@@ -167,28 +100,18 @@
{
this.reservationSearchOptions = reservationSearchOptions;
}
-
- public void setSelection(Selection selection)
- {
- this.selection = selection;
- }
- public Selection getSelection()
- {
- return selection;
- }
-
private Long getSelectedKey()
{
- if (selection == null || selection.size() == 0)
+ if (getSelection() == null || getSelection().size() == 0)
return null;
else
- return ((Long) selection.getKeys().next());
+ return ((Long) getSelection().getKeys().next());
}
public Reservation getCurrentReservation()
{
- if (selection != null && selection.size() > 0)
+ if (getSelection() != null && getSelection().size() > 0)
return reservationsMap.get(getSelectedKey());
else
return null;
@@ -197,14 +120,13 @@
public String deleteReservation()
{
reservationService.delete(getCurrentReservation());
- selection = new SimpleSelection();
- rowCount = null;
+ setSelection(new SimpleSelection());
+ resetCurrentRowCount();
return "closed";
}
public void saveCurrent()
{
- System.out.println("save current " + getCurrentReservation());
reservationService.updateReservation(getCurrentReservation());
}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/WEB-INF/spring-beans.xml
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/WEB-INF/spring-beans.xml 2010-02-15 15:34:31 UTC (rev 100971)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/WEB-INF/spring-beans.xml 2010-02-15 15:45:12 UTC (rev 100972)
@@ -17,6 +17,8 @@
<bean id="reservationCreate" class="org.jboss.snowdrop.samples.sportsclub.jsf.beans.ReservationCreate" scope="request" init-method="init">
<property name="reservationService" ref="reservationService"/>
<property name="accountService" ref="accountService"/>
+ <property name="accountFilter" ref="accountFilter"/>
+ <property name="equipmentFilter" ref="equipmentFilter"/>
</bean>
@@ -33,7 +35,14 @@
<property name="equipmentService" ref="equipmentService"/>
</bean>
+ <bean id="accountFilter" class="org.jboss.snowdrop.samples.sportsclub.jsf.beans.AccountFilter" scope="session">
+ <property name="accountService" ref="accountService"/>
+ </bean>
+ <bean id="equipmentFilter" class="org.jboss.snowdrop.samples.sportsclub.jsf.beans.EquipmentFilter" scope="session">
+ <property name="equipmentService" ref="equipmentService"/>
+ </bean>
+
<!-- Application scoped service -->
<bean id="referenceData" class="org.jboss.snowdrop.samples.sportsclub.jsf.beans.ReferenceData" init-method="init">
<property name="equipmentService" ref="equipmentService"/>
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/createReservation.xhtml
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/createReservation.xhtml 2010-02-15 15:34:31 UTC (rev 100971)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/createReservation.xhtml 2010-02-15 15:45:12 UTC (rev 100972)
@@ -6,12 +6,124 @@
xmlns:a4j="http://richfaces.org/a4j"
template="layout/template.xhtml">
<ui:define name="content">
- <rich:panel>
+
+ <table>
+ <tr>
+ <td style="width:500px">
+
+ <rich:panel>
+ <f:facet name="header">Filter accounts</f:facet>
+ <h:form>
+ Type subscriber name:
+ <h:inputText value="#{accountFilter.subscriberNameFragment}" label="Search name"/>
+ <a4j:commandButton value="Search" action="#{accountFilter.searchAccounts}"
+ reRender="accountsTable"/>
+ </h:form>
+ </rich:panel>
+ <rich:panel>
+ <f:facet name="header">Select Account</f:facet>
+ <h:form>
+ <rich:extendedDataTable id="accountsTable" value="#{accountFilter}" var="account"
+ selectionMode="single"
+ selection="#{accountFilter.selection}"
+ enableContextMenu="true"
+ height="250px"
+ rows="5">
+ <a4j:support event="onselectionchange"
+ action="#{reservationCreate.updateSelectedAccount}"
+ reRender="reservationDetails"/>
+
+ <rich:column label="Id" width="7%">
+ <f:facet name="header">
+ <h:outputText value="Id"/>
+ </f:facet>
+ <h:outputText value="#{account.id}"/>
+ </rich:column>
+
+ <rich:column label="First Name">
+ <f:facet name="header">
+ <h:outputText value="First Name"/>
+ </f:facet>
+ <h:outputText value="#{account.subscriber.name.firstName}"/>
+ </rich:column>
+
+ <rich:column label="Middle Name">
+ <f:facet name="header">
+ <h:outputText value="Middle Name"/>
+ </f:facet>
+ <h:outputText value="#{account.subscriber.name.middleName}"/>
+ </rich:column>
+
+ <rich:column label="Last Name">
+ <f:facet name="header">
+ <h:outputText value="Last Name"/>
+ </f:facet>
+ <h:outputText value="#{account.subscriber.name.lastName}"/>
+ </rich:column>
+
+ <f:facet name="footer">
+ <rich:datascroller id="scrollerAccount" for="accountsTable" maxPages="5"
+ page="#{accountFilter.currentPage}"/>
+ </f:facet>
+ </rich:extendedDataTable>
+ </h:form>
+ </rich:panel>
+
+ </td>
+ <td style="width:400px;vertical-align:bottom;">
+ <rich:panel>
+ <f:facet name="header">Select Equipment</f:facet>
+ <h:form>
+ <rich:extendedDataTable id="equipmentsTable" value="#{equipmentFilter}" var="equipment"
+ selectionMode="single"
+ selection="#{equipmentFilter.selection}"
+ enableContextMenu="true"
+ height="250px"
+ rows="5">
+ <a4j:support event="onselectionchange"
+ action="#{reservationCreate.updateSelectedEquipment}"
+ reRender="reservationDetails"/>
+
+ <rich:column label="Id" width="10%">
+ <f:facet name="header">
+ <h:outputText value="Id"/>
+ </f:facet>
+ <h:outputText value="#{equipment.id}"/>
+ </rich:column>
+
+ <rich:column label="Name" width="35%">
+ <f:facet name="header">
+ <h:outputText value="Name"/>
+ </f:facet>
+ <h:outputText value="#{equipment.name}"/>
+ </rich:column>
+
+ <rich:column label="Description" width="55%">
+ <f:facet name="header">
+ <h:outputText value="Description"/>
+ </f:facet>
+ <h:outputText value="#{equipment.description}"/>
+ </rich:column>
+
+ <f:facet name="footer">
+ <rich:datascroller id="scrollerEquipment" for="equipmentsTable" maxPages="5"
+ page="#{equipmentFilter.currentPage}"/>
+ </f:facet>
+
+ </rich:extendedDataTable>
+ </h:form>
+ </rich:panel>
+ </td>
+ </tr>
+ </table>
+
+ <rich:panel id="reservationDetails">
+ <f:facet name="header">Reservation Details</f:facet>
<h:form>
<h:panelGrid columns="2">
<h:outputLabel value="Equipment"/>
- <h:panelGroup>
+ <!--h:panelGroup>
<rich:inplaceSelect id="equipment" defaultLabel="Click to enter"
value="#{reservationCreate.reservation.equipment}"
required="true"
@@ -19,10 +131,11 @@
<f:selectItems value="#{referenceData.allEquipments}"/>
</rich:inplaceSelect>
<h:message for="equipment" style="color:RED"/>
- </h:panelGroup>
+ </h:panelGroup-->
+ <h:outputText value="#{reservationCreate.reservation.equipment}" converter="#{equipmentConverter}"/>
<h:outputLabel value="Account"/>
- <h:panelGroup>
+ <!--h:panelGroup>
<rich:inplaceSelect id="account" defaultLabel="Click to enter"
value="#{reservationCreate.reservation.account}"
required="true"
@@ -30,7 +143,8 @@
<f:selectItems value="#{reservationCreate.allAccounts}"/>
</rich:inplaceSelect>
<h:message for="account" style="color:RED"/>
- </h:panelGroup>
+ </h:panelGroup-->
+ <h:outputText value="#{reservationCreate.reservation.account}" converter="#{accountConverter}"/>
<h:outputLabel value="From"/>
<h:panelGroup>
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/layout/template.xhtml
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/layout/template.xhtml 2010-02-15 15:34:31 UTC (rev 100971)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/layout/template.xhtml 2010-02-15 15:45:12 UTC (rev 100972)
@@ -22,7 +22,7 @@
<ui:include src="/includes/header.xhtml"/>
</div>
- <div style="height: 100%; width: 800px" id="content" class="clearfix" align="center">
+ <div style="height: 100%; width: 900px" id="content" class="clearfix" align="center">
<ui:insert name="content"/>
</div>
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/searchReservation.xhtml
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/searchReservation.xhtml 2010-02-15 15:34:31 UTC (rev 100971)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/searchReservation.xhtml 2010-02-15 15:45:12 UTC (rev 100972)
@@ -30,8 +30,7 @@
value="#{reservationSearch.reservationSearchOptions.selectedEquipmentTypes}"
layout="lineDirection" converter="#{equipmentTypeConverter}">
<f:selectItems value="#{referenceData.equipmentTypes}"/>
- <a4j:support event="onchange" action="#{reservationSearch.equipmentTypeCheckboxChanged}"
- reRender="searchResults"/>
+ <a4j:support event="onchange" reRender="searchResults"/>
</h:selectManyCheckbox>
</td>
</tr>
More information about the jboss-cvs-commits
mailing list