View Javadoc
1   package fr.paris.lutece.plugins.genericattributes.service.entrytype;
2   
3   import fr.paris.lutece.plugins.genericattributes.business.*;
4   import fr.paris.lutece.plugins.genericattributes.util.GenericAttributesUtils;
5   import fr.paris.lutece.portal.service.i18n.I18nService;
6   import fr.paris.lutece.portal.service.message.AdminMessage;
7   import fr.paris.lutece.portal.service.message.AdminMessageService;
8   import org.apache.commons.lang3.StringUtils;
9   
10  import javax.servlet.http.HttpServletRequest;
11  import java.time.LocalTime;
12  import java.util.List;
13  import java.util.Locale;
14  
15  public abstract class AbstractEntryTypeSlot extends EntryTypeService
16  {
17      // PARAMETERS
18      public static final String PARAMETER_SUFFIX_BEGIN = "_begin";
19      public static final String PARAMETER_SUFFIX_END   = "_end";
20  
21      String FIELD_BEGIN_HOUR = "begin_hour";
22      String FIELD_END_HOUR   = "end_hour";
23  
24      /**
25       * {@inheritDoc}
26       */
27      @Override
28      public String getRequestData( Entry entry, HttpServletRequest request, Locale locale )
29      {
30          initCommonRequestData( entry, request );
31          String strTitle = request.getParameter( PARAMETER_TITLE );
32          String strCode = request.getParameter( PARAMETER_ENTRY_CODE );
33          String strHelpMessage = ( request.getParameter( PARAMETER_HELP_MESSAGE ) != null ) ? request.getParameter( PARAMETER_HELP_MESSAGE ).trim( ) : null;
34          String strComment = request.getParameter( PARAMETER_COMMENT );
35          String strMandatory = request.getParameter( PARAMETER_MANDATORY );
36          String strOnlyDisplayInBack = request.getParameter( PARAMETER_ONLY_DISPLAY_IN_BACK );
37          String strCSSClass = request.getParameter( PARAMETER_CSS_CLASS );
38          String strIndexed = request.getParameter( PARAMETER_INDEXED );
39  
40          String strFieldError = StringUtils.EMPTY;
41  
42          if ( StringUtils.isBlank( strTitle ) )
43          {
44              strFieldError = ERROR_FIELD_TITLE;
45          }
46  
47          if ( StringUtils.isNotBlank( strFieldError ) )
48          {
49              Object[] tabRequiredFields = { I18nService.getLocalizedString( strFieldError, locale ) };
50  
51              return AdminMessageService.getMessageUrl( request, MESSAGE_MANDATORY_FIELD, tabRequiredFields, AdminMessage.TYPE_STOP );
52          }
53  
54          GenericAttributesUtils.createOrUpdateField( entry, FIELD_BEGIN_HOUR, null, FIELD_BEGIN_HOUR );
55          GenericAttributesUtils.createOrUpdateField( entry, FIELD_END_HOUR, null, FIELD_END_HOUR );
56  
57          entry.setTitle( strTitle );
58          entry.setCode( strCode );
59          entry.setHelpMessage( strHelpMessage );
60          entry.setComment( strComment );
61          entry.setCSSClass( strCSSClass );
62          entry.setIndexed( strIndexed != null );
63          entry.setMandatory( strMandatory != null );
64          entry.setOnlyDisplayInBack( strOnlyDisplayInBack != null );
65  
66          return null;
67      }
68  
69      /**
70       * {@inheritDoc}
71       */
72      @Override
73      public GenericAttributeError getResponseData( Entry entry, HttpServletRequest request, List<Response> listResponse, Locale locale )
74      {
75          String strBeginHour = request.getParameter( getAttributeName( entry, request ) + PARAMETER_SUFFIX_BEGIN );
76          String strEndHour = request.getParameter( getAttributeName( entry, request ) + PARAMETER_SUFFIX_END );
77  
78          if ( strBeginHour != null && strEndHour != null )
79          {
80              Field fieldBeginHour = entry.getFieldByCode( FIELD_BEGIN_HOUR );
81              Field fieldEndHour = entry.getFieldByCode( FIELD_END_HOUR );
82  
83              if ( fieldBeginHour == null )
84              {
85                  fieldBeginHour = GenericAttributesUtils.createOrUpdateField( entry, FIELD_BEGIN_HOUR, null, FIELD_BEGIN_HOUR );
86                  FieldHome.create( fieldBeginHour );
87              }
88  
89              if ( fieldEndHour == null )
90              {
91                  fieldEndHour = GenericAttributesUtils.createOrUpdateField( entry, FIELD_END_HOUR, null, FIELD_END_HOUR );
92                  FieldHome.create( fieldEndHour );
93              }
94  
95              listResponse.add( createResponse( strBeginHour, entry, fieldBeginHour, request ) );
96              listResponse.add( createResponse( strEndHour, entry, fieldEndHour, request ) );
97          }
98  
99          if ( entry.isMandatory( ) )
100         {
101             return new MandatoryError( entry, locale );
102         } else if ( StringUtils.isBlank( strBeginHour ) || StringUtils.isBlank( strEndHour ) )
103         {
104             GenericAttributeErrortributes/business/GenericAttributeError.html#GenericAttributeError">GenericAttributeError error = new GenericAttributeError( );
105             error.setMandatoryError( entry.isMandatory( ) );
106             error.setTitleQuestion( entry.getTitle( ) );
107             error.setErrorMessage( I18nService.getLocalizedString( MESSAGE_ERROR_SLOT, locale ) );
108             return error;
109         } else if ( LocalTime.parse( strEndHour ).isBefore( LocalTime.parse( strBeginHour ) ) )
110         {
111             GenericAttributeErrortributes/business/GenericAttributeError.html#GenericAttributeError">GenericAttributeError error = new GenericAttributeError( );
112             error.setMandatoryError( entry.isMandatory( ) );
113             error.setTitleQuestion( entry.getTitle( ) );
114             error.setErrorMessage( I18nService.getLocalizedString( MESSAGE_ERROR_IMPOSSIBLE_SLOT, locale ) );
115             return error;
116         } else
117         {
118             return super.getResponseData( entry, request, listResponse, locale );
119         }
120     }
121 
122     protected Response createResponse( String responseValue, Entry entry, Field field, HttpServletRequest request )
123     {
124         Response/genericattributes/business/Response.html#Response">Response response = new Response( );
125 
126         response.setEntry( entry );
127         response.setResponseValue( responseValue );
128         response.setField( field );
129         response.setToStringValueResponse( responseValue );
130         response.setIterationNumber( getResponseIterationValue( request ) );
131 
132         return response;
133     }
134 
135     /**
136      * Gives the attribute name
137      *
138      * @param entry
139      *         the entry
140      * @param request
141      *         the request
142      * @return the attribute name
143      */
144     protected String getAttributeName( Entry entry, HttpServletRequest request )
145     {
146         return PREFIX_ATTRIBUTE + entry.getIdEntry( );
147     }
148 }