View Javadoc
1   package fr.paris.lutece.plugins.extend.modules.rating.service.validator;
2   
3   import javax.inject.Inject;
4   import javax.inject.Named;
5   import javax.servlet.http.HttpServletRequest;
6   
7   import org.apache.commons.lang3.StringUtils;
8   
9   import fr.paris.lutece.plugins.extend.modules.rating.business.config.RatingExtenderConfig;
10  import fr.paris.lutece.plugins.extend.modules.rating.service.extender.RatingResourceExtender;
11  import fr.paris.lutece.plugins.extend.modules.rating.util.constants.RatingConstants;
12  import fr.paris.lutece.plugins.extend.modules.rating.util.constants.RatingUtils.RatingType;
13  import fr.paris.lutece.plugins.extend.service.extender.config.IResourceExtenderConfigService;
14  import fr.paris.lutece.portal.service.security.LuteceUser;
15  import fr.paris.lutece.portal.service.util.AppLogService;
16  import fr.paris.lutece.portal.service.util.AppPathService;
17  import fr.paris.lutece.portal.service.util.AppPropertiesService;
18  
19  public class RatingValidationService implements IRatingValidationService {
20  
21    private static final String PROPERTIES_ERROR_URL="rating.errorUrl";
22    @Inject
23    @Named( RatingConstants.BEAN_CONFIG_SERVICE )
24    private IResourceExtenderConfigService _configService;
25    
26    
27    
28  
29    @Override
30    public String validateRating(HttpServletRequest request, LuteceUser user, String strIdResource,
31  			String strResourceTypeKey, float fRatingValue) {
32  		
33  			
34          RatingExtenderConfig config = _configService.find( RatingResourceExtender.RESOURCE_EXTENDER,
35          		strIdResource, strResourceTypeKey );
36         if( config.getRatingType().equals( RatingType.SIMPLE_RATING_TYPE.getType( ) ))
37         {
38      	   if (fRatingValue != 1 ) 
39      	   {
40      		   
41      		   AppLogService.error("The value {} for type SIMPLE_RATING_TYPE of evaluation is not valid", fRatingValue, new RuntimeException(" SIMPLE_RATING_TYPE Exception "));
42      		   return getErrorUrl( request );
43      	   }
44      			   
45         }else if( config.getRatingType( ).equals( RatingType.STAR_RATING_TYPE.getType( )))
46         {
47      	   if (fRatingValue <= 0 || fRatingValue > 4 || fRatingValue % 0.5 != 0 ) 
48      	   {
49      		   AppLogService.error("The value {} for type STAR_RATING_TYPE of evaluation is not valid", fRatingValue, new RuntimeException(" STAR_RATING_TYPE Exception "));
50      		   return getErrorUrl( request );
51      	   }
52      	   
53         }else if( config.getRatingType( ).equals(RatingType.THUMB_RATING_TYPE.getType( )))
54         {
55      	   if (fRatingValue != 1 && fRatingValue != -1) 
56      	   {
57      		   AppLogService.error("The value {} for type THUMB_RATING_TYPE of evaluation is not valid", fRatingValue, new RuntimeException(" THUMB_RATING_TYPE Exception "));
58  
59      		   return getErrorUrl( request );
60      	   }
61         }
62          
63          return null;
64  	}
65    
66    private String getErrorUrl( HttpServletRequest request ) {
67  	  
68  	  String strDefaultErrorUrl = AppPathService.getBaseUrl( request ) + AppPropertiesService.getProperty( PROPERTIES_ERROR_URL );
69  	  if ( StringUtils.isEmpty( strDefaultErrorUrl ) )
70  	  {
71  	      // Just make sure it's not empty because empty means no errors !
72  	      strDefaultErrorUrl = "/";
73  	  }
74  	  
75  	  return strDefaultErrorUrl;
76    }
77  
78  }