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
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
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
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
137
138
139
140
141
142
143
144 protected String getAttributeName( Entry entry, HttpServletRequest request )
145 {
146 return PREFIX_ATTRIBUTE + entry.getIdEntry( );
147 }
148 }