[jboss-cvs] JBossAS SVN: r101327 - in projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main: webapp and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Feb 23 08:17:40 EST 2010


Author: lvlcek at redhat.com
Date: 2010-02-23 08:17:39 -0500 (Tue, 23 Feb 2010)
New Revision: 101327

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/webapp/WEB-INF/faces-config.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/searchReservation.xhtml
Log:
Adding custom validation into Reservation create logic

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-23 13:10:50 UTC (rev 101326)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/java/org/jboss/snowdrop/samples/sportsclub/jsf/beans/ReservationCreate.java	2010-02-23 13:17:39 UTC (rev 101327)
@@ -1,16 +1,14 @@
 package org.jboss.snowdrop.samples.sportsclub.jsf.beans;
 
-import org.jboss.snowdrop.samples.sportsclub.service.ReservationService;
-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;
 import org.jboss.snowdrop.samples.sportsclub.domain.entity.Equipment;
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Reservation;
+import org.jboss.snowdrop.samples.sportsclub.service.AccountService;
+import org.jboss.snowdrop.samples.sportsclub.service.ReservationService;
 
-import javax.faces.model.SelectItem;
-import java.util.Date;
-import java.util.Calendar;
-import java.util.Locale;
-import java.util.Collection;
+import javax.faces.application.FacesMessage;
+import javax.faces.context.FacesContext;
+import java.util.*;
 
 /**
  * @author <a href="mailto:lvlcek at redhat.com">Lukas Vlcek</a>
@@ -55,12 +53,78 @@
 
    public String create()
    {
+      Map<String, FacesMessage> errorMessages = validate(reservation);
+
+      if (!errorMessages.isEmpty())
+      {
+         FacesContext context = FacesContext.getCurrentInstance();
+         for (String key : errorMessages.keySet())
+         {
+            context.addMessage(key, errorMessages.get(key));
+         }
+         return "error";
+      }
+
       reservationService.create(reservation);
       createdReservationId = reservation.getId();
       init();
+      accountFilter.setSelection(null);
+      equipmentFilter.setSelection(null);
+
       return "success";
    }
 
+   private Map<String, FacesMessage> validate(Reservation reservation)
+   {
+
+      Map<String, FacesMessage> errors = new HashMap<String, FacesMessage>();
+
+      if (reservation.getAccount() == null ||
+            reservation.getEquipment() == null ||
+            reservation.getFrom() == null ||
+            reservation.getTo() == null)
+      {
+
+         if (reservation.getAccount() == null)
+         {
+            FacesMessage message = new FacesMessage();
+            message.setSeverity(FacesMessage.SEVERITY_ERROR);
+            message.setSummary("Account not selected.");
+            message.setDetail("Please select account!");
+            errors.put("AccountSelectForm", message);
+         }
+
+         if (reservation.getEquipment() == null)
+         {
+            FacesMessage message = new FacesMessage();
+            message.setSeverity(FacesMessage.SEVERITY_ERROR);
+            message.setSummary("Equipment not selected.");
+            message.setDetail("Please select equipment!");
+            errors.put("EquipmentSelectForm", message);
+         }
+
+         if (reservation.getFrom() == null)
+         {
+            FacesMessage message = new FacesMessage();
+            message.setSeverity(FacesMessage.SEVERITY_ERROR);
+            message.setSummary("Date not selected.");
+            message.setDetail("Please select date!");
+            errors.put("ReservationDetailForm:from", message);
+         }
+
+         if (reservation.getTo() == null)
+         {
+            FacesMessage message = new FacesMessage();
+            message.setSeverity(FacesMessage.SEVERITY_ERROR);
+            message.setSummary("Date not selected.");
+            message.setDetail("Please select date!");
+            errors.put("ReservationDetailForm:to", message);
+         }
+      }
+
+      return errors;
+   }
+
    public void updateSelectedAccount()
    {
       Account account = accountFilter.getSelectedAccount();
@@ -69,7 +133,7 @@
 
    public void updateSelectedEquipment()
    {
-      Equipment equipment = getEquipmentFilter().getSelectedEquipment();
+      Equipment equipment = equipmentFilter.getSelectedEquipment();
       reservation.setEquipment(equipment);
    }
 

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/WEB-INF/faces-config.xml	2010-02-23 13:10:50 UTC (rev 101326)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/WEB-INF/faces-config.xml	2010-02-23 13:17:39 UTC (rev 101327)
@@ -23,9 +23,13 @@
     <navigation-rule>
         <from-view-id>/createReservation.xhtml</from-view-id>
         <navigation-case>
-             <from-action>#{reservationCreate.create}</from-action>
+            <from-outcome>success</from-outcome>
             <to-view-id>/createResult.xhtml</to-view-id>
         </navigation-case>
+        <navigation-case>
+            <from-outcome>error</from-outcome>
+            <to-view-id>/createReservation.xhtml</to-view-id>
+        </navigation-case>
     </navigation-rule>
 
 </faces-config>
\ No newline at end of file

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-23 13:10:50 UTC (rev 101326)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/createReservation.xhtml	2010-02-23 13:17:39 UTC (rev 101327)
@@ -26,7 +26,7 @@
                     </rich:panel>
                     <rich:panel>
                         <f:facet name="header">Select Account</f:facet>
-                        <h:form>
+                        <h:form id="AccountSelectForm">
                             <rich:extendedDataTable id="accountsTable" value="#{accountFilter}" var="account"
                                                     selectionMode="single"
                                                     selection="#{accountFilter.selection}"
@@ -84,7 +84,7 @@
                 <td style="width:400px;vertical-align:bottom;">
                     <rich:panel>
                         <f:facet name="header">Select Equipment</f:facet>
-                        <h:form>
+                        <h:form id="EquipmentSelectForm">
                             <rich:extendedDataTable id="equipmentsTable" value="#{equipmentFilter}" var="equipment"
                                                     selectionMode="single"
                                                     selection="#{equipmentFilter.selection}"
@@ -130,18 +130,25 @@
 
         <rich:panel id="reservationDetails">
             <f:facet name="header">Reservation Details</f:facet>
-            <h:form>
+            <h:form id="ReservationDetailForm">
                 <h:panelGrid columns="2">
 
                     <h:outputLabel value="Equipment"/>
-                    <h:outputText rendered="#{reservationCreate.reservation.equipment != null}"
-                                  value="#{reservationCreate.reservation.equipment.name} (#{reservationCreate.reservation.equipment.description})"/>
-                    <h:outputText rendered="#{reservationCreate.reservation.equipment == null}" value="Not selected"/>
+                    <h:panelGroup>
+                        <h:outputText rendered="#{reservationCreate.reservation.equipment != null}"
+                                      value="#{reservationCreate.reservation.equipment.name} (#{reservationCreate.reservation.equipment.description})"/>
+                        <h:outputText rendered="#{reservationCreate.reservation.equipment == null}"
+                                      value="Not selected"/>
+                        <h:message for="EquipmentSelectForm" style="color:RED" showDetail="true" showSummary="true"/>
+                    </h:panelGroup>
 
                     <h:outputLabel value="Account"/>
-                    <h:outputText rendered="#{reservationCreate.reservation.account != null}"
-                                  value="#{reservationCreate.reservation.account.subscriber.name.firstName} #{reservationCreate.reservation.account.subscriber.name.lastName} (#{reservationCreate.reservation.account.subscriber.address.city}, #{reservationCreate.reservation.account.subscriber.address.country})"/>
-                    <h:outputText rendered="#{reservationCreate.reservation.account == null}" value="Not selected"/>
+                    <h:panelGroup>
+                        <h:outputText rendered="#{reservationCreate.reservation.account != null}"
+                                      value="#{reservationCreate.reservation.account.subscriber.name.firstName} #{reservationCreate.reservation.account.subscriber.name.lastName} (#{reservationCreate.reservation.account.subscriber.address.city}, #{reservationCreate.reservation.account.subscriber.address.country})"/>
+                        <h:outputText rendered="#{reservationCreate.reservation.account == null}" value="Not selected"/>
+                        <h:message for="AccountSelectForm" style="color:RED" showDetail="true" showSummary="true"/>
+                    </h:panelGroup>
 
                     <h:outputLabel value="From"/>
                     <h:panelGroup>
@@ -149,9 +156,8 @@
                                        value="#{reservationCreate.reservation.from}"
                                        datePattern="d/M/yy HH:mm"
                                        showApplyButton="true"
-                                       required="true"
                                        locale="#{reservationCreate.locale}"/>
-                        <h:message for="from" style="color:RED"/>
+                        <h:message for="from" style="color:RED" showDetail="true" showSummary="true"/>
                     </h:panelGroup>
 
                     <h:outputLabel value="To"/>
@@ -160,9 +166,8 @@
                                        value="#{reservationCreate.reservation.to}"
                                        datePattern="d/M/yy HH:mm"
                                        showApplyButton="true"
-                                       required="true"
                                        locale="#{reservationCreate.locale}"/>
-                        <h:message for="to" style="color:RED"/>
+                        <h:message for="to" style="color:RED" showDetail="true" showSummary="true"/>
                     </h:panelGroup>
 
                 </h:panelGrid>

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-23 13:10:50 UTC (rev 101326)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-reservations-web/src/main/webapp/searchReservation.xhtml	2010-02-23 13:17:39 UTC (rev 101327)
@@ -43,8 +43,6 @@
                         </td>
                     </tr>
                 </table>
-                <br/>
-                <!--<a4j:status id="commonstatus" startText="Retrieving data..." stopText=""/>-->
 
             </h:form>
         </rich:panel>




More information about the jboss-cvs-commits mailing list