1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.genericattributes.service.entrytype;
35
36 import java.util.ArrayList;
37 import java.util.List;
38 import java.util.Locale;
39
40 import javax.servlet.http.HttpServletRequest;
41
42 import org.apache.commons.lang3.StringUtils;
43
44 import fr.paris.lutece.plugins.genericattributes.business.Entry;
45 import fr.paris.lutece.plugins.genericattributes.business.Field;
46 import fr.paris.lutece.plugins.genericattributes.business.GenericAttributeError;
47 import fr.paris.lutece.plugins.genericattributes.business.MandatoryError;
48 import fr.paris.lutece.plugins.genericattributes.business.Response;
49 import fr.paris.lutece.plugins.genericattributes.util.GenericAttributesUtils;
50 import fr.paris.lutece.portal.service.i18n.I18nService;
51 import fr.paris.lutece.portal.service.message.AdminMessage;
52 import fr.paris.lutece.portal.service.message.AdminMessageService;
53 import fr.paris.lutece.portal.service.util.AppException;
54 import fr.paris.lutece.util.sql.DAOUtil;
55
56
57
58
59 public abstract class AbstractEntryTypeSelectSQL extends EntryTypeService
60 {
61
62
63
64 @Override
65 public String getRequestData( Entry entry, HttpServletRequest request, Locale locale )
66 {
67 initCommonRequestData( entry, request );
68 String strTitle = request.getParameter( PARAMETER_TITLE );
69 String strCode = request.getParameter( PARAMETER_ENTRY_CODE );
70 String strHelpMessage = ( request.getParameter( PARAMETER_HELP_MESSAGE ) != null ) ? request.getParameter( PARAMETER_HELP_MESSAGE ).trim( ) : null;
71 String strComment = request.getParameter( PARAMETER_COMMENT );
72 String strMandatory = request.getParameter( PARAMETER_MANDATORY );
73 String strCSSClass = request.getParameter( PARAMETER_CSS_CLASS );
74
75 String strFieldError = StringUtils.EMPTY;
76
77 if ( StringUtils.isBlank( strTitle ) )
78 {
79 strFieldError = ERROR_FIELD_TITLE;
80 }
81
82 if ( StringUtils.isNotBlank( strFieldError ) )
83 {
84 Object [ ] tabRequiredFields = {
85 I18nService.getLocalizedString( strFieldError, locale )
86 };
87
88 return AdminMessageService.getMessageUrl( request, MESSAGE_MANDATORY_FIELD, tabRequiredFields, AdminMessage.TYPE_STOP );
89 }
90
91
92 entry.setCode( strCode );
93 entry.setTitle( strTitle );
94 entry.setHelpMessage( strHelpMessage );
95 entry.setComment( strComment );
96 entry.setCSSClass( strCSSClass );
97
98 entry.setMandatory( strMandatory != null );
99
100 try
101 {
102 getSqlQueryFields( entry );
103 }
104 catch( AppException ae )
105 {
106 String strErrorMsg = ae.getMessage( );
107
108 if ( ( strErrorMsg != null ) && strErrorMsg.contains( System.getProperty( "line.separator" ) ) )
109 {
110 strErrorMsg = strErrorMsg.substring( 0, strErrorMsg.indexOf( System.getProperty( "line.separator" ) ) );
111 }
112
113 Object [ ] tabErrorSQLMsg = {
114 strErrorMsg
115 };
116
117 return AdminMessageService.getMessageUrl( request, MESSAGE_INVALID_SQL_QUERY, tabErrorSQLMsg, AdminMessage.TYPE_STOP );
118 }
119
120 return null;
121 }
122
123
124
125
126 @Override
127 public GenericAttributeError getResponseData( Entry entry, HttpServletRequest request, List<Response> listResponse, Locale locale )
128 {
129 String strIdField = request.getParameter( PREFIX_ATTRIBUTE + entry.getIdEntry( ) );
130 int nIdField = -1;
131 Field field = null;
132 Response/genericattributes/business/Response.html#Response">Response response = new Response( );
133 response.setEntry( entry );
134
135 if ( StringUtils.isNotEmpty( strIdField ) && StringUtils.isNumeric( strIdField ) )
136 {
137 nIdField = Integer.parseInt( strIdField );
138 }
139
140 if ( nIdField != -1 )
141 {
142 field = GenericAttributesUtils.findFieldByIdInTheList( nIdField, getSqlQueryFields( entry ) );
143 }
144
145 if ( field != null )
146 {
147 response.setResponseValue( field.getValue( ) );
148 response.setField( field );
149 }
150
151 response.setIterationNumber( getResponseIterationValue( request ) );
152
153 listResponse.add( response );
154
155 if ( entry.isMandatory( ) && ( field == null || StringUtils.isBlank( field.getValue( ) ) ) )
156 {
157 return new MandatoryError( entry, locale );
158 }
159
160 return null;
161 }
162
163
164
165
166 @Override
167 public String getResponseValueForExport( Entry entry, HttpServletRequest request, Response response, Locale locale )
168 {
169 return response.getResponseValue( );
170 }
171
172
173
174
175 @Override
176 public String getResponseValueForRecap( Entry entry, HttpServletRequest request, Response response, Locale locale )
177 {
178 return ( response.getField( ) != null ) ? response.getField( ).getTitle( ) : StringUtils.EMPTY;
179 }
180
181
182
183
184
185
186
187
188 protected List<Field> getSqlQueryFields( Entry entry )
189 {
190 List<Field> list = new ArrayList<>( );
191 String strSQL = entry.getComment( );
192
193 try ( DAOUtil daoUtil = new DAOUtil( strSQL, GenericAttributesUtils.getPlugin( ) ) )
194 {
195 daoUtil.executeQuery( );
196
197 while ( daoUtil.next( ) )
198 {
199 Fieldlugins/genericattributes/business/Field.html#Field">Field field = new Field( );
200 field.setIdField( daoUtil.getInt( 1 ) );
201 field.setTitle( daoUtil.getString( 2 ) );
202 field.setValue( field.getTitle( ) );
203 list.add( field );
204 }
205
206 }
207
208 return list;
209 }
210 }