Adding sort functionality on the reviewHotels view to exercise SWF-692 and SWF-700
This commit is contained in:
@@ -43,8 +43,9 @@ public class JpaBookingService implements BookingService {
|
||||
String pattern = getSearchPattern(criteria);
|
||||
return em.createQuery(
|
||||
"select h from Hotel h where lower(h.name) like " + pattern + " or lower(h.city) like " + pattern
|
||||
+ " or lower(h.zip) like " + pattern + " or lower(h.address) like " + pattern).setMaxResults(
|
||||
criteria.getPageSize()).setFirstResult(criteria.getPage() * criteria.getPageSize()).getResultList();
|
||||
+ " or lower(h.zip) like " + pattern + " or lower(h.address) like " + pattern + " order by h."
|
||||
+ criteria.getSortBy()).setMaxResults(criteria.getPageSize()).setFirstResult(
|
||||
criteria.getPage() * criteria.getPageSize()).getResultList();
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
|
||||
@@ -24,6 +24,16 @@ public class SearchCriteria implements Serializable {
|
||||
*/
|
||||
private int page;
|
||||
|
||||
private String sortBy = "name";
|
||||
|
||||
public String getSortBy() {
|
||||
return sortBy;
|
||||
}
|
||||
|
||||
public void setSortBy(String sortBy) {
|
||||
this.sortBy = sortBy;
|
||||
}
|
||||
|
||||
public String getSearchString() {
|
||||
return searchString;
|
||||
}
|
||||
@@ -58,6 +68,7 @@ public class SearchCriteria implements Serializable {
|
||||
|
||||
public void resetPage() {
|
||||
page = 0;
|
||||
sortBy = "name";
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
|
||||
@@ -22,6 +22,10 @@
|
||||
<on-render>
|
||||
<evaluate expression="bookingService.findHotels(searchCriteria)" result="viewScope.hotels" result-type="dataModel" />
|
||||
</on-render>
|
||||
<transition on="sort">
|
||||
<set name="searchCriteria.sortBy" value="requestParameters.sortBy"/>
|
||||
<render fragments="hotels:searchResultsFragment" />
|
||||
</transition>
|
||||
<transition on="previous">
|
||||
<evaluate expression="searchCriteria.previousPage()" />
|
||||
<render fragments="hotels:searchResultsFragment" />
|
||||
|
||||
@@ -19,7 +19,12 @@
|
||||
<h:outputText id="noHotelsText" value="No Hotels Found" rendered="#{hotels.rowCount == 0}"/>
|
||||
<h:dataTable id="hotels" styleClass="summary" value="#{hotels}" var="h" rendered="#{hotels.rowCount > 0}">
|
||||
<h:column>
|
||||
<f:facet name="header">Name</f:facet>
|
||||
<f:facet name="header">
|
||||
<!-- @TODO - Ajax won't work here until JSF RI fixes bug in UIData.invokeOnComponent - scheduled for 1.2_09 -->
|
||||
<sf:commandLink id="sortByNameLink" ajaxEnabled="false" action="sort" value="Name">
|
||||
<f:param name="sortBy" value="name" />
|
||||
</sf:commandLink>
|
||||
</f:facet>
|
||||
#{h.name}
|
||||
</h:column>
|
||||
<h:column>
|
||||
@@ -27,7 +32,12 @@
|
||||
#{h.address}
|
||||
</h:column>
|
||||
<h:column>
|
||||
<f:facet name="header">City, State</f:facet>
|
||||
<f:facet name="header">
|
||||
<!-- @TODO - Ajax won't work here until JSF RI fixes bug in UIData.invokeOnComponent - scheduled for 1.2_09 -->
|
||||
<sf:commandLink id="sortByCity" ajaxEnabled="false" action="sort" value="City, State" >
|
||||
<f:param name="sortBy" value="city" />
|
||||
</sf:commandLink>
|
||||
</f:facet>
|
||||
#{h.city}, #{h.state}, #{h.country}
|
||||
</h:column>
|
||||
<h:column>
|
||||
|
||||
Reference in New Issue
Block a user