View Javadoc

1   /*
2    * Copyright (C) 2007 Alf Mikula
3    * 
4    * This file is part of PromoteGo.
5    *
6    * PromoteGo is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU General Public License as published by
8    * the Free Software Foundation, either version 3 of the License, or
9    * (at your option) any later version.
10   *
11   * PromoteGo is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU General Public License for more details.
15   *
16   * You should have received a copy of the GNU General Public License
17   * along with PromoteGo.  If not, see <http://www.gnu.org/licenses/>.
18   */
19  package org.promotego.validators;
20  
21  import java.util.Date;
22  
23  import org.promotego.formbackingbeans.GameOfferBean;
24  import org.springframework.validation.Errors;
25  import org.springframework.validation.Validator;
26  
27  public class GameOfferValidator implements Validator
28  {
29      public boolean supports(@SuppressWarnings("unchecked") Class clazz)
30      {
31          return GameOfferBean.class.isAssignableFrom(clazz);
32      }
33  
34      public void validate(Object target, Errors errors)
35      {
36      	GameOfferBean gameOfferBean = (GameOfferBean)target;
37      	
38          // Reject for date/time in the past
39      	if (gameOfferBean.getStartTime().before(new Date()))
40      	{
41      		errors.rejectValue("startTime", "invalidStartTime", "Start time may not be in the past");
42      	}
43      	
44      	// Reject if game offer occurs outside of regular business hours
45      	if (!gameOfferBean.getLocation().getStoreHours().isOpen(gameOfferBean.getStartTime(),
46      			new Date(gameOfferBean.getStartTime().getTime() + gameOfferBean.getDuration()*1000)))
47      	{
48      		errors.rejectValue("startTime", "invalidGameTime",
49      				"Game must take place during the normal business hours of the location ("
50      				+ gameOfferBean.getLocation().getStoreHoursString() + ")");
51      	}
52      }
53  }